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..
