Wie im vorherigen Post schon erwaehnt nehmen die “gehackten” Webspaces langsam ueberhand. Das groesste Problem hier ist, dass es wenig Loesungen gibt, Perlscipte in ihrer Laufzeit zu begrenzen. Was PHP schon ewig macht, ist sucgi immernoch Fremd.
Traumhaft waere es natuerlich, wenn alle Kunden immer schoen sichere CMS und/oder Forenscripte nehmen und auch immer artig updaten wuerden… A man can dream….
Dem ist leider nicht so, also setze ich da mal ausserhalb vom Apachen an. Wie waere es, einfach per cron alle x Minuten durch die Prozessliste zu gehen und zu schauen ob ein userscript laenger als x minuten laeuft? Nichts einfacheres als das. Soviel zur Theorie. Nach so einigem gecode kam ich dann zu diesem ersten script:
#!/bin/bash
# script zum ueberwachen von zu lange laufenden scripten
# killt alle scipte (ausser whitelist) nach $maxruntime minuten
#
hostname=$(hostname)
maxruntime=1
minuserid=10000
if [ "$1" != "" ] ; then debug=1 ; fi
for i in $(find /proc -maxdepth 1 -uid +$minuserid -type d -cmin +$maxruntime)
do
cmdline=$(cat $i/cmdline)
proftptest=$(fgrep proftpd $i/cmdline)
if [ "$proftptest" = "" ] ; then
uid=$(stat -c%U $i)
if [ "$debug" = "1" ] ; then
echo $cmdline von user $uid laeuft laenger als $maxruntime minute"(n)"
else
echo | mutt root -s "$cmdline von user $uid laeuft auf $h
ostname laenger als $maxruntime minute(n)"
fi
else
if [ "$debug" = "1" ] ; then
echo $proftptest laeuft
fi
fi
done
Klar, im ersten Versuch killt es noch nichts, sondern mailt erstmal die Verstoesse. Nach den ersten paar Minuten im cron fiel mir allerdings auf, dass viele Kunden cgi upload scripte haben und dergleichen. Hier muss ich also die “whitelist” noch ein wenig aufbohren, nach einem proftpd alleine zu checken reicht wohl nicht ![]()
Das endgueltige script werde ich wohl im Downloadbereich posten.