Schlagwort-Archiv: Squid3

Debian 9 Proxy Squid3 mit ClamAV (squidclamav)

Da es auf unserem Hof noch kein DSL gibt und ich 2 Jahre vergeblich bei der Telekom auf einen Telefonschluss warten musste, hatte ich nach einer anderen Lösung gesucht. Da blieb nur noch SAT oder LTE. Wir haben jetzt LTE genommen. Leider war der Empfang nicht ohne weiteres möglich, es musste eine Doppelaußenantenne her. Die LTE Antenne muss genau ausgerichtet werden und zum nächsten LTE- Masten zeigen. Das bekommt man beim Provider raus. Aber das ging auch nicht lange gut, weil der Traffic nie gereicht hat. Wir haben zwar 32 GB Traffic, aber das klingt mehr wie es ist.
Das Problem ist aber, dass sämtliche Geräte immer Updates machen wollen. Telefon, Smartphone, Laptop, … Heute kann man für fast alles Firmwares aktualisieren. Die Updates sind aber oft schon ein paar GB groß, dann geht man vieleicht noch auf facebook, da starten dann erstmal schön Videos und ein Haufen Werbung und dann muss facebook und co noch schön Daten sammeln ; ). Firefox updates, … Telefon läuft ja auch noch über LTE, da ja der Anschluss noch nicht dran ist.
Damit jetzt Traffic reduziert wird, bietet sich ein Proxyserver an.

Squid3 und clameav installieren:

apt-get update && apt-get upgrade
apt-get install squid3 c-icap clamav clamdscan clamav-daemon libicapapi-dev gcc make curl libcurl4-gnutls-dev libapache2-mod-perl2

Damit clamav mit squid3 funktioniert muss noch squidclamav installiert werden:

# wget http://downloads.sourceforge.net/project/squidclamav/squidclamav/6.16/squidclamav-6.16.tar.gz
# tar xvfz squidclamav-6.16.tar.gz
# cd squidclamav-6.16
# ./configure --with-c-icap && make && make install
# cp -rf cgi-bin /usr/lib/
# chmod -r 775 /usr/lib/cgi-bin/
# a2enmod cgi
# service apache2 restart
# cd ..
# ldconfig
# ln -s /etc/c-icap/squidclamav.conf /etc/squidclamav.conf
# vim /etc/default/c-icap

Hier START=no auf START=yes ändern.

# vim /etc/c-icap/c-icap.conf
Bei ServerAdmin eure e-mail angeben.
Der Name vom Server wird bei ServerName angeben. z.B.:
ServerName debian.local
und ca. in line 570 muss man noch diese Zeile hinzufügen.

Service squidclamav squidclamav.so
Nun Config speichern und verlassen.

c-icap neustarten:
systemctl restart c-icap

Falls es auch Probleme mit ClamAV gibt:
# freshclam
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

Löscht einfach die Logdatei. Das ist kein Problem, da die log ja wieder automatisch erstellt wird:
# rm /var/log/clamav/freshclam.log

Ob clamav lokal funktioniert, kann man so testen:
# cd /tmp
# wget http://www.eicar.org/download/eicar.com
# clamscan --infected --remove --recursive /tmp

Jetzt sollte dieser Test-virus gefunden und entfernt worden sein:
/tmp/eicar.com: Eicar-Test-Signature FOUND
/tmp/eicar.com: Removed.

———– SCAN SUMMARY ———–
Known viruses: 6297800
Engine version: 0.99.2
Scanned directories: 10
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 10.403 sec (0 m 10 s)

Wichtig!
Bei Debian 8 war squid im Verzeichniss /etc/squid3/ , heute wo ich Debian 9 installiert habe liegt squid unter etc/squid/
Darum bitte die pfade überüfen!

cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

Konfiguration bearbeiten:
vim /etc/squid/squid.conf oder für nano freunde "nano /etc/squid/squid.conf"

visible_hostname debian.local
error_directory /usr/share/squid/errors/de/
forwarded_for off
via off
#cache
cache_mem 512 MB
maximum_object_size 20480 KB
maximum_object_size_in_memory 512 MB
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF
cache_dir ufs /var/spool/squid3 2000 16 256
#timeouts
forward_timeout 30 seconds
connect_timeout 30 seconds
read_timeout 30 seconds
request_timeout 30 seconds
persistent_request_timeout 1 minute
client_lifetime 20 hours
#DNS
dns_nameservers 192.168.1.1 8.8.8.8 8.8.4.4
url_rewrite_children 20
#defaults
acl localnet src 192.168.1.0/24
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT
acl bad_url dstdomain "/etc/squid/blacklist"
#acl no_updates dstdomain "/etc/squid/msupdates"
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
deny_info ERR_ACCESS_DENIED bad_url
http_access deny bad_url
icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_header X-Authenticated-User
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all
http_access allow localnet
http_port 3128
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320


squidclamav.conf bearbeiten:

nano /etc/squidclamav.conf

maxsize 5000000
redirect http://192.168.x.x/cgi-bin/clwarn.cgi
clamd_local /var/run/clamav/clamd.ctl
clamd_ip 192.168.x.x,127.0.0.1
clamd_port 3310
timeout 1
logredir 0
dnslookup 1
safebrowsing 0
debug 0
stat 0

Server squid3 neustarten:
service squid restart

Unter Debian 8:
service squid3 restart

nun Dienste neustarten:

service c-icap restart
service apache2 restart
service clamav-daemon restart
service squid restart

Cache löschen:
service squid3 stop
rm -rf /var/spool/squid/*
service squid3 start


Client mit Proxy verbinden, Firefox:

Proxy im Firefox hinterlegen

 

Windows Proxyeinstellungen hinterlegen:

Proxy Windows 10

Jetzt Testen:
Geht mit Firefox nun auf http://www.eicar.org/download/eicar.com

Ihr solltet nun das im Browser sehen:
SquidClamAv Virus detected

Wenn CGI nicht geht, muss man noch folgendes tun. (War bei Debian 9 so)

tail -f /var/log/apache2/error.log

Jetzt im Browser folgende URL aufrufen:
http://www.eicar.org/download/eicar_com.zip

Jetzt sollte sich die URL ändern in:
http://192.168.x.xx/cgi-bin/clwarn.cgi?url=http://www.eicar.org/download/eicar_com.zip&source=192.168.x.xx&user=-&virus=stream:%20Eicar-Test-Signature%20FOUND

Passiert das nicht, müsst ihr nochmal die Anleitung durchgehen.
Wenn die URL sich ändert, fehlt nicht mehr viel. Es funktioniert aber schon mal, das CGI soll nur eine Fehlerseite ausgeben und da gab es auch bei mir unter Debian 9 Probleme. Unter Debian 8 hatte ich keine Probleme.

Kommt beim Befehl a2enmod cgi:
„Can’t activate CGI module with „a2enmod cgi“

Hilft folgendes:
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod cgi
sudo service apache2 restart

Steht in der log Can’t locate CGI.pm in @INC (you may need to install the CGI module), muss man CGi wie folgt installieren:

#perl -e shell -MCPAN
install CGI
exit

gehts immer noch nicht ?
Dann sollte man das Verzeichnis /usr/lib/cgi-bin/ überprüfen, das muss als root ausführbar sein und es sollten folgende Datein enthalten sein:
-rwxr-xr-x 1 root root 1827 Jun 21 13:59 clwarn.cgi
-rwxr-xr-x 1 root root 1827 Jun 21 13:21 clwarn.cgi.de_DE
-rwxr-xr-x 1 root root 1777 Jun 21 13:21 clwarn.cgi.en_EN
-rwxr-xr-x 1 root root 1898 Jun 21 13:21 clwarn.cgi.fr_FR
-rwxr-xr-x 1 root root 1995 Jun 21 13:21 clwarn.cgi.pt_BR
-rwxr-xr-x 1 root root 2099 Jun 21 13:21 clwarn.cgi.ru_RU

Und zum Abschluss noch ein wichtiges Detail. SSL ist end to end Verschlüsselung, also vom Browser zum Server. Also der Lokale Rechner mit der verschlüsselten Webseite. Was ich damit sagen will, squidclamav kann nur HTTP scannen. Bei HTTPS klappt das nicht! Auch im non transparent modus wird direkt vom Browser verschlüsselt.
Also sollte lokal am Rechner trotzdem ein Virenscanner laufen!