Squid-Kit-Clamav Rocky
Version vom 28. April 2026, 11:36 Uhr von Thomas.will (Diskussion | Beiträge)
Konzepte
ICAP
- Allgemein ist ICAP ein schlankes Protokoll, um einen „Remote Procedure Call" für HTTP(S) und FTP auszuführen.
- ICAP-Clients können HTTP-Daten an einen ICAP-Server weitergeben, der seinerseits die Inhalte umformt oder bearbeitet.
- Der Server sendet die Daten nach der Bearbeitung zurück an den Client.
- Normalerweise sind die adaptierten Inhalte HTTP(S)/FTP-Anfragen oder -Antworten.
- Ein ICAP-Client ist im Normalfall ein Proxy, der HTTP(S)/FTP-Requests von einem Browser entgegennimmt.
- Die Daten werden zu einem ICAP-Server gesendet, um dort bearbeitet zu werden.
- Diese Bearbeitung kann eine Überprüfung des URL, ein Virenscan etc. sein.
- Der Server sendet eine Antwort zurück, die dann über den ICAP-Client zurück zum Browser geht und dort angezeigt wird.
- ICAP verwendet standardmäßig den TCP-Port 1344
ClamAV
- ClamAV (Clam AntiVirus) ist ein unter der GNU General Public License stehendes Virenschutzprogramm
- Bei ClamAV handelt es sich um eine Bibliothek, die in eigene Anwendungen eingebunden werden kann.
- ClamAV läuft als Dienst im Hintergrund (Daemon) oder als eine Befehlszeilen-Anwendung.
- Unter Linux greift ClamAV auf fanotify zurück, um den Zugriff auf das Dateisystem über den Virenscanner umzuleiten
- Es kann daher als Echtzeitscanner verwendet werden.
Schaubild
Installation
- EPEL aktivieren
- dnf install -y epel-release
- Pakete installieren
- dnf install -y clamav clamd clamav-update c-icap c-icap-libs c-icap-modules git gcc make c-icap-devel redhat-rpm-config
Pakete zur Installation
clamav
- Open-Source-Virenschutzprogramm
- Überprüft Dateien und Daten auf Viren und Malware
clamd
- Hintergrunddienst (Daemon) von ClamAV
- Ermöglicht Virenscans im Echtzeitmodus
clamav-update
- freshclam — aktualisiert die ClamAV-Virendatenbank automatisch
c-icap
- ICAP-Server — nimmt Anfragen von Squid entgegen und leitet sie an ClamAV weiter
c-icap-libs
- Bibliotheken für c-icap
c-icap-modules
- Zusätzliche Module für c-icap, wird für squidclamav benötigt
c-icap-devel
- Entwicklungsbibliotheken für c-icap
- Wird benötigt damit squidclamav gegen c-icap kompiliert werden kann
redhat-rpm-config
- Enthält Red Hat spezifische Compiler-Spec-Dateien
- Wird beim Kompilieren von squidclamav auf Rocky Linux benötigt
git / gcc / make
- Werden benötigt um squidclamav aus dem Quellcode zu kompilieren
Über git clone squidclamav Source herunterladen
"SquidClamAV" ist ein Drittanbieter-Plug-In für den Squid-Proxy-Server, das speziell zur Integration von ClamAV in den Proxy entwickelt wurde. SquidClamAV ermöglicht es Squid, den HTTP-Datenverkehr zu überwachen und nach Viren und Malware zu scannen.
- git clone https://github.com/darold/squidclamav
Kompilieren
- cd squidclamav
- ./configure && make && make install
clamd Konfiguration
- clamd kommuniziert über einen Unix-Socket mit squidclamav
- Der Socket-Pfad und die Zugriffsrechte müssen korrekt gesetzt sein
- vi /etc/clamd.d/scan.conf
- Folgende Zeilen einkommentieren bzw. anpassen
LocalSocket /run/clamd.scan/clamd.sock LocalSocketGroup virusgroup LocalSocketMode 666
- Da /run beim Booten neu erstellt wird, muss das Verzeichnis dauerhaft korrekt angelegt werden
- systemd-tmpfiles übernimmt das beim Systemstart
- vi /etc/tmpfiles.d/clamd.conf
d /run/clamd.scan 0755 clamscan virusgroup -
squidclamav Konfiguration
- squidclamav muss wissen wo der clamd Socket liegt
- vi /etc/c-icap/squidclamav.conf
- Ersetze diese Zeile
clamd_local /var/run/clamav/clamd.ctl
- Durch diese Zeile
clamd_local /run/clamd.scan/clamd.sock
- Fehlerseite zuweisen — Ersetze diese Zeile
redirect http://proxy.domain.dom/cgi-bin/clwarn.cgi
- Durch diese Zeile
redirect https://virus-found.xinux.de
- Wer dies selbst aufsetzen will
c-icap Konfiguration
- squidclamav als Modul in c-icap eintragen
- echo "Service squidclamav squidclamav.so" >> /etc/c-icap/c-icap.conf
- c-icap muss nach clamd starten — sonst kann squidclamav den Socket nicht erreichen
- systemd Override erstellen
- systemctl edit c-icap
[Unit] After=clamd@scan.service Requires=clamd@scan.service
- systemctl daemon-reload
Squid Konfiguration erweitern
- unter die http_access rules
- vi /etc/squid/squid.conf
icap_enable on icap_send_client_ip on icap_send_client_username on icap_client_username_encode off icap_client_username_header X-Authenticated-User icap_preview_enable on icap_preview_size 1024 icap_service service_req reqmod_precache bypass=0 icap://127.0.0.1:1344/squidclamav icap_service service_resp respmod_precache bypass=0 icap://127.0.0.1:1344/squidclamav adaptation_access service_req allow all adaptation_access service_resp allow all
Dienste starten
- systemctl enable --now clamav-freshclam clamd@scan c-icap squid
Firewall
- firewall-cmd --zone=public --add-port=1344/tcp --permanent
- firewall-cmd --reload
Hier kann man Testen
Der Log zum clamav
- tail -f /var/log/clamav/clamd.log
instream(local): Win.Test.EICAR_HDB-1(44d88612fea8a8f36de82e1278abb02f:68) FOUND
Der Log zum c-icap
- tail -f /var/log/c-icap/server.log
squidclamav.c LOG Virus found in https://secure.eicar.org/eicar.com ending download [stream: Win.Test.EICAR_HDB-1 FOUND]
