Posts

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

 

 

 


SQUID 3 mit Proxy Authentifizierung

In grösseren Firmennetzwerken ist die Kontrolle des Internetzugangs ein wichtiges Thema. Nicht nur der Schutz von Eindringlingen von aussen ist wichtig sondern auch die Kontrolle darüber welche Webseiten von den Benutzern aufgerufen werden können. Ein Kunde trat vor Kurzem mit einer interessanten Anforderung für die Steuerung des Internetzugangs an uns heran.

Das Netzwerk des Kunden besteht aus mehreren Segmenten. In der Aufteilung werden Server, PC und ThinClients netzwerktechnisch voneinander getrennt. Ein weiteres Netzwerk wird für die VDI’s unter Xen Desktop verwendet. Basierend auf der gewachsenen Netzwerkstruktur werden alle Netzwerke über ein Transfernetzwerk zum Internet geroutet. Das Internetbrowsen der Benutzer wird aus dem VDI-Netzwerk mit einer Webfiltersoftware gesteuert. Der Kundenwunsch war vor das Transportnetz einen Proxyserver zusetzen über den alle Rechner, bei Bedarf, auf das Internet zugreifen können. Desweiteren sollte dieser Zugriff getrennt von der Webfiltersoftware möglich sein. Um die Kosten niedrig zu halten empfohlen wir unserem Kunden die Nutzung von Squid3 Proxy-Server auf einer Linuxmaschine. Da es nur bestimmten administrativen Nutzern erlaubt sein soll über diesen Proxy auf das Internet zuzugreifen empfohlen wir die Verwendung von lokalen Benutzern via htpasswd anstelle einer Verbindung per LDAP an das Active Directory.

Nach der Installation eines Squid3 unter Debian und Anpassung der Konfiguration kann die Aktivierung der Authentifizierung erfolgen. Ein wichtiger Schritt ist in den Einstellungen des SQUID-Proxy-Servers so einzustellen das der Zugriff des lokalen Netzwerks untersagt wird. Wird diese Einstellung nicht vorgenommen wird die Authentifzierung ausgehebelt. Für die Authentifzierung werden nun folgende Zeilen in der squid.conf eingefügt:

#authentification
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd
auth_param basic children 5
auth_param basic realm lachenmair.info – SQUID Internet-Zugriffsberechtigung
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl zugriff proxy_auth REQUIRED
http_access allow zugriff
http_access deny all
icp_access deny all
htcp_access deny all
#ende auth

Ab Debian8 verwendet der Squid3 statt “ncsa_auth” “basic_ncsa_auth”:

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/passwd

Vielen Dank für den Hinweis an Mischa Boschke von Schwielownet (http://www.schwielownet.de).

Für die Nutzung von htpasswd müssen “apache2-utils” installiert sein. Bei Längeren administrativen Aufgaben auf Linux-Maschinen nutze ich “su -” um Root des Systems zu werden:

Screenshot einer Linuxanmeldung via Putty und wechsel zum Root

Als Nächstes wird die Datei passwd mit dem Programm htpasswd im Verzeichnis der Squidkonfiguration angelegt. Nach der Erstellung werden die Lese- und Schreibrechte eingeschränkt:

Screenshot einer Linuxshell bei der mit htpasswd ein Passwortfile angelegt wird

Weitere Benutzer können später per SUDO angelegt werden:

Screenshot einer Linuxshell für die Benutzeranlage per htaccess via SUDO

Nachdem die Benutzer angelegt wurden wird der Squid-Dienst neugestartet. Danach müssen sich Benutzer beim Surfen mit Ihrem Benutzernamen und Passwort anmelden:

Screenshot der Benutzerabfrage des Internet Explorers bei aktivierter Squid-Authentifizierung

 

Um die Verteilung der Authentifzierung bzw. der Proxynutzung zu automatisieren wurde zusätzlich noch ein proxy.pac-File angelegt und per Gruppenrichtlinie verteilt. Die proxy.pac weist den Benutzern automatisch den Proxyserver zu. Da in diesem Netzwerk auch Notebooks, welche auch ausserhalb online gehen müssen, benutzt werden wurde eine automatisierte Erkennenung in dieser Datei hinterlegt. Mit dieser Einstellung konnten alle Benutzer ohne große Aufwände umgestellt werden. Nutzen Sie unser Kontaktformular bei Fragen zu Squid-Proxy-Server, Authentifizierung oder dem Einsatz einer proxy.pac