Squid Proxy unter Debian mit Kerberos Authentifizierung

In diesem Artikel wird beschrieben, wie man einen Squid Proxy einrichtet, der bei der Authentifizierung auf Kerberos zurück greift und die Benutzer am vorhandenen Active Directory authentifiziert. Das ist vor allem für Computer ab Windows 7 ratsam, da NTLM als Authentifizierungsmechanismus nicht mehr länger unterstützt wird – es sei denn man ändert die lokales Richtlinien.

Genutzt wird in dieser Konstellation ein Debain 8 als Betriebssystem und eine Windows Server 2008 R2 Domäne.

Im Internet Explorer muss die Option “Integrierte Windows-Authentifizierung aktivieren” gesetzt sein.

DNS Konfiguration

Die folgenden Schritte sind nur notwendig, falls sie nicht über den DHCP Server verteilt werden.

Installation dnsutils: apt-get install dnsutils

Im DNS Server muss ein neuer A-Record sowie der zugehörige PTR Eintrag erstellt werden.

Die Datei “/etc/resolv.conf” muss dementsprechend angepasst werden:

search example.local
nameserver 192.168.0.1
nameserver 192.168.0.2

Zur Überprüfung kann man nun das System pingen:

ping domaincontroller1.example.local -c 4

Und die zugehörige Rückwärtssuche durchführen:

dig -x 192.168.0.1

[fusion_builder_container hundred_percent=”yes” overflow=”visible”][fusion_builder_row][fusion_builder_column type=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”no” center_content=”no” min_height=”none”][fusion_alert type=”general” accent_color=”#000000″ background_color=”#eeee22″ border_size=”1px” icon=”fa-exclamation-triangle” box_shadow=”yes” animation_type=”0″ animation_direction=”down” animation_speed=”0.1″ animation_offset=”” class=”” id=””]Macht hier nicht weiter, solange die DNS Auflösung nicht funktioniert, da die Proxy Authentifizierung sonst fehlschlagen wird! Auch bei der späteren Konfiguration der Browser muss der DNS Name des Proxys genutzt werden![/fusion_alert]

NTP Konfiguration

Installtion der Pakete:

apt-get install ntp

Da der Proxy einen synchronisierten Zeitstempel mit dem Active Directory benötigt, muss er die Zeit mit dem Domain Controller synchronisieren.

Dazu wird die Datei “/etc/ntp.conf” bearbeitet:

# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example

# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will
# pick a different set every time it starts up. Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
server domaincontroller1.example.local
server server2.example.local

Nun wird der Dienst neu gestartet und getestet.

service ntp restart
ntpq -p

Kerberos Konfiguration

Installation der Pakete:

apt-get install krb5-user libkrb5-3

Einrichten von Kerberos

cp /etc/krb5.conf /etc/krb5.conf_bak
cat /dev/null > /etc/krb5.conf
nano /etc/krb5.conf

Datei anpassen:
[/fusion_builder_column][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][libdefaults]
default_realm = EXAMPLE.LOCAL
dns_lookup_kdc = no
dns_lookup_realm = no
ticket_lifetime = 24h
default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
[realms]
EXAMPLE.LOCAL = {
kdc = domaincontroller1.example.local
kdc = server2.example.local
admin_server = domaincontroller1.example.local
default_domain = example.local
}
[domain_realm]
.example.local = EXAMPLE.LOCAL
example.local = EXAMPLE.LOCAL

Testen:

kinit Administrator@EXAMPLE.LOCAL
klist

kinit-klist

Squid installieren

Pakete installieren:

apt-get install squid3

Konfiguriert wird später

User aus der Domäne für die Kerberos Authentifizierung vorbereiten

Damit Squid in der Lage ist, an der Domäne zu authentifizieren, muss er darauf zugreifen können.

Dazu wird ein neuer Benutzer angelegt, bei dem in den Account Optionen “Keine Kerberos-Präauthentifizierung erforderlich” angeklickt werden muss.

Dann öffnet man die CMD mit folgendem Befehl:

ktpass -princ HTTP/proxyserver.example.local@EXAMPLE.LOCAL -mapuser squid@EXAMPLE.LOCAL -crypto rc4-hmac-nt -pass Passw0rd -ptype KRB5_NT_PRINCIPAL -out krb5.keytab

ktpass

Die erstellte Keytab wird anschließend auf den Proxy unter “/etc/krb5.keytab” kopiert (oder wohin man auch möchte).

Nun kann getestet werden, ob man ein TGT from DC bekommt:

kinit -V -k -t /etc/krb5.keytab HTTP/proxyserver.example.local@EXAMPLE.LOCAL

kinit

Jetzt wird die Datei noch dem Squid Benutzer zugeteilt.

chown proxy:proxy /etc/krb5.keytab && chmod 644 /etc/krb5.keytab

Konfiguration Squid

Um Squid die Keytab bekannt zu machen, wird folgende Datei angelegt, die den Pfad in eine Umgebungsvariable schreibt:

nano /etc/default/squid3

KRB5_KTNAME=/etc/squid3/PROXY.keytab
export KRB5_KTNAME

Einstellen der Squid Config

####### /etc/squid3/squid.conf Configuration File #######
http_port 8080
####### cache manager
cache_mgr administrator@example.local
####### kerberos authentication
auth_param negotiate program /usr/lib/squid3/negotiate_kerberos_auth -s HTTP/proxyserver.example.local@EXAMPLE.LOCAL
auth_param negotiate children 20 startup=0 idle=1
auth_param negotiate keep_alive off

acl auth proxy_auth REQUIRED

http_access deny !auth
http_access allow auth
http_access deny all

Testen

Hinterlegen der Proxysetting im Internet Explorer

Internet Explorer Proxyeinstellungen

[fusion_alert type=”general” accent_color=”#000000″ background_color=”#eeee22″ border_size=”1px” icon=”fa-exclamation-triangle” box_shadow=”yes” animation_type=”0″ animation_direction=”down” animation_speed=”0.1″ animation_offset=”” class=”” id=””]Hier unbedingt den Namen des Proxyservers eingeben und nicht die IP![/fusion_alert]

Nun kann man beliebige Seiten aufrufen und im access.log des Proxyservers nachverfolgen, was er tut:

access-log[/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s