Schon seit Tagen kann man im Fernsehen den Sendungen zum 25jährigen Jubiläum des Mauerfalls kaum entgehen, heute war es dann besonders schlimm. – Noch bin ich nicht so drauf, dass es mich nervt, aber das Potenzial dafür hat es allemal.
Aber ich konnte mich ja auch einem „Alternativ-Programm“ zuwenden. Schon vor Monaten hatte ich bei der letzten sophie-Installation-Aktion festgestellt, dass diese Variante des Anbindens von Sophos an den Amavis etwas angestaubt ist.
Nun bietet Sophos selbst seit einer Weile ein Paket an, dass die Engine mittels des SSSP-Protokolls an den amavis anbindbar macht. Also machte ich mich heute Abend mal daran, die Sophos-Anbindung zu updaten.
cd ~/src tar xf /home/ftp/pub/virus/savdi-22-linux-32bit.tar cd savdi-install/ ./savdi_install.sh Sophos Anti-Virus SAVI daemon installation utility [Linux/Intel] Copyright (c) 2006-2011 Sophos Limited, Oxford, England mv /usr/local/savdi/savdid.conf /etc/sophos/ ; ln -s /etc/sophos/savdid.conf /usr/local/savdi/ id amavis uid=115(amavis) gid=118(amavis) Gruppen=118(amavis),8(mail) vi /etc/sophos/savdid.conf ... ls -l /usr/local/bin/ insgesamt 672 -rwxr-xr-x 1 root staff 638936 Nov 9 17:43 savdid* lrwxrwxrwx 1 root staff 26 Jul 14 15:03 savscan -> /opt/sophos-av/bin/savscan* -rwxr-xr-x 1 root root 43872 Jun 25 13:09 sophie* lrwxrwxrwx 1 root staff 26 Jun 25 12:26 sweep -> /opt/sophos-av/bin/savscan* vi /etc/init.d/savdid ... chmod 0755 /etc/init.d/savdid update-rc.d savdid defaults ... /etc/init.d/savdid status [FAIL] savdid is not running ... failed! /etc/init.d/savdid start [....] Starting savdid: savdidSAV Dynamic Interface 2.2.0 Copyright 2000-2013 Sophos Limited. All rights reserved . ok
Der Start des Dienstes hatte funktioniert, also testete ich erst noch ein paar Berechtigungen und Links (auf Anwesenheit ;) ) :
/etc/init.d/savdid status [ ok ] savdid is running. ls -dl /var/run/savdid/ drwxr-xr-x 2 sophosav root 60 Nov 09 21:10 /var/run/savdid// ls -l /var/run/savdid/ insgesamt 4 -rw-r--r-- 1 root root 4 Nov 09 21:10 savdid.pid pxg savdid root 4785 0.0 0.0 10688 860 ? SN 21:10 0:00 /usr/local/bin/savdid -c /usr/local/savdi/savdid.conf -f /var/run/savdid/savdid.pid -d amavis 4787 5.5 1.7 463932 147756 ? SNl 21:10 0:09 \_ /usr/local/bin/savdid -s -c /etc/sophos/savdid.conf - lsof -ni :4010 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME savdid 4358 amavis 4u IPv4 2452732466 0t0 TCP 127.0.0.1:4010 (LISTEN) ls -l /opt/sophos-av/lib/libssp.so.0 /usr/local/lib/libssp.so.0 #Links waren bei mir schon vorhanden! lrwxrwxrwx 1 root root 13 Nov 09 16:31 /opt/sophos-av/lib/libssp.so.0 -> libssp.so.0.0* lrwxrwxrwx 1 root staff 30 Nov 09 16:31 /usr/local/lib/libssp.so.0 -> /opt/sophos-av/lib/libssp.so.0* ls -ld /opt/sophos-av/lib/sav drwxr-xr-x 2 root root 12288 Nov 09 19:47 /opt/sophos-av/lib/sav/ grep "savdid" /var/log/syslog Nov 09 21:45:11 host savdid[1254]: Started Nov 09 21:45:11 host savdid[1254]: Child started 1256 Nov 09 21:45:20 host savdid[1256]: Error#012File operation error#012Error: 13 File: /var/tmp/savdi/log/141111.log Nov 09 21:45:20 host savdid[1256]: 00034407 Process starting PID: 1256 ls -l /var/tmp/savdi/log insgesamt 0 ls -dl /var/tmp/savdi/log drwxr-xr-x 2 root root 4096 Nov 09 20:55 /var/tmp/savdi/log/
Scheinbar klappte das loggen in das Verzeichnis „/var/tmp/savdi/log/“ nicht! Abgesehen davon, dass das sowieso ein ziemlich unüblicher Pfad ist, finde ich es persönlich besser, das Logging ins Syslog schreiben zu lassen. Alternativ könnte man sicher auch die Berechtigung ändern und dann auf jeden Fall auch das Ziel-Verzeichnis.
Testhalber habe ich das auch mal ausprobiert. Der savdid-Dienst legt dann tatsächlich unter der User-ID „amavis“ ein log-File an. Allerdings habe ich es auf meinem Server dann doch wieder auf „syslog“ zurück-geändert.
mkdir /var/log/savdi/ chown amavis /var/log/savdi/ chmod 01755 /var/log/savdi ls -ld /var/log/savdi drwxr-xr-t 2 amavis root 4096 Nov 09 22:10 /var/log/savdi/ /etc/init.d/savdid restart [ ok ] Stopping savdid: savdid. [....] Starting savdid: savdidSAV Dynamic Interface 2.2.0 Copyright 2000-2013 Sophos Limited. All rights reserved . ok ls -l /var/log/savdi #Benutzer passt insgesamt 4 -rw-r--r-- 1 amavis amavis 55 Nov 09 22:12 141111.log
Der Amavis hat in seiner Standart-Konfiguration (unter debian 7.7) noch keine Einträge um das SSSP-Prtokol zu nutzen. Um das einzurichten, habe ich eine Konfigurationsdatei entsprechend angepasst.
vi /etc/amavis/conf.d/50-user
...
########
@av_scanners = (
@av_scanners,
# ### http://www.sophos.com/
["Sophos-SSSP",
\&ask_daemon, ["{}", "sssp:[127.0.0.1]:4010"],
qr/^DONE OK\b/m, qr/^VIRUS\b/m, qr/^VIRUS\s*(\S*)/m ]
);
########
...
/etc/init.d/amavis restart ; tail -f /var/log/syslog
Stopping amavisd: amavisd-new.
Starting amavisd: amavisd-new.
....
Nov 09 22:11:23 host amavis[8718]: Using primary internal av scanner code for Sop hie
Nov 09 22:11:23 host amavis[8718]: Using primary internal av scanner code for ClamAV-clamd
Nov 09 22:11:23 host amavis[8718]: Using primary internal av scanner code for Sophos-SSSP
Nov 09 22:11:23 host amavis[8718]: Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan
...
Die erste (saubere) Test-E-Mail lief auch glatt durch. Erst die dritte Mail, an die ich das Eicar-Test-File gehängt hatte, wurde richtigerweise als virulös erkannt und geblockt. Das log-File sah dann auch gut aus und so konnte ich beruhigt zu Bett gehen.:
grep "savdid" /var/log/syslog ... Nov 09 22:27:24 host savdid[4356]: Started Nov 09 22:27:24 host savdid[4356]: Child started 4358 Nov 09 22:27:33 host savdid[4358]: 00034407 Process starting PID: 4358 Nov 09 22:35:02 host savdid[4358]: [54627F46] 00038400 New connection To: 127.0.0.1:4010 From 127.0.0.1:4010 Nov 09 22:35:02 host savdid[4358]: [54627F46] 00038402 New session Nov 09 22:35:02 host savdid[4358]: [54627F46] 00038403 Session ended Nov 09 22:35:02 host savdid[4358]: [54627F46] 00038401 Connection ended To: 127.0.0.1:4010 From 127.0.0.1:4010 Nov 09 22:35:32 host savdid[4358]: [54627F47] 00038400 New connection To: 127.0.0.1:4010 From 127.0.0.1:4010 Nov 09 22:35:32 host savdid[4358]: [54627F47] 00038402 New session Nov 09 22:35:32 host savdid[4358]: [54627F47] 00038403 Session ended Nov 09 22:35:32 host savdid[4358]: [54627F47] 00038401 Connection ended To: 127.0.0.1:4010 From 127.0.0.1:4010 ... Nov 09 22:36:20 host savdid[4358]: [54627FEF] 00038402 New session Nov 09 22:36:21 host savdid[4358]: [54627FEF/1] 00030405 Threat found Identity: "EICAR-AV-Test" "/var/lib/amavis/tmp/amavis-20141112T055023-15358-pwwN0i2d/parts/p004" Nov 09 22:36:21 host savdid[4358]: [54627FEF] 00038403 Session ended Nov 09 22:36:21 host savdid[4358]: [54627FEF] 00038401 Connection ended To: 127.0.0.1:4010 From 127.0.0.1:4010 ...
Die beiden Anleitungen, die ich im Internet dazu fand, waren zwar gute Hinweise zur Installation, allerdings scheinbar auch schon etwas veraltet. Manche der beschriebenen Probleme hatte ich bei meiner Installation nicht (mehr). Zum Beispiel bringt der Sophos in der Standard-Installation durchaus einen „Update-Dienst“ mit und die Viren-Engine ist in einer Installationsdatei „gebündelt“ (savdi-22-linux-32bit.tar), die selbstständig erkennt, ob es sich um ein 64bit-System handelt und dann auch die entsprechenden Verzeichnisse anlegen würde. Nichtsdestotrotz war die Anleitung von Peer eine gute Inspiration, der ich gut folgen konnte.
Die Softlinks aus der Sophos-Anleitung brauchte ich auch nicht zu erzeugen. Auf meinem System gab es die schon (s.o.) – Aber, weil das wohl nicht auf allen Systemen so ist, der Vollständigkeit halber auch dieser Link.
Unterm Strich hatte ich dann in meiner savdid.conf folgende Änderungen gemacht.:
cd /etc/sophos/ diff -Natu savdid.conf.org savdid.conf --- savdid.conf.org 2013-02-14 19:06:09.000000000 +0100 +++ savdid.conf 2014-11-09 20:22:28.000000000 +0100 @@ -7,12 +7,12 @@ # Only used when running in daemon mode # Default is /var/run/savdid.pid -pidfile: /var/tmp/savdi/new.pid +pidfile: /var/run/savdid/savdid.pid # User name and group for daemon to switch to for normal running # savdi must be running as root for this to be useful -#user: savdi -#group: savdi +user: amavis +group: amavis # No of worker threads to start up # Normally should be at least the maximum no of clients @@ -27,9 +27,9 @@ # These options can be specified under the savi configuration but that # is not advised. -#virusdatadir: /var/sav/vdbs +virusdatadir: /opt/sophos-av/lib/sav #virusdataname: vdl -#idedir: /var/sav/vdbs +idedir: /opt/sophos-av/lib/sav # What to do when the daemon must exit # Options are:- @@ -46,10 +46,10 @@ log { # Specify the logging mechanism {CONSOLE|FILE|SYSLOG} - type: FILE + type: SYSLOG # Where to write the log files (if FILE is selected) - logdir: /var/tmp/savdi/log/ + #logdir: /var/log/savdi/ # Specify the level of logging required # 0 = errors+threats @@ -61,177 +61,178 @@ } -# Define a IP channel for localhost - -channel { .... sehr viele geänderte Zeilen - } - - # Other services with different configurations can be defined - +##:65,235s%^%#% +## Define a IP channel for localhost +# wird hier nicht benötigt +#channel { +# +# # Send to the log requests received from clients +# # For debugging. Default: NO +# # logrequests: YES +# +# +# logrequests: YES +# commprotocol { +# type: IP .... sehr viele geänderte Zeilen +## } +#} # # Define an IP channel for SSSP @@ -244,7 +245,9 @@ # IP Address to listen on, default is 0.0.0.0 (any) - address: 0.0.0.0 + #address: 0.0.0.0 + ## bitte nicht weltweite Erreichbarkeit + address: 127.0.0.1 port: 4010 # Subnet of acceptable client IP addresses @@ -266,7 +269,7 @@ type: SSSP # Do we allow the client to use SCANFILE? - allowscanfile: DIR + allowscanfile: SUBDIR # Do we allow the client to use SCANDATA? allowscandata: YES |
Eine Sache war dann noch etwas komisch. Eigentlich hatte ich nämlich gedacht, dass es anschließend ausreichen würde, den sophie-Daemon zu stoppen und beim nächsten amavis-Start, würde der dann darauf reagieren und sophie nicht mehr ansprechen. Aber amavis hatte wieder die Zeile mit dem sophie-av-Scanner im Start-log. :evil: Ich musste dann erst die Zeilen in der Datei /etc/amavis/conf.d/15-av_scanners auskommentieren, bevor sophie ignoriert wurde. – Vielleicht war es aber auch langsam wirklich Zeit ins Bett zu gehen.
Aber wenn ich dann den sophie-Daemon auf meinem Server nicht mehr brauche, werde ich es sicher demnächst ganz deinstallieren.
vi /etc/amavis/conf.d/15-av_scanners
...
# ### http://www.clanfield.info/sophie/ (http://www.vanja.com/tools/sophie/)
#UP# ["Sop hie",
#UP# \&ask_daemon, ["{}/\n", "/var/run/sophie"],
#UP# qr/(?x)^ 0+ ( : | [\000\r\n]* $)/m, qr/(?x)^ 1 ( : | [\000\r\n]* $)/m,
#UP# qr/(?x)^ [-+]? \d+ : (.*?) [\000\r\n]* $/m ],
...
/etc/init.d/amavis restart ; tail -f /var/log/syslog
Stopping amavisd: amavisd-new.
Starting amavisd: amavisd-new.
...
Nov 09 23:27:21 h2162599 amavis[2742]: Found decoder for .exe at /usr/bin/unrar-free; /usr/bin/lha; /usr/bin/arj
Nov 09 23:32:21 h2162599 amavis[2742]: Using primary internal av scanner code for ClamAV-clamd
Nov 09 23:32:21 h2162599 amavis[2742]: Using primary internal av scanner code for Sophos-SSSP
Nov 09 23:32:21 h2162599 amavis[2742]: Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan
Nov 09 23:32:21 h2162599 amavis[2742]: Deleting db files snmp.db,nanny.db,__db.004,__db.003,__db.001,__db.002 in /var/lib/amavis/db
Nov 09 23:32:21 h2162599 amavis[2742]: Creating db in /var/lib/amavis/db/; BerkeleyDB 0.51, libdb 5.1
...
Start/Stop-Script /etc/init.d/savdid
Weil im aktuellen Archiv „savdi-23-linux-64bit.tar“ die Template-Datei /etc/init.d/savdid nicht mehr existiert, habe ich mal eine ältere hier in den Artikel gestellt.:
#! /bin/sh # ### BEGIN INIT INFO # Provides: savdid # Required-Start: $local_fs $remote_fs $syslog $network $time $sav-protect # Required-Stop: $local_fs $remote_fs $syslog $network $sav-protect # Should-Start: # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/Stop the Sophos savdi-daemon ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/local/bin/savdid NAME=savdid DESC=savdid CONFIG=/usr/local/savdi/savdid.conf PIDDIR=/var/run/savdid test -x $DAEMON || exit 0 if ! [ -x "/lib/lsb/init-functions" ]; then . /lib/lsb/init-functions else echo "E: /lib/lsb/init-functions not found, lsb-base (>= 3.0-6) needed" exit 1 fi #since /var/run can be wiped completly we create our run directory here if [ ! -d "$PIDDIR" ]; then mkdir "$PIDDIR" chown amavis "$PIDDIR" fi set -e case "$1" in start) log_daemon_msg "Starting $DESC" "$NAME" start_daemon $DAEMON -c $CONFIG -f $PIDDIR/savdid.pid -d log_end_msg $? ;; stop) log_daemon_msg "Stopping $DESC" "$NAME" start-stop-daemon --stop --quiet --oknodo --pidfile $PIDDIR/savdid.pid --retry 15 log_end_msg $? ;; reload|force-reload) log_daemon_msg "Reloading $DESC sav patterns" "$NAME" start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDDIR/savdid.pid log_end_msg $? ;; status) status_of_proc -p $PIDDIR/savdid.pid "$DAEMON" "$NAME" && exit 0 || exit $? ;; restart) $0 stop sleep 1 $0 start ;; *) log_failure_msg "Usage: $N {start|stop|restart|reload|force-reload}" exit 1 ;; esac exit 0 |
na, zu dem Mauerfall kann ich nur beipflichetn!!! Allein schon die Frage wo man wohl zum Zeitpunkt dessen gewesen ist und warum nervt….
Historie eben —
Hi, woher hast du denn die /etc/init.d/savdid
Oder ist die selbst geschrieben?
Korrektur:
Die Template-Datei /etc/init.d/savdid ist im aktuellen Archiv ’savdi-23-linux-64bit.tar‘ gar nicht mehr vertreten. :oops: Ich hatte zum Glück noch einen Start-/Stop-Script und den habe ich nun mal im Artikel eingestellt.