ESET Gateway Security for Linux als Upstream Proxy für SQUID

Der SQUID Proxy-Server ist ein beliebtes Programm um den Internetzugang in Firmen zu kanalisieren und kontrollieren. Squid bietet die Möglichkeit Zugänge nach Benutzern einzuschränken oder Webseiten zu sperren. Jedoch fehlt dem Proxyserver die Möglichkeit den Internetverkehr auf Viren zu prüfen. Hier setze ich mit ESET Gateway Security für Linux/BSD/Solaris als Lösung an.

Proxy Chaining

Die Idee hinter dieser Lösung steckt darin für den Benutzer eine nicht sichtbare Verkettung der Dienste zu erstellen und den Internetverkehr bereits am Gateway auf Viren zu prüfen. Das Proxy Chaining mit ESET Gateway Security als Upstreamproxy ermöglich Ressourcen zu sparen da die Software auf der gleichen Maschine mit SQUID installiert wird. Als Grundlage dient ein aktuelles Debian unter XEN:


Installation Debian & Squid

Neben einer Debian-Server-Standard-Installation (fixe IP, gehärteter SSH-Zugang) wird der SQUID-Server installiert und nach eigenen Bedürfnissen angepasst.
Auf die Einzelheiten einer SQUID-Installation wird in diesem How-To nicht eingegangen.

Anmerkungen zur Installation

In diesem Beispiel ist SQUID und ESET Gateway Security auf der IP 192.168.200.10 installiert, das Netzwerk ist 192.168.200.0/24.

Installation ESET Gateway Security for Linux

Die komplette Installation von ESET Gateway Security erfolgt als root. Daher empfiehlt es sich vor der Installation per “su” zum Root des Systems zu werden. An erster Stelle wird das auf http://www.eset.com/de/download/business/detail/family/54/?installer=offline#offline,80 heruntergeladene BIN-File auf den Server kopiert.

Ich verwende WinSCP um die Datei auf den Server zu bringen:


Vor der Installation sollte

apt-get install ed libc6-i386 libssl-dev

ausgeführt und installiert werden.

Basisinstallation und Grundkonfiguration

Nachdem Kopiervorgang wird auf dem Server die BIN-Datei gestartet und ESET Gateway Security installiert:


Das Software End-User License Agreement das angezeigt wird kann “q” beendet werden.
Die Frage ob das Agreement angenommen wird mit “y” beantworten:


Nach Belieben kann die Samples Submission bejaht oder verneint werden.
Hier können verdächtige Dateien zur Analyse an ESET übertragen werden:


Als Nächstes erstelle ich einen Symlink für das Konfigurationsverzeichnis nach /etc/eset via:

ln –s /etc/opt/eset/esets /etc/eset

Im nächsten Schritt wird das Lizenzfile nach /etc/eset/license kopiert. Das Lizenzfile wird am besten mit der BIN-Datei per WinSCP hochgeladen. Im nächsten Schritt wird der ESETS Daemon neugestartet:

/etc/init.d/esets stop && /etc/init.d/esets start

Der Weg über den Parameter “restart” ist hier nicht ausreichend. Danach erfolgt die Grundkonfiguration von ESET Gateway Security Linux.
Zum Start des Konfigurationsprogramms

/opt/eset/esets/sbin/esets_setup

ausführen. Zur Einrichtung stellt das Install-Script ein paar Fragen an den Benutzer:


“Do you want to see commands, which will be executed during installation? (y/n, default=y)” mit “y” beantworten.
Für die geplante Konfiguration wird Punkt 1) HTTP gewählt. In diesem Schritt wird Upstream-Proxy für SQUID eingerichtet:


Mit “4” wird das Konfigurationsprogramm beendet. Die vorgeschlagene Anpassung der IP-Tables-Regeln ist in diesem
Fall nicht nötig das dies vom SQUID erledigt wird.

Um ESET Gateway Security per http konfigurieren zu können wird der Webserver in der Datei /etc/eset/esets.cfg editiert:

nano /etc/eset/esets.cfg

Im Abschnitt [wwwi] werden die Parameter angepaßt:

[wwwi]

# Settings for ESETS Web Interface configuration module
# agent_enabled = yes/no
# Enables operation of the esets_wwwi.

agent_enabled = yes

# listen_addr = “address”
# Address (IP or name) where esets_wwwi listens for HTTPS client connections.
# If set to 0.0.0.0 then esets_wwwi listens on all available network interfaces.

listen_addr = “192.168.200.10”

# listen_port = port

# TCP port where esets_wwwi listens for HTTPS client connections.
# You may have to open this port in your firewall.

listen_port = 60080

# username and password needed for accessing the interface (required)

username = “admin”

password = “passwort”

Mit den, für das System, angepassten, neuen Einstellungen wird der ESETS Dienst neugestartet:

/etc/init.d/esets stop && /etc/init.d/esets start

Konfiguration per Weboberfläche

Ab jetzt kann das System per Weboberfläche konfiguriert werden:


Zur Anmeldung im Konfigfile hinterlegte Anmeldedaten verwenden und am System anmelden:


 

 

Unter Configuration/Global/Update Options werden zuerst die Benutzerdaten um Updates zu laden hinterlegt:


 

Auf Spezialfunktionen wie das Anlegen eines Update-Mirrors wird in dieser Anleitung nicht eingegangen.
Mit Klick auf “Save Changes” und anschliessend auf “Apply Changes” werden die Einstellungen gespeichert.

Über Control/Update können die Einstellungen mit dem Start eines manuellen Updates geprüft werden:


Updates mit “Status 0” wurden erfolgreich heruntergeladen.

Unter Configuration/HTTP werden die Einstellungen zum Scannen des http-Verkehrs eingestellt.
Die hier gezeigten Einstellungen sind eine Empfehlung können und sollten individuell anpasst werden:


Die Optionen “Potentially unsafe apps” und “Potentially unwantet apps” sollten aktiviert sein um
den Schutz vor unsicheren Anwendungen wie Trojanern etc. zu erhöhen.

SQUID.conf

 

nano /etc/squid3/squid.conf

Dort werden folgende Einstellungen eingetragen:

acl internetzugriff src 192.168.200.0/24 #netzwerk der zugreifenden rechner
cache_peer 192.168.200.10 parent 8080 0 no-query no-delay default
cache_peer_access 192.168.200.10 allow internetzugriff

Um die Einstellungen zu aktivieren muß der SQUID-Dienst neugestartet warden:

/etc/init.d/squid3 restart

Test der Installation

Zum Testen von ESET Gateway Security lade ich auf www.eicar.com das Virustestfile:


Bei richtiger Konfiguration wird der Downloadversuch so quitiert:


Somit ist der Konfigurationsvorgang zum Prüfen des http-Verkehrs mittels Proxy-Chaining unter SQUID mit ESET Gateway Security abgeschlossen.

Voodoo:

Mit einem transparent konfiguriertem Squid kann der Internetverkehr aller Clients ohne die Aktivierung des Proxys in den Browsereinstellungen geprüft werden.

In dem hier aufgezeigten Bespiel verwenden wir einen Squid-Server samt ESET Gateway Security als transparenten Proxy auf einem Rechner mit nur 1er Netzwerkkarte.
Im ersten Schritt werden die Iptables mit diesem Script hierfür anpasst:

#!/bin/sh

# Squid server IP

SQUID_SERVER=”192.168.200.10″

# Interface connected to Internet

INTERNET=”eth0″

# Address connected to LAN

LOCAL=”192.168.200.0/22″

# Squid port

SQUID_PORT=”3128″

# Clean old firewall

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

iptables -t mangle -F

iptables -t mangle -X

# Enable Forwarding

echo 1 > /proc/sys/net/ipv4/ip_forward

# Setting default filter policy

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

# Unlimited access to loop back

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

# Allow UDP, DNS and Passive FTP

iptables -A INPUT -i $INTERNET -m state –state ESTABLISHED,RELATED -j ACCEPT

# set this system as a router for Rest of LAN iptables -t nat -A POSTROUTING -o $INTERNET -j MASQUERADE iptables -A FORWARD -s $LOCAL -j ACCEPT

# unlimited access to LAN

iptables -A INPUT -s $LOCAL -j ACCEPT

iptables -A OUTPUT -s $LOCAL -j ACCEPT

# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy iptables -t nat -A PREROUTING -s $LOCAL -p tcp –dport 80 -j DNAT –to $SQUID_SERVER:$SQUID_PORT

# if it is same system

iptables -t nat -A PREROUTING -i $INTERNET -p tcp –dport 80 -j REDIRECT –to-port $SQUID_PORT

# DROP everything and Log it

iptables -A INPUT -j LOG

iptables -A INPUT -j DROP

 

Nach Anpassung und Test im System dieses Script beim Start automatisch aktivieren. In der Squid.Conf ist auch eine weitere Anpassung nötig:

#transparentproxy

http_port 192.168.200.10:3128 transparent
http_port 80 vhost

Auch hier gilt:

    /etc/init.d/squid3 restart

 

Abschließend sind noch die Routingeinträge an diesem Rechner anzupassen und am DHCP-Server das Gateway für die Clients auf den Squid-Server umstellen.
Die hier beschriebene Lösung stellt einen Lösungsvorschlag dar und kann auf individuelle Bedürfnisse angepasst werden.

Viel Freude mit ESET Gateway Security und SQUID