dimis linkdump

30 Seiten Projektarbeit in einen Blogpost zusammenfassen? Geht. Wenn man nur das ganze BWL-Gedöhns, IST- und SOLL-Zustand Zeug mal vergisst.

Ausgangsituation ist eine nackte Debian-netinst-Installation ohne Desktop-System. Darauf soll nun ein Squid, der gegenüber einem Active Directory eine Authentifizierung der Benutzer macht.

Los gehts:

Installation

Im ersten Schritt werden folgende Pakete über “apt-get install Packetname” installiert:

  • gcc
  • g++
  • make
  • ssh
  • tcpdump
  • emacs
  • psutils
  • ldap-utils

Wer ICAP braucht, also beispielsweise um einen Virenscanner zwischen zu schalten, sollte Squid an dieser stelle manuell kompilieren. Um die nötigen Helfermodule hinzuzufügen sind folgende Schalter konfigurieren nötig:

./configure –enable-icap-client –enable-basic-auth-helpers=LDAP –enable-external-acl-helpers=LDAP

Die Helfermodule werden, afaik, bei einem apt-get install squid3 mit installiert. Der ICAP-Support wird in diesem Fall aber nicht installiert. Für dieses Tutorial sollte also ein einfaches apt-get install squid3 reichen.

Squid Konfiguration

Begebt euch nun auf die Suche nach eurer squid.conf. Falls ihr keinen Prefix beim ./configure angegeben habt, lautet der Standardpfad /usr/local/squid/etc/squid.conf. Falls ihr über apt-get installiert habt, findet ihr die squid.conf unter /etc/squid/squid.conf.

In diese Datei sollten nun folgende Zeilen, natürlich ohne meine Kommentare:

Im ersten Abschnitt wird der HTTP und ICP Port eingestellt. Auf den hier angegebenen Ports wartet  Squid auf eingehende Verbindungen.

http_port 3128
icp_port 3130
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

Die Einstellungen für die Authentifizierung am Active Directory, werden in folgendem getroffen. Dazu wird das Helpermodul squid_ldap_auth genutzt. Dieses prüft ob die durch den User angegebene Username / Passwort-Kombination, im Active Directory vorhanden ist. Zusätzlich wird ein User angegeben (Username: „username“, Passwort: Passwort) der die Berechtigung hat, diese Authentifizierung durchzuführen.

An dieser Stelle wird auch der Host (also ein Domaincontroller) angegeben. (hier: 192.168.0.1)

auth_param basic program /usr/local/squid/libexec/squid_ldap_auth -R -b “dc=muster,dc=int” -D “cn=username,cn=Users,dc=muster,dc=int” -w Passwort -f sAMAccountName=%s -h 192.168.0.1 -p 3268
auth_param basic children 5
auth_param basic realm Musterblubb GmbH
auth_param basic credentialsttl 1 hour
authenticate_ttl 1 hour

Mittels squid_ldap_group wird die Gruppenzugehörigkeit im Active Directory geprüft. Gemäß den Anforderungen soll geprüft werden ob ein User in der Gruppe “Proxyuser” ist.  Falls nicht, wird der Zugriff verweigert.

external_acl_type IGruppe %LOGIN /usr/local/squid/libexec/squid_ldap_group -R -b “dc=muster,dc=int” -D “cn=Username,cn=Users,dc=muster,dc=int” -w Passwort -f “(&(objectClass=person)(sAMAccountName=%v)(memberof=cn=%a,ou=Gruppen,dc=muster,dc=int))” -h 192.168.0.1 -p 3268

Im folgenden Abschnitt werden die Zugriffsregeln (ACL) festgelegt. Für HTTP-Verbindungen sind Port 80 und 8080 erlaubt. HTTPS-Verbindungen dürfen nur über Port 443 stattfinden.

acl localnetz proxy_auth REQUIRED
acl InetAccess external IGruppe Proxyuser
acl acl_kav_GET method GET
acl all src 192.168.0.0/255.255.255.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 8080        # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 1025-65535  # unregistered ports
acl CONNECT method CONNECT

Im nächsten Abschnitt werden die vorher angelegen Zugriffsregeln umgesetzt. http_access erlaubt (allow) oder verbietet (deny) den Zugriff für eine bestimmte Zugriffsregel (ACL).

http_access allow InetAccess
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
coredump_dir /usr/local/squid/var/cache

Die Projektarbeit hatte als Ziel einen kompletten Gateway aufzubauen. D.h. auf dieser Linux-Kiste wurde zusätzlich eine Firewall über IPTables erstellt und ein Virenscanner über ICAP zwischengeschalten. Wer Fragen dazu oder zum Post hat, darf sich natürlich gerne bei mir melden.. ;)

Comments are closed.

RSS-Feed Creative Commons License