User Tools

Site Tools


it:site:servery:apache

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ů

<Directory "/var/www/html">
	Options -Indexes -FollowSymLinks
</Directory>

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

<IfModule prefork.c>
   StartServers 2
   MinSpareServers 3
   MaxSpareServers 5
   ServerLimit 35
   MaxClients 35
   MaxRequestsPerChild 1000
</IfModule>
it/site/servery/apache.txt · Last modified: 2019/08/02 11:18 (external edit)