clamd socket-problem

Hallo Leute,
habe ein Problem mit clamav.
Auszug aus der /var/log/exim4/paniclog:
Code:
2008-02-28 02:07:24 1JUXDA-0007sn-3c malware acl condition: clamd: unable to read from socket (Connection timed out)
2008-02-28 09:08:01 1JUdm6-00008R-M2 malware acl condition: clamd: unable to read from socket (Connection timed out)
2008-02-28 09:08:09 1JUdmJ-00008S-Pc malware acl condition: clamd: unable to read from socket (Connection timed out)
Dieser Fehler kommt in unregelmäßigen Abständen. Ich kann keinen Zusammenhang mit eingehenden Mails feststellen.

/var/run/clamav/clamd.ctl und pid sind vorhanden, wobei die ctl leer ist (was müsste da drin sein?). In der /etc/exim4/vexim-acl-check-content.conf steht folgendes:
Code:
  # Reject virus infested messages.
  warn  message         = This message contains malware ($malware_name)
        condition       = ${if < {$message_size}{300k} {1}{0}}
        malware         = *
        log_message     = This message contains malware ($malware_name)

Und in der /etc/exim4/exim4.conf:
Code:
av_scanner = clamd:/var/run/clamav/clamd.ctl

Danke schonmal
MfG
Rudi
 
Hallo,

habe das selbe Problem. Habt ihr mittlerweile eine Lösung dafür gefunden?

lsof -s | grep /var/run/clamav/clamd.ctl

COMMAND___PID_____USER___FD___TYPE___DEVICE_____SIZE___NODE____ NAME
clamd_______2161___clamav__5u___unix____0xf783f880_________35687____/var/run/clamav/clamd.ctl

/var/run/clamav/clamd.ctl existiert zwar aber wie man sieht hat es keine Größe.

Gruß
Silvio
 
Last edited by a moderator:
Dass die Datei leer ist, ist kein Problem, da sie keine reguläre Datei ist, sondern eine Pipe, an die der Prozess sich bindet, um daraus Befehle eines anderen Programm-Partners entgegen zu nehmen (bei einem "ls -l" steht in der ersten Spalte daher auch kein "-" sondern ein "s" oder "p").

Eine Erklärung, warum das Programm nicht in einer annehmbaren Zeit reagiert hat, kann man allerdings nicht aus der Fehlermeldung ableiten. Eventuell könnte es aber hilfreich sein, sich mit "strace" an den laufenden Prozess zu connecten um zu sehen, worauf der wartet.
 
Danke hab mir mal strace installiert und auf den laufenden clamd Prozess angesetzt.

strace -p 10104 -t -T -f

Im folgenden mal ein Ausschnitt von strace zu dem Zeitpunkt als:
Code:
2008-12-15 15:18:53 1LCEHd-0002yj-3r malware acl condition: clamd: unable to connect to UNIX socket /var/run/clamav/clamd.ctl (Connection refused)

... in das paniclog geschrieben wurde:

Code:
15:18:50 brk(0x9fd6000)                 = 0x9fd6000 <0.000250>
15:18:51 read(10, "27\n24064:38741d2810d21d2f6271071"..., 4096) = 4096 <0.000310>
15:18:51 read(10, "54dc270962de5089409bc2df4:Dialer"..., 4096) = 4096 <0.000280>
15:18:52 read(10, "064\n237568:c89712390b07d9fccc988"..., 4096) = 4096 <0.000311>
15:18:54 read(10, "\n241664:0c92d796ba996f9b36505bff"..., 4096) = 4096 <0.000309>
15:18:54 read(10, "c7b57d797f8209c4bcefc618011af25:"..., 4096) = 4096 <0.000290>
15:18:55 read(10, "5dc821c233d1187414236b614674fd8:"..., 4096) = 4096 <0.000311>
15:18:56 read(10, "144:595673f2f7d1e46a43a7198c8209"..., 4096) = 4096 <0.000306>
15:18:57 read(10, "820a430ed3608:Trojan.Mybot-9336\n"..., 4096) = 4096 <0.000309>
15:18:58 read(10, "242:e4cebbb5994d19312052b02e4164"..., 4096) = 4096 <0.000296>
15:18:58 read(10, "er-21890\n54272:4745a43490cc4650d"..., 4096) = 4096 <0.000260>
15:18:59 read(10, "bot-9391\n48128:ca65a7f8a95f19c92"..., 4096) = 4096 <0.000326>
15:19:00 read(10, "ba5329:Trojan.Downloader-21921\n3"..., 4096) = 4096 <0.000312>
15:19:01 read(10, "d5d2c1:Trojan.PcClient-512\n11264"..., 4096) = 4096 <0.000308>
15:19:02 read(10, "9:Trojan.Agent-12201\n68096:6f615"..., 4096) = 4096 <0.198277>
15:19:05 read(10, "Trojan.PcClient-550\n75776:8a0df7"..., 4096) = 4096 <0.000347>
15:19:06 read(10, "8:570f3716a4017a5dd1fd595b7a8290"..., 4096) = 4096 <0.000336>
15:19:07 read(10, "an.Mybot-9508\n68096:a73542d18db2"..., 4096) = 4096 <0.000300>
15:19:07 read(10, "ybot-9522\n6144:31655bcd2edb96316"..., 4096) = 4096 <0.000281>
15:19:08 read(10, "6144:bc486a859d442ca70855fde68da"..., 4096) = 4096 <0.000333>
15:19:09 read(10, "c81a3a5fbdf9a593d15055eabf3eca:T"..., 4096) = 4096 <0.000308>
15:19:10 read(10, "bf614eaf7:Trojan.Delf-2856\n2560:"..., 4096) = 4096 <0.000294>
15:19:11 read(10, "02023c4e:Trojan.SdBot-7863\n20480"..., 4096) = 4096 <0.000305>
15:19:11 read(10, "b32832a:Trojan.Hupigon-6485\n2201"..., 4096) = 4096 <0.000288>
15:19:12 brk(0x9ff7000)                 = 0x9ff7000 <0.000260>

Tut mir leid, ich kann da rein garnichts erkennen ;-( außer dass der Eintrag

Code:
15:19:02 read(10, "9:Trojan.Agent-12201\n68096:6f615"..., 4096) = 4096 <0.198277>

bedeutend mehr Zeit benötigt hat als der Rest. Nur leider ist 15:19:02 nicht der Zeitpunkt des Timeout Fehlers.


Gruß

Silvio
 
Last edited by a moderator:
Ja, strace war wohl nicht so ergiebig, aber es war einen Versuch wert.

Google meint, dass es auch an falschen Berechtigungen bei einem Verzeichnis liegen könnte -- in diesem Fall finde ich die Fehlermeldung allerdings ziemlich daneben...
 
Hi,

also Rechteprobleme kann ich eigentlich ausschließen.

Habe mal alles probehalber auf "global" rw gesetzt:
Code:
server clamav # ls -al
insgesamt 12
drw-rw-rw-  2 clamav clamav 4096 2008-12-17 11:41 .
drwxr-xr-x 15 root   root   4096 2008-12-15 18:16 ..
-rw-rw-rw-  1 clamav clamav    5 2008-12-17 11:41 freshclam.pid

server clamav # /etc/init.d/clamav-daemon restart
Stopping ClamAV daemon: clamd.
Starting ClamAV daemon: clamd Running as user clamav (UID 103, GID 105)
LibClamAV debug: Setting /tmp as global temporary directory
.

server clamav # ls -al
insgesamt 12
drw-rw-rw-  2 clamav clamav 4096 2008-12-17 11:41 .
drwxr-xr-x 15 root   root   4096 2008-12-15 18:16 ..
-rw-rw-rw-  1 clamav clamav    5 2008-12-17 11:41 freshclam.pid

server clamav # /etc/init.d/exim4 restart
Stopping MTA for restart: exim4_listener.
Restarting MTA: exim4.
ALERT: exim paniclog /var/log/exim4/paniclog has non-zero size, mail system possibly broken

server clamav # ls -al
insgesamt 12
drw-rw-rw-  2 clamav clamav 4096 2008-12-17 11:41 .
drwxr-xr-x 15 root   root   4096 2008-12-15 18:16 ..
-rw-rw-rw-  1 clamav clamav    5 2008-12-17 11:41 freshclam.pid

server clamav #

Das pid File wird auch nicht angelegt... Die Google-Suche hab ich auch schon durchforstet aber leider ohne Erfolg obwohl das Problem recht häufig anzutreffen ist sind die Lösungen doch recht rar.
 
Last edited by a moderator:
So, habe mir gerade nochmal das Log von clamav (/var/log/clamav/clamd.log) angesehen und festgestellt, dass dem Anschein nach das Socket-File nun doch erstellt wird, nur halt gute 2 Stunden später. Was dazu führt, dass alles was in dieser Zeit eingeht vom exim "gebounced" wird.

Kann mir aber nicht vorstellen, dass das normal ist, dass das Einlesen der Datenbank 2 Stunden dauert.

Code:
Mon Dec 15 18:48:58 2008 -> +++ Started at Mon Dec 15 18:48:58 2008
Mon Dec 15 18:48:58 2008 -> clamd daemon 0.90.1 (OS: linux-gnu, ARCH: i386, CPU: i486)
Mon Dec 15 18:48:58 2008 -> Log file size limit disabled.
Mon Dec 15 18:48:58 2008 -> Reading databases from /var/lib/clamav
Mon Dec 15 21:59:37 2008 -> Loaded 567551 signatures.
Mon Dec 15 21:59:37 2008 -> Unix socket file /var/run/clamav/clamd.ctl
Mon Dec 15 21:59:37 2008 -> Setting connection queue length to 15
Mon Dec 15 21:59:37 2008 -> Archive: Archived file size limit set to 10485760 bytes.
Mon Dec 15 21:59:37 2008 -> Archive: Recursion level limit set to 8.
Mon Dec 15 21:59:37 2008 -> Archive: Files limit set to 1000.
Mon Dec 15 21:59:37 2008 -> Archive: Compression ratio limit set to 250.
Mon Dec 15 21:59:37 2008 -> Archive support enabled.
Mon Dec 15 21:59:37 2008 -> Algorithmic detection enabled.
Mon Dec 15 21:59:37 2008 -> Portable Executable support enabled.
Mon Dec 15 21:59:37 2008 -> ELF support enabled.
Mon Dec 15 21:59:37 2008 -> Mail files support enabled.
Mon Dec 15 21:59:37 2008 -> Mail: Recursion level limit set to 64.
Mon Dec 15 21:59:37 2008 -> OLE2 support enabled.
Mon Dec 15 21:59:37 2008 -> PDF support disabled.
Mon Dec 15 21:59:37 2008 -> HTML support enabled.
Mon Dec 15 21:59:37 2008 -> Self checking every 1800 seconds.

Gruß

Silvio
 
Hallo,

habe das Problem nun behoben. Nun läuft wieder alles wie es soll auch das Einlesen der Datenbank dauert nun nur noch einige Sekunden.

Für die "Nachwelt":
1.) Verzeichnis /var/run/clamav komplett gelöscht
2.) Verzeichnis /var/run/clamav wieder neu erstellt
3.) chown clamav:clamav /var/run/clamav
4.) umask 0000 /var/run/clamav
5.) aptitude update
6.) aptitude install clamav clamav-base clamav-daemon clamav-freshclam clamav-data
(aktuelle clamd-Version ist bei mir nun 0.94.2)
7.) killall -9 clamd; killall -9 freshclam
8.) /etc/init.d/clamav-daemon start
9.) /etc/init.d/clamav-freshclam start
10.) /etc/init.d/exim4 restart

Thats it!

Das Einlesen der Datenbank dauert nun ganze 11 Sekunden.

Code:
Wed Dec 17 15:40:04 2008 -> +++ Started at Wed Dec 17 15:40:04 2008
Wed Dec 17 15:40:04 2008 -> clamd daemon 0.94.2 (OS: linux-gnu, ARCH: i386, CPU: i486)
Wed Dec 17 15:40:04 2008 -> Log file size limit disabled.
Wed Dec 17 15:40:04 2008 -> Reading databases from /var/lib/clamav
Wed Dec 17 15:40:04 2008 -> Not loading PUA signatures.
Wed Dec 17 15:40:15 2008 -> Loaded 474616 signatures.
Wed Dec 17 15:40:16 2008 -> LOCAL: Unix socket file /var/run/clamav/clamd.ctl
Wed Dec 17 15:40:16 2008 -> LOCAL: Setting connection queue length to 15
Wed Dec 17 15:40:16 2008 -> Limits: Global size limit set to 104857600 bytes.
Wed Dec 17 15:40:16 2008 -> Limits: File size limit set to 26214400 bytes.
Wed Dec 17 15:40:16 2008 -> Limits: Recursion level limit set to 16.
Wed Dec 17 15:40:16 2008 -> Limits: Files limit set to 10000.
Wed Dec 17 15:40:16 2008 -> Archive support enabled.
Wed Dec 17 15:40:16 2008 -> Algorithmic detection enabled.
Wed Dec 17 15:40:16 2008 -> Portable Executable support enabled.
Wed Dec 17 15:40:16 2008 -> ELF support enabled.
Wed Dec 17 15:40:16 2008 -> Mail files support enabled.
Wed Dec 17 15:40:16 2008 -> OLE2 support enabled.
Wed Dec 17 15:40:16 2008 -> PDF support enabled.
Wed Dec 17 15:40:16 2008 -> HTML support enabled.
Wed Dec 17 15:40:16 2008 -> Self checking every 1800 seconds.
 
Last edited by a moderator:
Hey Huschi,

OK, gut zu wissen ;) dann habe ich ja instinktiv (fast) alles richtig gemacht. Hatte aber die volatile Releases schon in der source.list.

"top" war mir irgendwie nicht wichtig, ich hatte ja schon die Log-Hinweise.

Naja aber bei deinem HOWTO sind es wohl ein paar weniger Schritte ;-)

Danke für den Tipp.

Gruß
Silvio
 
Back
Top