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ů
<Directory "/var/www/html"> Options -Indexes -FollowSymLinks </Directory>
SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite EECDH+AES:EDH+AES:EDH+CAMELLIA:EECDH+3DES:EDH+3DES:RSA+AES:RSA+CAMELLIA:RSA+3DES SSLHonorCipherOrder on
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
Vypnout nebo nahradit welcome page v /etc/httpd/conf.d/welcome.conf
.
Timeout
- doba, po kterou se čeká na:
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 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í.
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
<IfModule prefork.c> StartServers 2 MinSpareServers 3 MaxSpareServers 5 ServerLimit 35 MaxClients 35 MaxRequestsPerChild 1000 </IfModule>