Virenscanner und Content-Filter mit Active-Directory-Authentifizierung

Saubermann

,
Ein Artikel im letzten Admin-Sonderheft hat vorgeführt, wie sich ein Squid-Proxy in eine Active-Directory-Umgebung integrieren lässt. Dieser Artikel zeigt, wie Content- und Virenfilter für mehr Sicherheit sorgen.

In vielen Unternehmen läuft der Zugang zum Web über Proxys. Diese Mittelsmänner im Netz machen es einfach, die aufgerufenen Seiten und Downloads einem Virencheck zu unterziehen. Oft wird auch zum Zweck der Kontrolle vom Management gefordert, dass Benutzer sich am Proxy anmelden müssen. Auf diese Weise können einzelnen Benutzern oder Gruppen Rechte wie zum Beispiel der Zugang zum Intranet oder Extranet zugewiesen werden. Aber noch eine Anmeldung bedeutet noch einen Benutzernamen und noch ein Passwort, das man sich merken muss – es sei denn, die Anmeldeinformationen eines bereits existierenden Systems, etwa des Windows-Domänencontrollers könnten vom Proxy mitbenutzt werden. Mit ein wenig Unterstützung aus dem Samba-Projekt ist der Squid-Proxy [1] in der in Lage, Benutzern mittels ihres Active-Directory-Kontos Zugang zu gewähren.

Das im vorigen Artikel [2] beschriebene Setup ist ausreichend, wenn es nur um die Benutzeranmeldung geht. Kurz rekapituliert, brauchen sie dafür außer Squid die Pakete Samba 3.x, Samba-Client, Samba-Winbind und das Kerberos-Paket, das in den meisten Distributionen »krb5« oder ähnlich heißt. Soll das Proxysystem zusätzlich noch Virenchecks durchführen, können Sie zum Beispiel den Content-Filter Dansguardian integrieren. Dansguardian wird logisch vor den Squid geschaltet (Abbildung 1), was kleinere Anpassungen in der Datei »squid.conf« verlangt (Listing 1).

Abbildung 1: Zum Virenfiltern wird der Content-Filter Dansguardian vor den Squid-Proxy geschaltet.

Listing 1

<C>squid.conf<C>

log_uses_indirect_client on
follow_x_forwarded_for allow all
acl usergruppe1 external nt_group y1
acl usergruppe2 external nt_group y2
http_access allow usergruppe1
http_access allow usergruppe2
http_access deny !AuthUser
http_access deny all

Die erste Zeile bewirkt, dass das Logfile die tatsächliche IP-Adresse des Clients protokolliert. Ohne sie stünde dort die IP des Dansguardian-Servers oder einfach nur 127.0.0.1, falls Squid und Dansguardian auf der gleichen Hardware laufen. Analog dient die zweite Zeile dazu, dass Squid sein Regelwerk auf die "echte" Client-IP anwendet. In den weiteren Zeile folgen die Definition der Usergruppen und die zugehörigen ACLs.

Nach diesem vorbereitenden Schritt geht es nun im die Konfiguration von Dansguardian selbst. Wichtig ist, dass Dansguardian mit der Compile-Option »--enable-ntlm=yes« übersetzt wurde. Das läßt sich schnell durch Eingabe von »dansguardian -v« ermitteln. Dansguardian unterstützt eine stattliche Anzahl von Antivirus-Software, im Beispielfall soll Clamav zum Einsatz kommen. Listing 2 zeigt, wie Sie Dansguardian einbinden.

Listing 2

Dansguardian-Konfiguration

filterip = 127.0.0.1
filterport = 8080
proxyip = 127.0.0.1
proxyport = 3128
filtergroups = 2
filtergroupslist = '/etc/dansguardian/lists/filtergroupslist'
contentscanner = '/etc/dansguardian/contentscanners/clamav.conf'
authplugin = '/etc/dansguardian/authplugins/proxy-ntlm.conf'
daemonuser = 'dansguardian'  # Muss identisch mit dem clamav-daemonuser sein
daemongroup = 'nogroup'      # Muss identisch mit dem clamav-daemon-group sein!

Es gibt hier mit zwei Benutzergruppen (durch »filtergroups = 2« definiert), für die jeweils eine Datei mit dem Name »dansguardianfn.conf« existieren muss. Beide enthalten jeweils nur eine Zeile, die den Active-Directory-Gruppenname definiert, der oben in der Squid-Konfiguration festgelegt wurde. Sie sehen so aus:

[dansguardianf1.conf]
groupname = 'y1'
[dansguardianf2.conf]
groupname = 'y2'

Um die Gruppenzugehörigkeit zu bestimmen, müssen Sie in der Datei »/etc/dansguardian/lists/filtergroup« die Zuordnung der einzelnen User zu den Gruppen hinterlegen. Diese Datei von Hand zu pflegen, ist nur für eine sehr kleine Anzahl von Benutzern sinnvoll, deshalb lassen Sie sich besser vom Skript »usermap.sh« helfen (Download unter [3]). Das Skript stammt ursprünglich aus dem Wiki der Dansguardian-Webseite, wurde von uns aber modifiziert und arbeitet nun etwa doppelt so schnell wie die ursprüngliche Fassung. Die Gruppennamen müssen in der obersten Sektion des Skripts natürlich auf die eigenen Bedürfnisse angepasst werden. Die fertige Datei »/etc/dansguardian/lists/filtergroup« sollte keine Tab-Zeichen enthalten, da auf einigen Systemen diese bei der Auswertung durch Zeilenumbrüche ersetzt werden und so eine fehlerhafte Gruppenzuordnung entstehen kann.

Da bei jedem Neustart des Systems und des Winbind-Daemons die Berechtiungen auf die Datei: »/var/run/samba/winbindd_privileged« zurückgesetzt wird, benutzen wir ein weiteres kleines Skript (»winbind-ch.sh« , Download unter [3]), um die Berechtigungen zu korrigieren. Die Kommandos

mv winbind-ch.sh /etc/init.d/
update-rc.d winbind-ch.sh start 21 2 3 4 5

sorgen dafür, dass es beim Systemstart ausgeführt wird. Außerdem fügen Sie es in das Winbind-Startskript ein (Listing 3).

Listing 3

Korrektur der Permissions

case "$1" in
       start)
               log_daemon_msg "Starting the Winbind daemon" "winbind"
               [...]
               /etc/init.d/winbind-ch.sh start  # <-- Korrektur der Berechtigungen
               log_end_msg $?
               ;;
               [...]

Nach einem Neustart aller beteiligten Dienste ist der virencheckende Proxy jetzt startbereit und zieht schon mal Mails mit Testsignaturen aus dem Verkehr (Abbildung 2). Besonders vorsichtige Naturen können allerdings Clamavs Erkennungsrate noch verbessern, denn der freie Virenscanner öffnet sich Erkennungsmustern ("Patterns") aus Drittquellen. Die beiden Organisationen Sanesecurity und MSRBL stellen seit Jahren zuverlässig Signaturen für Clamav zur Verfügung, die für verschiedene Einsatzzwecke geeignet sind. Der Schwerpunkt liegt dabei zwar auf der Erkennung von Spam- und Phishing-Mustern, aber auch diese können auf einem HTTP-Proxy sinnvoll eingesetzt werden – spätestens beim Zugriff auf Webmail-Postfächer erweist sich ihr Nutzen.

Der Service ist kostenlos, Firmen und größere Organisationen werden auf der Webseite um eine freiwillige Spende gebeten. Von Sanesecurity gibt es eine Signaturdatei mit Phishing-Patterns und eine weitere gegen Scam, also Werbung für fragwürdige Provisionsgeschäfte oder Schneeballsysteme. MSRBL erstellt ebenfalls zwei Signaturdateien, eine allgemeine Antispam-Liste und eine Pattern-Liste, die in Bildern versteckte Werbung ortet.

Sanesecurity bietet unter [4] ein Shellskript zum Download an, das per Cron zeitgesteuert die Signaturdateien aktualisiert. Es berücksichtigt dabei sowohl die Sanesecurity- als auch die MSRBL-Signaturen. Nach dem Start wartet es für eine zufällige Zeitspanne zwischen 30 Sekunden und 10 Minuten, um die Last auf den Mirror-Servern besser zu verteilen, und lädt dann alle Signaturdateien, die sich seit dem letzten Aufruf geändert haben, per Rsync in ein temporäres Verzeichnis. Von dort prüft das Skript zunächst, ob Clamav die heruntergeladenen Dateien akzeptiert, bevor es sie endgültig in Clamavs Bibliotheken-Verzeichnis kopiert und die temporären Dateien löscht. Wenn in der Clamav-Konfiguration die Option »SelfCheck« aktiviert ist, bindet es die neuen Signaturen beim Ablauf des nächsten Kontrollintervalls ein.

Domainfrei

Damit die Benutzer sich nur mit ihrem Usernamen ohne Angabe der Domäne anmelden können, kommentieren Sie in der »smb.conf«

winbind separator = +

aus und die fügen folgende Zeile hinzu:

winbind use default domain = yes

Ist der Benutzer bereits an der Domäne angemeldet, werden die Anmeldedaten direkt vom Browser an den Proxy übergeben. Andernfalls erscheint ein Pop-Up-Fenster, in dem der Benutzer zur Eingabe seines Usernamen und Passwortes aufgefordert wird.

Umlaute in Gruppennamen

Auf dem Domänencontroller dürfen Gruppennamen Umlaute enthalten. Damit Squid in einem solchen Fall nicht stolpert, muss erstens das Proxy-System UTF-8 unterstützen und zweitens das Skript »wbinfo_group.pl« geringfügig modifiziert werden:

Vorher:

        $user =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("c",hex($1))/eg;
        # test for each group squid sent in its request
        foreach $group (@groups) {
        group =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("c",hex($1))/eg;

Nacher:

        $user =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("U",hex($1))/eg;
        # test for each group squid sent in its request
        foreach $group (@groups) {
        $group =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("U",hex($1))/eg;

Infos

  1. Squid: http://www.squid-cache.org
  2. Charly Kühnast, Daniel van Siest, Squid mit Benutzeranmeldung am Proxy, Linux-Magazin-Sonderheft 03/2009, S. 96
  3. Skripte zum Artikel: http://public.zii.krzn.de/dg-skripte/
  4. Skript für Update der Signaturen: http://www.sanesecurity.co.uk/clamav/usage.htm

Der Autor

Charly Kühnast und Daniel van Soest sind System- und Netzwerkadministratoren im Rechenzentrum Niederrhein. Sie administrieren die zentrale Internet-Infrastruktur und ernähren sich von Bandbreite und Plattenplatz. Charly verbringt seine Freizeit mit Vorliebe an den Kochtöpfen, Daniel mit einer Stromgitarre in der Punkrock-Band "4 dirty 5".

comments powered by Disqus
Mehr zum Thema

ClamAV

Um Windows-Clients vor dem bösen Internet zu schützen, gibt es einige Lösungen. Dieser Artikel stellt die besten Linux-Programme dafür vor.

Artikel der Woche

Support-Ende von SMBv1

Mit dem aktuellen Update für Windows 10 und Windows Server 2016 steht eine Änderung ins Haus, die gerade für Benutzer älterer Linux-Distributionen große Auswirkungen hat. Nachdem Microsoft es über viele Jahre schon angekündigt hat, entfernt der Konzern mit dem aktuellen Update-Release den Support für das SMB-Protokoll 1. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Linux-Backup

Welche Backup-Lösung setzen Sie für Linux im professionellen Umfeld ein?

  • keine
  • eigene Scripts
  • rsnapshot
  • rdiff-backup
  • Bacula
  • Bareos
  • Borg
  • Duplicity
  • Amanda
  • Burp
  • Clonezilla
  • Acronis
  • Arkeia
  • SEP sesam
  • Veeam
  • Redo Backup
  • Relax-and-Recover
  • andere kommerzielle Software
  • andere Open-Source-Software

Google+

Ausgabe /2017

Microsite