Squid + ActiveDirectory Auth

Interner Link zum Forum

FreeBSD + Squid + ActiveDirectory Auth an 2003 Domäne


Worum geht es hier genau?
Ziel ist eine Zugangskontrolle auf das Internet.
Diese Zugangskontrolle soll mehrstufig erfolgen.
Vollen ugang zum Internet bekommen nur Benutzer die der höchsten Gruppe angehören.
Alle anderen Gruppen erhalten in diesem Beispiel nur Zugang auf die in der Whiteliste definierten Webseiten bzw. nur auf das Intranet.
Authentifizierung erfolgt anhand von Gruppenzugehörigkeiten im ADS - Hier ist bei der ersten Benutzung des Webbrowsers der Windows Benutzername + Windows Kennwort erforderlich.


Falls diese Seite nicht die von Ihnen erwarteten Inhalte liefert, nutzen Sie bitte das Suchformular!


Grundkonfiguration:
- Ein sauberes Squid aus den Ports inkl. ldap-auth.
- Soweit sollte die Konfiguration schon funktional sein. (Auf weitere Anpassungen und Optimierungen von Squid wird in einem der späteren Howtos eingegangen)
- Eine OU im ADS die bsp. Proxygruppe heißt.
- Je nach gewünschter Feinstufigkeit der Zugangsbeschränkungen "X" Windows-Sicherheits-Gruppen.

Bsp. folgende Gruppen
- darf-alles - ohne Einschränkung
- darf-einiges - nur Seiten die auf der Whitelist stehen
- darf-nix - nur Intranet
- Die Benutzer werden je nach Anspruch in eine der Gruppen aufgenommen. (Hab es noch nicht probiert, aber es scheint extrem doof zu sein wenn ein Benutzer Mitglied mehrerer Gruppen ist.)

Jetzt geht es es an die squid.conf

Die ganze ldap_auth abfrage ist keine Zauberei und besteht im wesentlichen aus diesen paar Zeilen.

auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hour
auth_param basic casesensitive off
auth_param basic realm Bitte Benutzername und Passwort eingeben:



auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -b "DC=<Domäne>,DC=<tld>" -D "cn=<Benutzer>,ou=<der sich>dc=<am ADS anmelden>,dc=<soll>" -w "<Passwort des Benutzers>" -f "(&(objectClass=Person)(sAMAccountName=%s)))" -u sAMAccountName -P -h <ein Globaler-Katalogserver>
external_acl_type ldapgroup ttl=2 children=12 %LOGIN /usr/local/libexec/squid/squid_ldap_group -v3 -b "DC=<Domäne>,DC=<tld>" -D "CN=<Benutzer>,DC=<der sich>,DC=<anmeldet>" -w "<Passwort des Benutzers>" -h <Domänencontroler> -f "(&(objectClass=User)(sAMAccountName=%u)(memberOf=CN=%g,OU=<Hier leigen>DC=<die>,DC=<Gruppen>))"


Hier werden die ACL deffiniert

acl erlaubt-gruppe-darf-nix dst 192.168.1.0/24
acl erlaubt-gruppe-darf-einiges dstdom_regex "/usr/local/etc/squid/darf-einiges.acl"
acl erlaubt-gruppe-darf-alles url_regex.

acl ldap-auth proxy_auth REQUIRED
acl ldapgroup-darf-nix external ldapgroup darf-nix
acl ldapgroup-darf-einiges external ldapgroup darf-einiges
acl ldapgroup-darf-alles external ldapgroup darf-alles

Hier werden die Regeln erstellt.

http_access deny !ldap-auth # Nix Auth, Nix Internet

http_access allow erlaubt-gruppe-darf-alles ldap-auth ldapgroup-darf-alles
http_access allow erlaubt-gruppe-darf-einiges ldap-auth ldapgroup-darf-alles
http_access allow erlaubt-gruppe-darf-nix ldap-auth ldapgroup-darf-alles

http_access allow erlaubt-gruppe-darf-einiges ldap-auth ldapgroup-darf-einiges
http_access allow erlaubt-gruppe-darf-nix ldap-auth ldapgroup-darf-einiges

http_access allow erlaubt-gruppe-darf-nix ldap-auth ldapgroup-darf-nix

acl all src 0.0.0.0/0.0.0.0
http_access deny all

Die reinen config-zeilen stehen auch hier in sauberer Form zum download bereit!


Ob die Regeln hier optimal sind? Keine Ahnung - Aber wenn Ihr Verbesserungsvorschläge habt, IMMER Her damit!!
Ich erhebe auch keinen Anspruch auf Vollständigkeit, aber hiermit habe ich eine funktionierende Zugangskontrolle zum Internet mit im ADS gepflegten Benutzergruppen realisiert. Und bei mir funktioniert es. ;)
Riesen Vorteil dieser Variante ist: ICH HABE KEINE DOPPELTE BENUTZERVERWALTUNG!



***-0
0: 1: 2: 3: 4: 5:



| del.icio.us | digg.com | reddit.com | ma.gnolia.com | newsvine.com | furl.net | google | yahoo | technorati.com | twitter.com |

Alles keine Zauberei, es kann so einfach (und sicher) sein !!