<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.xinux.net/index.php?action=history&amp;feed=atom&amp;title=Squid_mit_Kerberos</id>
	<title>Squid mit Kerberos - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://www.xinux.net/index.php?action=history&amp;feed=atom&amp;title=Squid_mit_Kerberos"/>
	<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Squid_mit_Kerberos&amp;action=history"/>
	<updated>2026-10-21T14:41:56Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://www.xinux.net/index.php?title=Squid_mit_Kerberos&amp;diff=73802&amp;oldid=prev</id>
		<title>Thomas.will: Neue Seite (Kurs Linux - Samba)</title>
		<link rel="alternate" type="text/html" href="https://www.xinux.net/index.php?title=Squid_mit_Kerberos&amp;diff=73802&amp;oldid=prev"/>
		<updated>2026-10-18T16:46:21Z</updated>

		<summary type="html">&lt;p&gt;Neue Seite (Kurs Linux - Samba)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Kategorie:Samba]]&lt;br /&gt;
&amp;lt;!-- Ablauf: Block &amp;quot;Dienste mit Kerberos&amp;quot;, Rechner proxy --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Kurs !! Lab !! Rechner !! Domäne&lt;br /&gt;
|-&lt;br /&gt;
| [[Linux - Samba]] || [[Linux - Samba Lab]] || proxy · 10.2XX.1.33 || ad.it2XX.int&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Einfach erklärt=&lt;br /&gt;
*Ein Proxy soll wissen, '''wer''' surft, ohne dass jemand ein Passwort eintippt.&lt;br /&gt;
*Der Browser meldet sich am Proxy per '''Negotiate''' an. Dahinter steckt ein Kerberos-Ticket für '''HTTP/proxy.ad.it2XX.int'''.&lt;br /&gt;
*squid prüft das Ticket mit einem kleinen Hilfsprogramm und seiner Keytab und schreibt den Benutzernamen ins Log.&lt;br /&gt;
*Mit Gruppen aus dem AD lässt sich steuern, wer überhaupt ins Internet darf.&lt;br /&gt;
&lt;br /&gt;
=Das Wichtigste=&lt;br /&gt;
*Der Browser muss den Proxy über seinen '''Namen''' ansprechen, nicht über die IP. Sonst gibt es kein Kerberos.&lt;br /&gt;
*Der SPN '''HTTP/proxy.ad.it2XX.int''' muss beim Konto von proxy im AD stehen.&lt;br /&gt;
*Die Keytab muss für den Benutzer '''proxy''' lesbar sein, unter dem squid läuft.&lt;br /&gt;
&lt;br /&gt;
=Vorbereitung=&lt;br /&gt;
*proxy tritt der Domäne bei wie ein [[Samba Mitgliedsserver]], nur ohne Freigaben. winbind wird für die Gruppenprüfung gebraucht.&lt;br /&gt;
*In der smb.conf zwei Keytabs, eine für das System, eine für squid:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sync machine password to keytab = /etc/krb5.keytab:spn_prefixes=host:account_name:sync_spns:sync_kvno:machine_password, /etc/squid/HTTP.keytab:spn_prefixes=HTTP:sync_kvno:machine_password&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install squid&lt;br /&gt;
net ads setspn add HTTP/proxy.ad.it201.int -U administrator&lt;br /&gt;
net ads setspn list&lt;br /&gt;
net ads keytab create&lt;br /&gt;
chgrp proxy /etc/squid/HTTP.keytab&lt;br /&gt;
chmod 640 /etc/squid/HTTP.keytab&lt;br /&gt;
klist -k /etc/squid/HTTP.keytab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''net ads setspn add''' trägt den SPN im AD ein. Die Zeile in der smb.conf allein ändert im AD nichts.&lt;br /&gt;
&lt;br /&gt;
=Die squid.conf=&lt;br /&gt;
*/etc/squid/conf.d/kerberos.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -k /etc/squid/HTTP.keytab -s HTTP/proxy.ad.it201.int@AD.IT201.INT -r&lt;br /&gt;
auth_param negotiate children 10&lt;br /&gt;
auth_param negotiate keep_alive on&lt;br /&gt;
&lt;br /&gt;
external_acl_type adgruppe %LOGIN /usr/lib/squid/ext_wbinfo_group_acl&lt;br /&gt;
acl angemeldet proxy_auth REQUIRED&lt;br /&gt;
acl internet external adgruppe internet&lt;br /&gt;
&lt;br /&gt;
http_access deny !angemeldet&lt;br /&gt;
http_access allow localnet internet&lt;br /&gt;
http_access deny all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zeile !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| negotiate_kerberos_auth -k -s || Hilfsprogramm, das Tickets mit dieser Keytab und diesem SPN prüft&lt;br /&gt;
|-&lt;br /&gt;
| -r || entfernt @AD.IT201.INT aus dem Namen, im Log steht dann max&lt;br /&gt;
|-&lt;br /&gt;
| ext_wbinfo_group_acl || fragt per winbind, ob der Benutzer in einer AD-Gruppe ist&lt;br /&gt;
|-&lt;br /&gt;
| acl internet external adgruppe internet || nur Mitglieder der AD-Gruppe internet&lt;br /&gt;
|-&lt;br /&gt;
| http_access deny !angemeldet || ohne Anmeldung kein Zugriff, löst die Anmeldung aus&lt;br /&gt;
|}&lt;br /&gt;
*Die Zeilen müssen '''vor''' den http_access-Zeilen der Haupt-squid.conf stehen. conf.d wird bei Debian am Anfang eingelesen.&lt;br /&gt;
*squid -k parse&lt;br /&gt;
*systemctl restart squid&lt;br /&gt;
*Die Gruppe internet im AD anlegen und max hineinnehmen.&lt;br /&gt;
&lt;br /&gt;
=Testen=&lt;br /&gt;
==Mit curl auf lx==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
kinit max&lt;br /&gt;
curl --proxy-negotiate -U : -x http://proxy.ad.it201.int:3128 -I https://www.debian.org&lt;br /&gt;
tail -f /var/log/squid/access.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Im Log steht jetzt der Benutzer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
… 172.26.201.101 TCP_TUNNEL/200 … CONNECT www.debian.org:443 max HIER_DIRECT/…&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Im Browser==&lt;br /&gt;
*'''Firefox''': about:config, '''network.negotiate-auth.trusted-uris''' = .ad.it201.int, dazu Proxy proxy.ad.it201.int Port 3128.&lt;br /&gt;
*'''Edge und Chrome unter Windows''': Der Proxy muss in der Zone „Lokales Intranet“ liegen. Am einfachsten per Gruppenrichtlinie, dort auch den Proxy selbst verteilen.&lt;br /&gt;
&lt;br /&gt;
=Stolperfallen=&lt;br /&gt;
*'''Proxy per IP eingetragen''': Der Browser fragt nach Benutzer und Passwort oder bekommt einfach 407.&lt;br /&gt;
*'''SPN fehlt im AD''': Der Client bekommt kein Ticket, im Log von squid steht kein Name.&lt;br /&gt;
*'''Keytab nicht lesbar''': negotiate_kerberos_auth bricht ab. Im cache.log steht ein Fehler zur Keytab.&lt;br /&gt;
*'''Keytab nach Passwortwechsel''': winbind schreibt sie neu. Danach Rechte prüfen, sonst kann squid sie nicht mehr lesen.&lt;br /&gt;
*'''Reihenfolge der http_access-Zeilen''': Ein allow weiter oben lässt alle durch, bevor die Anmeldung geprüft wird.&lt;br /&gt;
&lt;br /&gt;
=Übungen=&lt;br /&gt;
==Grundübungen==&lt;br /&gt;
#Tragen Sie den SPN HTTP/proxy.ad.it2XX.int ein und erzeugen Sie die Keytab für squid.&lt;br /&gt;
#Richten Sie die Anmeldung per Negotiate ein und testen Sie mit curl von lx.&lt;br /&gt;
#Prüfen Sie im access.log, ob der Benutzername erscheint.&lt;br /&gt;
#Lassen Sie nur Mitglieder der Gruppe internet surfen. Testen Sie mit einem Benutzer außerhalb der Gruppe.&lt;br /&gt;
#Richten Sie Firefox auf lx so ein, dass er ohne Passwortabfrage durch den Proxy geht.&lt;br /&gt;
==Vertiefung==&lt;br /&gt;
#Verteilen Sie den Proxy und die Intranet-Zone per Gruppenrichtlinie an win11.&lt;br /&gt;
#Schauen Sie mit tcpdump auf proxy, was der Browser im Header Proxy-Authorization schickt.&lt;br /&gt;
#Was passiert, wenn das Ticket von max abläuft, während der Browser offen ist?&lt;br /&gt;
==Fehlersuche==&lt;br /&gt;
;1. curl bekommt immer 407 Proxy Authentication Required&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
max hat kein Ticket (klist), oder der Proxy wird per IP angesprochen, oder der SPN fehlt im AD. Mit kvno HTTP/proxy.ad.it2XX.int auf lx prüfen, ob es ein Ticket gibt.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;2. Im cache.log steht: gss_acquire_cred() failed: No credentials were supplied&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
squid kann die Keytab nicht lesen oder findet darin keinen passenden Eintrag. ls -l /etc/squid/HTTP.keytab und klist -k /etc/squid/HTTP.keytab&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;3. Die Anmeldung klappt, aber jeder darf surfen, auch ohne die Gruppe internet&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
In der Haupt-squid.conf steht vor den eigenen Regeln schon http_access allow localnet. Die Reihenfolge der Regeln prüfen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Vertiefung=&lt;br /&gt;
*https://wiki.squid-cache.org/ConfigExamples/Authenticate/Kerberos&lt;br /&gt;
*[[Kerberos für Dienste]]&lt;br /&gt;
&lt;br /&gt;
=Weiter=&lt;br /&gt;
*[[Apache mit Kerberos]]&lt;br /&gt;
*[[Linux - Samba|Zurück zur Kursseite]]&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>