Apache2 anti ddos stuff

Категория: / DEV Блог / Сервер (FreeBSD)
mod_evasive

Порт:
/usr/ports/www/mod_evasive

Простой метод защиты от потенциальных ddos атак

<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600
 
#DOSEmailNotify admin@root.com
#DOSEmailNotify root
#DOSSystemCommand “cmd %s …’”
#DOSLogDir “/var/log/httpd/ddos”
</IfModule>


Улов по-умолчанию пишет в /var/log/messages

Jun  9 12:07:17 mod_evasive[59289]: Blacklisting address 62.63.88.19: possible DoS attack.
Jun  9 12:18:18 mod_evasive[61239]: Blacklisting address 85.91.114.2: possible DoS attack.
Jun  9 12:27:17 mod_evasive[63723]: Blacklisting address 80.249.153.52: possible DoS attack.
Jun  9 12:34:35 mod_evasive[65799]: Blacklisting address 213.247.230.130: possible DoS attack.
Jun  9 12:37:07 mod_evasive[66560]: Blacklisting address 85.233.132.253: possible DoS attack.



mod_security

Создадим файлы для счетчиков

#/tmp
touch ip.dir
touch ip.pag
chmod 666 ip.dir
chmod 666 ip.pag


Создадим правило для блокировки (превышение 5 хитов в секунду блочится с 403 ошибкой)

# /usr/local/etc/modsecurity] cat ./modsecurity_crs_11_dos_protection.conf
#
# Anti-Automation rule set for detecting Denial of Service Attacks.
#
 
 
SecRule REMOTE_ADDR "^127\.0\.0\.1$" "id:'400000',phase:1,nolog,allow"
SecRule REQUEST_BASENAME "!(\.avi$|\.bmp$|\.css$|\.doc$|\.flv$|\.gif$|\
                          \.htm$|\.html$|\.ico$|\.jpg$|\.js$|\.mp3$|\
                          \.mpeg$|\.pdf$|\.png$|\.pps$|\.ppt$|\.swf$|\
                          \.txt$|\.wmv$|\.xls$|\.xml$|\.zip$)"
\
"id:'400001',phase:1,nolog,pass,initcol:ip=%REMOTE_ADDR,setvar:ip.requests=+1,expirevar:ip.requests=1"
SecRule ip:requests "@eq 5" "id:'400002',phase:1,pass,nolog,setvar:ip.block=1,expirevar:ip.block=5,setvar:ip.blocks=+1,expirevar:ip.blocks=3600"
SecRule ip:blocks "@ge 5" "id:'400003',phase:1,deny,log,msg:'DDOS protection',logdata:'req/sec: %{ip.requests}, blocks: %{ip.blocks}',status:403"
SecRule ip:block "@eq 1" "id:'400004',phase:1,deny,nolog,status:403"
 
SecMarker END_DOS_PROTECTION_CHECKS


Правила борьбы с ддос атаками позаимствованы с firstvds вики.