====== Apache ====== ===== Základní nastavení Apache ===== ==== Omezení publikovaných informací ==== Omezení publikovaných informací o verzích apache a použitých modulech. ServerTokens Prod ServerSignature Off Zamezení vypisování adresářů a procházení symlinků Options -Indexes -FollowSymLinks ==== Povolené prokoly a šifry ==== SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite EECDH+AES:EDH+AES:EDH+CAMELLIA:EECDH+3DES:EDH+3DES:RSA+AES:RSA+CAMELLIA:RSA+3DES SSLHonorCipherOrder on ==== mod_security ==== yum install mod_security mod_security_crs vim /etc/httpd/conf.d/mod_security.conf SecRuleEngine On Při problémech s lokalizací přidáme do problematických pravidel transformaci ''utf8toUnicode''. sed -i.bak s/,t:urlDecodeUni,/,t:utf8toUnicode,t:urlDecodeUni,/g soubor_s_problemovymi_pravidly.conf ==== welcome page ==== Vypnout nebo nahradit welcome page v ''/etc/httpd/conf.d/welcome.conf''. ==== Timeout ==== ''Timeout'' - doba, po kterou se čeká na: * TCP paket od klienta v případě, že je RX Buffer prázdný. * ACK od klienta v případě, že je TX Buffer plný. Nastavení se liší dle serveru. Problémy může způsobit příliš velká i malá hodnota. Při DoS útoku se doporučuje hodnotu snížit. (default 60) ==== KeepAlive ==== ''KeepAlive on'' Zapnutí tohoto rozšíření poskytne možnost HTTP sessions, které umožní poslat více požadavků přes jedno TCP spojení. Například u stránek s mnoha obrázky dojde k zrychlení až o 50%. Je vhodné zapnout u serverů, které nepřijímají požadavky z obrovského počtu IP adres najednou, jinak by mohlo dojít k problémům s pamětí nebo počtem soketů, což zjednoduší případnému DoS útočníkovi práci. ''KeepAliveTimeout 10'' Direktiva určuje počet vteřin, jak dlouho apache počká na další případný request před uzavřením nečinného TCP spojení. Pokud tuto hodnotu nastavíme příliš vysokou na zatíženém serveru, můžeme způsobit výkonnostní problémy, protože nám začne vznikat velké množství nečinných spojení. ''MaxKeepAliveRequests 100'' Tato direktiva omezuje maximální počet požadavků v rámci jednoho TCP spojení. ==== MPM prefork ==== Prefork je vhodný pro moduly, které nezvládají vlákna jako je například mod_php. V opačném případě se doporučuje MPM worker. Natažení modulu ''LoadModule mpm_prefork_module modules/mod_mpm_prefork.so'' Kontrola zkompilování do apache nebo natažení modulu httpd –l | grep prefork httpd -M | grep prefork mpm_prefork_module (shared) ''StartServers'' určuje počet podprocesů vytvořených při startu a čekajících na obsloužení případných nových požadavků. (defaultně 5) ''MinSpareServers'' určuje minimální počet idle podprocesů, čekajících na obsloužení případných nových požadavků. (defaultně 5) ''MaxSpareServers'' určuje maximální počet idle podprocesů, čekajících na obsloužení případných nových požadavků. (defaultně 10) ''ServerLimit'' použijeme jen v případě, že chceme nastavit MaxClients nad defaultní hodnotu 256. ''MaxClients'' určuje maximum paralelně obsluhovaných požadavků. Aby nedošlo k problémům s pamětí, je vhodné provést výpočet dle následujícího vzorce (celková paměť – kritické minimum pro ostatní služby) / rezidentní paměť pro jeden proces apache (RSS). (1048-256)/20=39.6 ~ 39 ''MaxConnectionsPerChild'' nastaví limit počtu spojení, které může obsloužit jeden podproces. Po dosažení tohoto limitu bude podproces ukončen. Limit lze odhadnou z následujícího vztahu počet requestu za den / počet podprocesu za den StartServers 2 MinSpareServers 3 MaxSpareServers 5 ServerLimit 35 MaxClients 35 MaxRequestsPerChild 1000