Zabezpečení Postfixu a Apache

2.11.2014

V předchozích příspěvcích jsem se zmiňoval o spíše ne zcela standarním nastavení Apache a Postfixu a nepopisoval jsem dosažení vyšší bezpečnosti z pohledu kryptografie (zejména po smršti posledních zranitelností SSL a podobně).

V tomto článku nebudu probírat kompletní hardening serveru - o tom se zmíním v řadě dalších, ale spíše zlepšení bezpečnosti zmíněných dvou služeb.

Uvedu pouze výpis nastavení, které můžeme přidat k dosavadnímu a odkaz na testy, kterými můžeme toto nastavení ověřit.

Nastavení Apache

Pro Apache nejprve upravíme soubor /etc/httpd/conf.d/ssl.conf:

SSLProtocol ALL -SSLv2 –SSLv3
SSLHonorCipherOrder On
SSLCipherSuite AES256+EECDH:AES256+EDH
SSLCompression Off

Toto nastavení nám zajistí zejména zákaz zranitelných protokolů a použití rozumných algoritmů a zákaz komprese.

Potom přidáme (pro jistotu) zákaz komprese SSL přenášených dat do /etc/sysconfig/httpd:

OPENSSL_NO_DEFAULT_ZLIB=1

A nakonec vytvoříme nový soubor pojmenovaný například /etc/httpd/conf.d/added.conf:

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
        RewriteRule .* - [F]
ServerSignature Off
ServerTokens Prod
TraceEnable Off
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
 
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
SSLStaplingResponseMaxAge 900
 
Header always set X-Frame-Options DENY
Header always set X-XSS-Protection: 1
Header always set X-Content-Type-Options nosniff
SetEnvIfNoCase Referer ^https://ahimsa\.lamed\.cz keep_cookies
RequestHeader unset Cookie env=!keep_cookies

Prvni část nám zakazuje HTTP metody TRACE, TRACK a OPTIONS a dále zajištění neinformování klientů o přesné verzi Apache.

Další nastavuje HSTS (HTTP Strict Transport Security), což je standard, který informuje klienty, že server striktně používá HTTPS (někteří toto nastavení považují za zbytečné, což samozřejmě u některých typů nasazení opravdu je). Zároveň je zde nastaveno přesměrování všech requestů z HTTP na HTTPS.

Předposlední část nastavuje OCSP stapling, což je rozšíření protokolu OCSP (Online Certificate Status Protocol - ověřování stavu certifikátu serveru), které zajišťuje to, že na platnost certifikátu se zeptá přímo server místo klienta (je to podpora pro lepší soukromí návštěvníků stránek), přičemž odpověď je podepsána přímo certifikační autoritou, aby ji někdo nemohl podvrhnout.

A nakonec poslední část řeší ochranu proti ClickJackingu, XSS (Cross-site scripting) a BREACH útoku.

Nastavení Postfixu

U postfixu nám stačí editovat pouze jeden soubor, a to /etc/postfix/main.cf:

tls_ssl_options = NO_COMPRESSION
smtp_tls_exclude_ciphers=aNULL:MD5:DES:EXPORT:eNULL:LOW:3DES:MD5:EXP:PSK:SRP:DSS
smtpd_tls_exclude_ciphers=aNULL:MD5:DES:EXPORT:eNULL:LOW:3DES:MD5:EXP:PSK:SRP:DSS
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_ciphers=high
smtp_tls_ciphers=high
smtpd_tls_protocols=!SSLv2,!SSLv3
smtp_tls_protocols=!SSLv2,!SSLv3
tls_high_cipherlist=ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5
ciphers=ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5
tls_preempt_cipherlist = no  
smtpd_tls_eecdh_grade = strong
tls_eecdh_strong_curve = prime256v1
tls_eecdh_ultra_curve = secp384r1
smtp_tls_note_starttls_offer = yes

Myslím, že zde - poněvadž všechny přidávané parametry pouze upravují chování TLS - není třeba nic dodávat. Opět jde zejména o zákaz nevhodných algoritmů, zákaz komprese a nastavení PFS (Perfect Forward Secrecy).

Po tom, co jsme upravili nastavení a restartovali služby (pomocí příkazu systemctl restart, jak už bylo hodněkrát zmiňováno), nezbývá, než vyzkoušet, zda celá akce k něčemu byla.

K tomu poslouží několik online testovacích toolů.

Ohodnocení kvality SSL/TLS pro HTTPS a oznámkování najdete na URL: https://www.ssllabs.com/ssltest/. Test chvíli trvá, ale potom Vám zobrazí celkovou známku a podrobný rozbor zjištěných informací. Výsledek může vypadat například následovně:

Následuje několik URL, na kterých si můžete prověřit SMTP server:

Bohužel ani jeden z webových testů neotestoval možné nedostatky ve vlastním TLS. K tomu doporučují nástroj, který můžete stáhnout na https://testssl.sh/. (Je vhodné v závislosti na Vaši openssl knihovně případně stáhnout a rozbalit staticky slinkovanou openssl knihovnu pro Vaší platformu a nastavit proměnnou OPENSSL tak, jak je uvedeno na stránce.) Test pomocí scriptu testssl.sh lze spustit s parametry:

./testssl.sh -t server.domena.cz:25 smtp

Část výstupu je zde:

Vidíme, že ani zde na tom nejsme špatně.

Více informací o testování SSL/TLS je na URL OWASP-u: https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers,_Insufficient_Transport_Layer_Protection_%28OTG-CRYPST-001%29

  • obsah/bezpecnost/linux_tls_apache_postfix.txt
  • Last modified: 2018/10/17 22:12
  • by profors