clamsmtp – postfix Konfiguration mit dpkg-reconfigure

ClamAV und Postfix mit dpkg-reconfigure in Debian 11

Mit dem Befehl dpkg-reconfigure werden Pakete neu konfiguriert, die debconf zur Verwaltung der Konfigurationsdateien nutzt. Dies mittlerweile für den Großteil der Pakete möglich ist. Wie für Postfix und ClamAV wird dpkg-reconfigure in einer grafischen Oberfläche basierend auf ASCII-Zeichen ausgeführt. Hierbei kann zwischen verschiedenen interaktiven und vollautomatischen Modi gewählt werden.

dpkg-reconfigure clamav-daemon

Der ClamAV Daemon (clamav-daemon) kann automatisch oder manuell konfiguriert werden. In der Konfigurationsdatei /etc/clamav/clamd.conf.

$ dpkg-reconfigure clamav-daemon
dpkg-reconfigure - Der ClamAV Daemon (clamav-daemon) kann automatisch oder manuell konfiguriert werden.

clamsmtp

Für ClamAV – ClamSMTP (clamsmtp) lässt lediglich festhalten wie mit quarantained Inhalt im Postfix spool directory umgegangen werden soll. In der Konfigurationsdatei /etc/clamsmtpd.conf.

$ dpkg-reconfigure clamsmtp
clamsmtp Konfiguration mit dpkg-reconfigure

clamav-freshclam

Bei freshclam (clamav-freshclam) kann die Update methode definiert werden, Konfigurationsdatei /etc/clamav/freshclam.conf.

$ dpkg-reconfigure clamav-freshclam
dpkg-reconfigure clamav-freshclam

dpkg-reconfigure postfix

Ebenfalls kann Postfix konfiguriert werden. In der Konfigurationsdatei /etc/postfix/main.cf

$ dpkg-reconfigure postfix
dpkg-reconfigure postfix

ClamAV ClamSMTP Postfix Status

Um den Betriebszustand der Daemons abzufragen, wird systemctl status an systemd gesendet.

$ systemctl status clamav-daemon clamav-freshclam clamsmtp postfix

Beschreibung

dpkg-reconfigure konfiguriert Pakete neu, nachdem sie bereits installiert wurden. Wie beispielsweise Postfix und ClamAV. Übergebe die Namen eines oder mehrerer Pakete, die neu konfiguriert werden sollen. Es werden Konfigurationsfragen gestellt, ähnlich wie bei der Erstinstallation des Pakets.

Wenn nur die aktuelle Konfiguration eines Pakets angesehen werden soll, kann stattdessen „debconf-show“ verwendet werden.

dpkg-reconfigure ist ein leistungsstarkes Befehlszeilentool, mit dem ein bereits installiertes Paket neu konfiguriert werden kann. Es ist eines der mehreren Tools, die unter dpkg angeboten werden – dem zentralen Paketverwaltungssystem unter Debian/Ubuntu Linux. Es funktioniert in Verbindung mit Debconf, dem Konfigurationssystem für Debian-Pakete. Debconf registriert die Konfiguration aller installierten Pakete auf einem System.

Dieses Tool wird tatsächlich verwendet, um eine gesamte Ubuntu- oder Debian-Systeminstallation neu zu konfigurieren. Es werden einfach die Namen der neu zu konfigurierenden Pakete übergeben, dabei werden eine Reihe von Konfigurationsfragen gestellt, genau wie bei der Erstinstallation des Pakets auf dem System.

ClamAV und ClamSMTP Installation unter Debian 11

ClamAV eMail Virus Scanner on Debian 11 bullseye

ClamAV E-Mail-Virenscanner auf Debian 11 bullseye

In diesem Tutorial wird ClamAV und ClamSMTP unter Debian 11 installiert.  ClamAV  ist eine Open Source Antivirus Engine zum Erkennen von Trojanern, Viren, Malware, Adware, Rootkits und anderen bösartigen Bedrohungen.

ClamAV enthält einen Multi-threaded-Scanner-Daemon, mit Befehlszeilen Dienstprogramme für das On-Demand-Dateiscannen und automatische Signatur-Updates. Der Hauptdienst ist der ClamSMTP-Daemon dieser auf Mailservern als serverseitiger Proxy für E-Mail-Virenscanner eingesetzt wird.

INSTALLATION

Die Voraussetzung zu diesem Tutorial ist ein konfiguriertes SMTP-Relay (MTA) auf Postfix. Für die Installation sind wir bereits root, zuvor noch mit Update die letzte ClamAV Version bereitgestellt werden soll.

$ apt update
$ apt-cache policy clamav clamav-daemon
$ apt install clamsmtp clamav clamav-daemon

Nach der Installation wird Postfix konfiguriert, dazu wir die Hauptkonfiguration main.cf editieren. Postfix mit seinem modularen Aufbau, übergibt die eingehenden E-Mails an den ClamSMTP-Daemon, bevor diese in die Queue gespoolt und zur User Mailbox zugestellt werden.

$ vi /etc/postfix/main.cf
...
content_filter = scan:127.0.0.1:10026

  Wer sich mit vi schwer tut, kann natürlich nano oder den favorisierten Editor verwenden.

Die Services in Postfix master.cf am Ende hinzufügen, hierdurch finden die gescannten E-Mails wieder zu Postfix zurück.

$ vi /etc/postfix/master.cf
...
scan unix -      -      n      -      16      smtp
   -o smtp_data_done_timeout=1200
   -o smtp_send_xforward_command=yes
   -o disable_dns_lookups=yes
127.0.0.1:10025 inet n      -      n      -      16       smtpd
   -o content_filter=
   -o local_recipient_maps=
   -o relay_recipient_maps=
   -o smtpd_restriction_classes=
   -o smtpd_client_restrictions=
   -o smtpd_helo_restrictions=
   -o smtpd_sender_restrictions=
   -o smtpd_recipient_restrictions=permit_mynetworks,reject
   -o mynetworks_style=host
   -o smtpd_authorized_xforward_hosts=127.0.0.0/8

Mit dem neuen ClamAV virus database updater (clamav-freshclam.service) soll kein Notify mehr an Clamd erfolgen.

$ sed -i -e "s/^NotifyClamd/#NotifyClamd/g" /etc/clamav/freshclam.conf

Die ClamSMTP-conf Datei in den Editor der Wahl laden.

$ vi /etc/clamsmtpd.conf
OutAddress: 10025
Listen: 127.0.0.1:10026
ClamAddress: /var/run/clamav/clamd.ctl
Header: X-AV-Checked: ClamAV using ClamSMTP
TempDirectory: /var/spool/clamsmtp
PidFile: /var/run/clamsmtp/clamsmtpd.pid
User: clamsmtp

Die meisten Werte können übernommen werden, der Listen Port 10026 ggf. ändern, es muss dieselbe Port Adresse sein, wie in main.cf bei content_filter. Die Kommentar Zeile bei Header: mit Hash (#) entfernen aktivieren.

Grundsätzllich ist die Installation hier schon abgeschlossen. Die nachfolgenden Einstellungen zur überprüfung, falls erforderlich diese entsprechend ändern.

$ chown -R clamsmtp. /run/clamsmtp
$ chown -R clamsmtp. /var/spool/clamsmtp
$ chmod -R 775 /var/spool/clamsmtp

Die zu ClamAV gehörenden Konfigurationsdateien sind clamd.conf
und freshclam.conf, diese folgenden Inhalt haben.

$ vi /etc/clamav/clamd.conf
#Automatically Generated by clamav-daemon postinst
#To reconfigure clamd run #dpkg-reconfigure clamav-daemon
#Please read /usr/share/doc/clamav-daemon/README.Debian.gz for details
LocalSocket /var/run/clamav/clamd.ctl
FixStaleSocket true
LocalSocketGroup clamav
LocalSocketMode 666
# TemporaryDirectory is not set to its default /tmp here to make overriding
# the default with environment variables TMPDIR/TMP/TEMP possible
User clamav
ScanMail true
ScanArchive true
ArchiveBlockEncrypted false
MaxDirectoryRecursion 15
FollowDirectorySymlinks false
FollowFileSymlinks false
ReadTimeout 180
MaxThreads 12
MaxConnectionQueueLength 15
LogSyslog false
LogRotate true
LogFacility LOG_LOCAL6
LogClean false
LogVerbose false
PreludeEnable no
PreludeAnalyzerName ClamAV
DatabaseDirectory /var/lib/clamav
OfficialDatabaseOnly false
SelfCheck 3600
Foreground false
Debug false
ScanPE true
MaxEmbeddedPE 10M
ScanOLE2 true
ScanPDF true
ScanHTML true
MaxHTMLNormalize 10M
MaxHTMLNoTags 2M
MaxScriptNormalize 5M
MaxZipTypeRcg 1M
ScanSWF true
ExitOnOOM false
LeaveTemporaryFiles false
AlgorithmicDetection true
ScanELF true
IdleTimeout 30
CrossFilesystems true
PhishingSignatures true
PhishingScanURLs true
PhishingAlwaysBlockSSLMismatch false
PhishingAlwaysBlockCloak false
PartitionIntersection false
DetectPUA false
ScanPartialMessages false
HeuristicScanPrecedence false
StructuredDataDetection false
CommandReadTimeout 30
SendBufTimeout 200
MaxQueue 100
ExtendedDetectionInfo true
OLE2BlockMacros false
AllowAllMatchScan true
ForceToDisk false
DisableCertCheck false
DisableCache false
MaxScanTime 120000
MaxScanSize 100M
MaxFileSize 25M
MaxRecursion 16
MaxFiles 10000
MaxPartitions 50
MaxIconsPE 100
PCREMatchLimit 10000
PCRERecMatchLimit 5000
PCREMaxFileSize 25M
ScanXMLDOCS true
ScanHWP3 true
MaxRecHWP3 16
StreamMaxLength 25M
LogFile /var/log/clamav/clamav.log
LogTime true
LogFileUnlock false
LogFileMaxSize 0
Bytecode true
BytecodeSecurity TrustSigned
BytecodeTimeout 60000
OnAccessMaxFileSize 5M

Die Datei clamd.conf lässt sich mit dpkg-reconfigure clamav-daemon konfigurieren, dabei die defaut Werte vorgeschalgen werden.

Um die Methode für Virendatenbank-Updates zu wählen und clamav-freshclam zu konfigurieren, ist es der Befehl dpkg-reconfigure clamav-freshclam.

$ vi /etc/clamav/freshclam.conf
# Automatically created by the clamav-freshclam postinst
# Comments will get lost when you reconfigure the clamav-freshclam package

DatabaseOwner clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogVerbose false
LogSyslog false
LogFacility LOG_LOCAL6
LogFileMaxSize 0
LogRotate true
LogTime true
Foreground false
Debug false
MaxAttempts 5
DatabaseDirectory /var/lib/clamav
DNSDatabaseInfo current.cvd.clamav.net
ConnectTimeout 30
ReceiveTimeout 0
TestDatabases yes
ScriptedUpdates yes
CompressLocalDatabase no
Bytecode true
#NotifyClamd /etc/clamav/clamd.conf
# Check for new database 24 times a day
Checks 24
DatabaseMirror db.local.clamav.net
DatabaseMirror database.clamav.net

Testing ClamAV ClamSMTP Postfix

Die systemd control commands für die ClamAV-Daemons.

$ systemctl restart clamav-daemon clamsmtp postfix
$ systemctl status clamav-daemon clamsmtp postfix
$ systemctl restart clamav-freshclam.service
$ systemctl status clamav-freshclam.service

Sind die Daemon ClamSMTP und Postfix konfiguriert, können die aktiven Ports im Loop überprüft werden, mit netstat oder ss.

$ netstat -tpln | grep 127.0.0.1
tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      1513/master
tcp        0      0 127.0.0.1:10026         0.0.0.0:*               LISTEN      690/clamsmtpd

Die EICAR-Test-Signatur um den E-Mail-Virenscanner zu überprüfen in eine Datei speichern, beispielsweise in eicar-signatur.txt.

From: hostmaster@example.org
To: email@example.org
Subject: test - virus scanner test pattern

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Die EICAR-Test-Signatur mit sendmail an sich selber senden.

$ echo "Subject: EICAR-Test-Signatur" | sendmail email@example.org < eicar-signatur.txt

In /var/log/mail.log ist der Eintrag 250 Virus Detected; Discarded Email zu finden. Die E-Mail mit der EICAR-Test-Signatur sollte selbsvertändlich nicht zugestellt werden.

Nov 21 14:01:41 debian clamsmtpd: 100001: from=root@example.org, to=email@example.org, status=VIRUS:Eicar-Signature
Nov 21 14:01:41 debian postfix/smtp[2077]: D93FA10001A: to=<email@example.org>, relay=127.0.0.1[127.0.0.1]:10026, delay=0.07, delays=0.02/0.02/0.01/0.02, dsn=2.0.0, status=sent (250 Virus Detected; Discarded Email)

Conclusion

Der Beitrag zeigt die Installation und Anwendung von ClamAV auf einem Mail Transfer Agent, mit abschliesssender überprüfung mittels Test-Signatur. ClamAV ist eine Open-Source-(GPL-)Antiviren-Engine, die in einer Vielzahl von Situationen verwendet wird, einschließlich E-Mail- und Web-Scans sowie Endpunktsicherheit. Es bietet viele Dienstprogramme für Benutzer, darunter einen flexiblen und skalierbaren Multithread-Daemon, einen Befehlszeilen-Scanner und ein fortschrittliches Tool für automatische Datenbank-Updates.