Malware finden auf Linux Servern
Author: Alexander Fox
Seit einigen Jahren werden immer wieder Webseiten mit Malware Verseucht, davon bleiben selbst Prominente CMS und Blogsysteme nicht verschont wie WordPress,Joomla, etc . Als Serveradmin beginnt nach bekannt werden immer wieder die Suche nach kontaminiertem Webseiten los. Oft sehen die Webseiten noch ganz Normal aus aber im Hintergrund werden Scripte verändert um Spam zu versenden oder andere Webserver an zu greifen. Seit längerem gibt es ein Programm Namens Malware Detect dass auf Servern die Web Verzeichnisse durch suchen kann und Schädlinge findet. Dies ist eine sehr gute Hilfe beim Suchen und finden der Bösen Webseiten, auf den eigenen servern. Ein User auf Howtoforge.com hat ein Shellscript geschrieben, mit dem es sehr einfach ist Systeme auf Maleware zu testen unter Debian. Ich denke ohne es getestet zu haben dass folgende Anleitung auch auf Ubuntu ‚Systemen funktioniert . Wir verwenden in dem Script auch den echo Befehl.
Für die Richtigkeit der Inhalte des Tutorials gebe ich keinerlei Garantie.
Folgenden Inhalt in eine Datei als Beispielsweise malewaredetect.sh
nano malewaredetect.sh
Script kopieren und einfügen
#!/bin/bash # debian-specific installation script by M. Cramer <m.cramer@pixcept.de> # howto taken from howtoforge written by "felan": # https://www.howtoforge.com/forums/showthread.php?p=284504 # CURDIR=`pwd` PROG=`readlink -f $0` echo "Installing prerequisites..." apt-get -y -q install inotify-tools sed echo "Fetching latest version of maldetect..." cd /tmp wget http://www.rfxn.com/downloads/maldetect-current.tar.gz tar -xzf maldetect-current.tar.gz cd maldetect-* echo "Modifying install script..." sed -r -i 's/^(.*cp.*/libinotifytools.so.0[ ]+/usr/lib/.*)$/#1/g' install.sh; echo "Modifying cron job..." sed -r -i '/maldet.*/var/www/vhosts/?/subdomains/?/httpdocs.*$/ a elif [ -d "/usr/local/ispconfig" || -d "/root/ispconfig" ]; then # ispconfig /usr/local/maldetect/maldet -b -r /var/www 2 >> /dev/null 2>&1' cron.daily; echo "Modifying maldet script..." sed -r -i 's/^$nice .*$/$nice -n $inotify_nice $inotify -r --fromfile $inotify_fpaths $exclude --timefmt "%d %b %H:%M:%S" --format "%w%f %e %T" -m -e create,move,modify >> $inotify_log 2>&1 &/g' files/maldet; sed -r -i '/lmdup() {.*$/ a ofile=$tmpdir/.lmdup_vercheck.$$ tmp_inspath=/usr/local/lmd_update rm -rf $tmp_inspath rm -f $ofile mkdir -p $tmp_inspath chmod 750 $tmp_inspath eout "{update} checking for available updates..." 1 $wget --referer="http://www.rfxn.com/LMD-$ver" -q -t5 -T5 "$lmdurl_ver" -O $ofile >> /dev/null 2>&1 if [ -s "$ofile" ]; then installed_ver=`echo $ver | tr -d "."` current_ver=`cat $ofile | tr -d "."` current_hver=`cat $ofile` if [ "$current_ver" -gt "$installed_ver" ]; then eout "{update} new version $current_hver found, updating..." 1 '"$PROG"' fi else echo "no update file found. try again later" exit fi rm -rf $tmp_inspath $ofile $ofile_has exit; # skip all the rest ' files/maldet; echo "Modifying config..." sed -r -i 's/^inotify=.*$/inotify=/usr/bin/inotifywait/g' files/internals.conf echo "Deleting unneccessary files..." rm -f files/inotify/inotifywait rm -f files/inotify/libinotifytools.so.0 ./install.sh rm -r /tmp/maldetect-* cd $CURDIR echo "Soll ein Echtzeit-Monitoring laufen bitte folgende Änderungen vornehmen:" echo "" echo "vi /usr/local/maldetect/maldetfilelist" echo "" echo "Einfügen (Verzeichnis/Verzeichnisse, die untersucht werden sollen)" echo "/var/www" echo "(bzw. das Basisverzeichnis für die Webseiten, kann auch /home/www oder ähnlich sein)" echo "" echo "vi /etc/rc.local" echo "" echo "Einfügen (Befehl startet den Monitor beim Boot des Servers)" echo "/usr/local/maldetect/maldet -m /usr/local/maldetect/maldetfilelist" echo "" echo "Zum starten des Monitors einmalig den Befehl ausführen" echo "/usr/local/maldetect/maldet -m /usr/local/maldetect/maldetfilelist"
Abspeichern und schließen
Ausführbar machen mit folgendem Befehl
chmod malweredetect.sh
Nun starten wir dass Script
sh ./malewaredetect.sh
Nun ist Malewaredetect Installiert und ein Täglicher Cronjob Prüft automatisiert dass Systeme jeden Tag, wir sollten noch folgende eisntellungen erledigen in der maledetect config
nano /usr/local/maldetect/conf.maldet
Hier solltet ihr zunächst die Alamierung ein schalten und eine E-mail Adresse für Warnmeldungen eingeben
email_alert=1
email_addr=“dein@email.local“
Nun abspeichern und wir können einen ersten Check machen von Hand im ISPConfig Standard Verzeichniss www
root@howtoforge:~# /usr/local/maldetect/maldet -b -a /var/www/
Ausgabe:
Linux Malware Detect v1.4.2
(C) 2002-2013, R-fx Networks <proj@r-fx.org>
(C) 2013, Ryan MacDonald <ryan@r-fx.org>
inotifywait (C) 2007, Rohan McGovern <rohan@mcgovern.id.au>
This program may be freely redistributed under the terms of the GNU GPL v2
maldet(18641): {scan} launching scan of /var/www/ to background, see /usr/local/maldetect/event_log for progress
Logfile findet sich hier
cat /usr/local/maldetect/event_log
Ausgabe des Logfiles
Jun 24 22:04:32 46038 maldet(18641): {scan} launching scan of /var/www/ to background, see /usr/local/maldetect/event_log for progress
Jun 24 22:04:32 46038 maldet(18641): {scan} signatures loaded: 11760 (9871 MD5 / 1889 HEX)
Jun 24 22:04:32 46038 maldet(18641): {scan} building file list for /var/www/, this might take awhile…
Jun 24 22:04:32 46038 maldet(18641): {scan} file list completed, found 43517 files…
Jun 24 22:04:32 46038 maldet(18641): {scan} found ClamAV clamscan binary, using as scanner engine…
Jun 24 22:04:32 46038 maldet(18641): {scan} scan of /var/www/ (43517 files) in progress…
Der Cronjob befindet sich hier
cat /etc/cron.d/maldet_pub
Ausgabe:
*/10 * * * * root /usr/local/maldetect/maldet –mkpubpaths >> /dev/null 2>&1