#!/bin/sh # Missä Apachen loki luuraa cd /var/log/httpd # Varmistetaan tiedostojen olemassaolo touch nimda.txt touch codered.txt # Tapetaan vanha ajossa oleva versio kill `ps -C "tail -n100" h | cut -f2 -d" "` # Muuta -n suuremmaksi, jos on tarvetta. tail -n10000 --follow=name access_log | \ awk 'BEGIN{nimdapois=1;coderedpois=1} # Pyydystetään nimda-mato /scripts\/root.exe/ { vanha=0 ; rivinro=0 while(getline rivi < "nimda.txt"){ if($1 ~ rivi) vanha=1 rivinro++ if (rivinro==nimdapois) pois = rivi } if(vanha==0){ # Matopesän nimi talteen print $1 >> "nimda.txt" system("/sbin/ipchains -A input -j DENY -i eth0 -p tcp -s " $1 " --destination-port 80") # Muuta 1000 sopivaksi sääntöjen määrän ylärajaksi if (rivinro > 1000) { # Poistetaan vanhin säätö system("/sbin/ipchains -D input -j DENY -i eth0 -p tcp -s " pois " --destination-port 80") nimdapois++ } } close("nimda.txt") } # Pyydystetään Code Red -mato /default.ida/ { vanha=0 ; rivinro=0 while(getline rivi < "codered.txt"){ if($1 ~ rivi) vanha=1 rivinro++ if (rivinro==coderedpois) pois = rivi } if(vanha==0){ # Matopesän nimi talteen print $1 >> "codered.txt" system("/sbin/ipchains -A input -j DENY -i eth0 -p tcp -s " $1 " --destination-port 80") # Muuta 1000 sopivaksi sääntöjen määrän ylärajaksi if (rivinro > 1000) { system("/sbin/ipchains -D input -j DENY -i eth0 -p tcp -s " pois " --destination-port 80") coderedpois++ } } close("codered.txt") }' - &