Ubuntu 14.04 - 16.04 - 18.04 - 20.04 LTS Server - Freeradius mit AD-Anbindung

looser27
Goto Top
Nachfolgende Anleitung kann auch auf 20.04 mit Freeradius 3 umgesetzt werden. Lediglich die Verzeichnisse variieren geringfügig.

Nachdem ich mich durch viele Anleitungen gewühlt habe und dank aqui (an dieser Stelle vielen Dank für Deinen unermüdlichen Einsatz bei der Fehlersuche!) das System zum Laufen gebracht habe, fasse ich diese Anleitungen zusammen, um es Nachahmern zu vereinfachen.

1. Vorbereitungen
1.1 Ubuntu Server
Man installiert einen Ubuntu 14.04 LTS Server mit folgenden Modifikationen:
- bei der Einrichtung des Netzwerkes die DHCP Abfrage abbrechen und statt dessen die entsprechenden Werte manuell eintragen
- es wird nur das OpenSSH-Paket installiert (damit man bequem per putty weiter arbeiten kann)

1.2 Windows Server
- Host-Eintrag im DNS für den Ubuntu-Server anlegen (Reverse-Eintrag prüfen)

Beide Systeme müssen sich über den Hostnamen anpingen lassen, sonst klappen die weiteren Schritte nicht!

2. Ubuntu Server in Windows Domain aufnehmen
Alle folgenden Befehle werden als su ausgeführt.
Der Einfachheit halber einmal


2.1 Installation der benötigten Pakete

2.1.1 Dienste beenden

2.2 /etc/ntp.conf bearbeiten
Im Bereich der Server habe ich alle auskommentiert und meinen domain-internen NTP eingetragen:

Die folgenden Schritte habe ich aus der Anleitung von spacyfreak 1:1 übernommen:

2.2.1 ntpdate

2.2.2 NTP Dienst starten

2.2.3 Zeitsynchronisation testen

2.3 /etc/samba/smb.conf
Um immer auf die Original-Datei zurückgreifen zu können, empfiehlt es sich, immer VOR der ersten Änderung eine Sicherung der Datei anzulegen.
Die geht mit

Anschließend habe ich die smb.conf gelöscht und eine neue mit folgendem Inhalt angelegt:

2.4 /etc/nsswitch.conf

2.5 /etc/krb5.conf

2.6 In Domain aufnehmen

2.7 Dienste starten

2.8 Funktionstest

2.9 Server neustart und Dienste automatisch starten lassen

3. Freeradius
Bevor man anfängt, die Konfiguration vorzunehmen ein paar Anmerkungen:
Die Sicherungen der Dateien

/etc/freeradius/eap.conf
/etc/freeradius/modules/mschap
/etc/freeradius/modules/ntlm_auth
/etc/freeradius/sites-enabled/default
/etc/freeradius/sites-enabled/inner-tunnel
/etc/freeradius/users
/ets/freeradius/clients.conf

am einfachsten nach /home/USERNAME legen. Ich habe feststellen müssen, dass der Freereadius sich trotz .bak-Endung zumindest bei der mschap.bak bedient, obwohl das nur die Sicherung war.

3.1 Zertifikate erstellen
Die Zertifikate liegen unter Ubuntu hier:

Es werden folgende Dateien editiert
ca.cnf
server.cnf
client.cnf

Die Einträge müssen für alle 3 identisch sein.
Das input_/output_password wird im späteren noch benötigt.


Nachdem alle 3 Dateien entsprechend angepasst wurden erzeugt ein


die benötigten Zertifikate.
Wer noch ein Client-Zertifikat benötigt erhalt das mit

3.2 Kopieren der Zertifikate in den Freeradius:

Damit hat dann auch der Freeradius Zugriff auf die Zertifikate.

3.3 /etc/freeradius/clients.conf

Der Rest bleibt unverändert.

3.4 /etc/freeradius/eap.conf
Der Rest bleibt unverändert.

3.5 /etc/freeradius/modules/mschap
Der Rest bleibt unverändert.

3.6 /etc/freeradius/modules/ntlm_auth
Der Rest bleibt unverändert.

Möchte man hingegen die zugelassenen User auf eine Gruppe, z.B. "WLAN", beschränken dann sieht die Zeile wie folgt aus:

ACHTUNG: Unter Ubuntu 20.04. bitte folgende Zeile nutzen:

In der Angabe der Usergruppe der Domain ist nur noch ein "\" erforderlich!

3.7 /etc/freeradius/sites-enabled/default
Der Rest bleibt unverändert.

3.8 /etc/freeradius/sites-enabled/inner-tunnel
Der Rest bleibt unverändert.

3.9 /etc/freeradius/users
Der Rest bleibt unverändert.

4. Testen
Den Freeradius am sinnvollsten mit

starten. Dann sieht man sofort, wo es kneift.
Wenn alles korrekt ist, zeigt er in der letzten Zeile an, auf welchem Port er auf eingehende Anfragen wartet:

Jetzt kann man mit dem Tool NTRadPing die Verbindung testen.
ACHTUNG: Das Häkchen bei CHAP nicht(!) setzen.

5. Restarbeiten
Damit die winbind Abfrage erfolgreich ist, müssen noch ein paar Rechte verändert werden.

Der automatische Start von Freeradius nach einem Bootvorgang unter Ubuntu 20.04 erfordert dann noch ein

Quellen:
Sichere 802.1x WLAN-Benutzer Authentisierung über Radius
Netzwerk Management Server mit Raspberry Pi
Debian Linux in eine Active Directory Domäne integrieren
http://deployingradius.com/documents/configuration/active_directory.htm ...
http://xenomorph.net/linux/samba/issues/exec-program-output-reading-win ...

Content-Key: 265775

Url: https://administrator.de/contentid/265775

Ausgedruckt am: 30.06.2022 um 20:06 Uhr

Mitglied: Looser27
Looser27 01.07.2016 um 13:48:29 Uhr
Goto Top
Ich habe die Anleitung heute auf einem Ubuntu 16.04. LTS System ohne Änderungen so umgesetzt, d.h. die Anleitung kann auch für das aktuelle Release übernommen werden.
Mitglied: Ch3p4cK
Ch3p4cK 12.09.2016 um 14:17:41 Uhr
Goto Top
Hallo,

ich habe die Anleitung unter 14.04 LTS benutzt und lief bisher ohne Probleme.
Heute habe ich probiert ein Release Upgrade auf 16.04 LTS zu machen. Leider authentifizieren sich nun Windows Clients nicht mehr mit dem Radius.


Irgendjemand eine Idee?


Gruß
Ch3p
Mitglied: Looser27
Looser27 12.09.2016 um 20:34:18 Uhr
Goto Top
Alle Einstellungen noch mal geprüfte?
Programme alle upgedatet?
Mitglied: Ch3p4cK
Ch3p4cK 13.09.2016 um 17:29:57 Uhr
Goto Top
Klar alles nochmal durchgegangen. Alle Updates sind gemacht. Beim Updaten natürlich gesagt, dass er die alte Konfig behalten soll.
Das Problem ist nur der Windows Client. Mit Android und iOS geht die Authentifizierung noch ohne Probleme.
Mitglied: Looser27
Looser27 13.09.2016 um 20:26:42 Uhr
Goto Top
Neues Zertifikat verteilt für die Windows Clients?
Mitglied: tellihow
tellihow 18.10.2016 um 16:08:54 Uhr
Goto Top
Beim joinen in meine Domäne wird folgender Fehler ausgespuckt!

gss_init_sec_context failed with [Miscellaneous failure (see text): Message stream modified]
kinit succeeded but ads_sasl_spengo_gensec_bind (KRB5) failed: An internal error occurred.
Failer to join domain: failed to connect to AD: An internal error occured.


Meine Testumgebung:

Windows Server 2012 R2
AD Rolle --> Domäne hot.spot
DNS Rolle --> nslookup kann vorwärts und rückwärts auflösen auf beiden systemen

• der NETBIOS Name ist PROJEKT-13
• der Workgroup Name ist HOT
• der DNS Name ist PROJEKT-13.HOT.SPOT.
• der Kerberos Realm ist HOT.SPOT.
• der Domänen-Name ist "HOT.SPOT.

IP: 192.168.1.1
gateway: 192.168.1.254
dns: 192.168.1.1

IPCop
Firelwall
DHCP
Router
Rote/Grüne Schnittstelle
Grüne Schnittstelle: 192.168.1.254

Bananapi mit Ubuntu 16.04 mate

Hier soll demnächst der Freeradius-Server laufen und eine Authentifizierung über Active Directory ermöglichen. Die Anleitung habe ich schon mehr als 5 mal befolgt und dabei immer den Ubuntu neu aufgesetzt. Ich bekomme einfach diese Fehlermeldung nicht weg.

- nslookup Auflösung vorwärts wie rückwärts kein Problem
- Zeitsynchronisation funktioniert einwandfrei
- alle vorgegebene Pakte wurden installiert und nach der Anleitung konfiguriert

Hier Auszüge :

smb.conf

[global]

workgroup = HOT
real = HOT.SPOT
netbios name = PROJEKT-13
security = ADS
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
winbind use default domain = yes

krb5.conf

[libdefaults]
default_realm = HOT.SPOT
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true

[realms]
HOT.SPOT = {
kdc = projekt-13.hot.spot
admin_server = projekt-13.hot.spot
}
[domain_realm]
.hot.spot = HOT.SPOT
[login]
krb4_convert = true
krb4_get_tickets =false

nsswitch.conf

diese habe ich aufjedenfall genau so hier stehen wie in der Anleitung beschrieben wurde

Ich habe aufjedenfall eine Verbindung zum DC. Mein Bananapi wird im AD im Bereich Computer aufgeführt. Ich hänge die ganzen Zeit wegen der oben genannten Fehlermeldung fest. Ich hoffe mir wird geholfen. Meine Prüfung naht und ich komme so langsam ins schwitzen.

Gruß Tellihow
chrysanthemum
Mitglied: Looser27
Looser27 18.10.2016 aktualisiert um 17:58:26 Uhr
Goto Top
Hast du, wie geschrieben den DNS Eintrag vor dem join auf dem Server manuell angelegt?

Keine Firewall regeln zwischen Radius und Server aktiv?
Mitglied: tellihow
tellihow 18.10.2016 um 19:44:48 Uhr
Goto Top
Zitat von @Looser27:

Hast du, wie geschrieben den DNS Eintrag vor dem join auf dem Server manuell angelegt?
DNS Eintrag habe ich manuell in /etc/network/inerfaces angelegt. In der resolv.conf wurde dann der DNS Eintrag übernommen. Diese habe ich dann auf search hot.spot und domain hot.spot erweitert. So wie in der Anleitung vorgegeben.

Zitat von @Looser27:
Keine Firewall regeln zwischen Radius und Server aktiv?
Also bei meinem Windows Server habe ich die Firewall ausgemacht (nur während der Testumgebung). Mein IPCop hat zwar eine Firewall, die aber mein vorhaben nicht stören sollte, da er als Router eingesetzt wird.

Leider habe ich keinen Ansatz wie ich das ganze jetzt lösen soll. Tage lang das große G benutzt, aber nichts gefunden was mir weiterhelfen könnte. Ist vielleicht die Samba version Schuld?
Mitglied: Looser27
Looser27 18.10.2016 um 19:57:42 Uhr
Goto Top
Missverständnis. Auf dem DC muss der Linux Server VOR dem Join eingetragen werden.
Lies die Anleitung einfach nochmal. Sie funktioniert 100%ig.
Mitglied: tellihow
tellihow 18.10.2016 um 20:38:04 Uhr
Goto Top
1.2 Windows Server
- Host-Eintrag im DNS für den Ubuntu-Server anlegen (Reverse-Eintrag prüfen)

diesen punkt habe ich wahrscheinlich nicht richtig gemacht. wo genau muss ich den eintrag machen? meinst du eintrag bei Neue Zone, dann Zeiger einrichten und dann den HOST einfügen? ich hoffe das klappt morgen :-) face-smile
Mitglied: Looser27
Looser27 18.10.2016 um 20:42:48 Uhr
Goto Top
Du legst den Eintrag im DNS des DC an.
Anschließend noch den reverse Eintrag prüfen.
Mitglied: tellihow
tellihow 18.10.2016 um 21:13:59 Uhr
Goto Top
ok.probiere es morgen direkt mal aus. geben aufjedenfall ein feedback. danke dir schon mal!
Mitglied: tellihow
tellihow 19.10.2016 um 14:04:49 Uhr
Goto Top
Juhu. Mein Radiusserver habe ich jetzt zum laufen gebracht. Vielen Dank für den Tipp!

Jetzt brauch ich nur noch einen WPA2 Enterprise fähigen Access Point........
Mitglied: Looser27
Looser27 19.10.2016 um 14:09:31 Uhr
Goto Top
Günstig und gut sind die Unify-APs.
Mitglied: tellihow
tellihow 19.10.2016 um 15:51:37 Uhr
Goto Top
Vielen Dank.

Habe da meine eine Verständnisfrage. Müssen alle APs von mir WPA2 Enterprise können, oder reicht mir einer als "Hauptverwalter" der mit dem Radius-Server kommuniziert. Da ich noch kein AP habe, kann ich das irgendwie nicht nachvollziehen. Ich muss nämlich eine Schule mit WLAN Ausleuchten und bevor ich blödsinn kaufe, frag ich mal lieber nach :-) face-smile
Mitglied: Looser27
Looser27 19.10.2016 um 16:11:48 Uhr
Goto Top
Alle APs müssen das können. Unify ist hier super, weil einfach zu administrieren und laufen sehr stabil. Als Controller reicht ein Linux oder Windows Server.
Mitglied: tellihow
tellihow 19.10.2016 um 16:32:01 Uhr
Goto Top
1000 Dank...Du hast mir sehr geholfen!
Mitglied: Ch3p4cK
Ch3p4cK 23.11.2016 um 14:51:10 Uhr
Goto Top
hab leider jetzt erst Zeit mich nochmal mit dem Thema zu befassen.
Wieso neues Zertifikat? Ich hab am Zertifikat doch nichts geändert.
Mitglied: Looser27
Looser27 23.11.2016 um 14:56:30 Uhr
Goto Top
Du hast doch ein Upgrade gemacht? Bei ner frischen 16.04 Installation geht es ohne Probleme.
Starte den Radius mal im Debug Mode und melde dann einen Windows Client an. Dann solltest du sehen, wo es kneift.

Gruß Looser
Mitglied: Ch3p4cK
Ch3p4cK 23.11.2016 um 15:12:13 Uhr
Goto Top
Ja aber zum Glück vorher auch ein Snapshot der VM. Habe halt ein Rollback gemacht. Heute nochmal das Upgrade und wieder der gleiche Fehler wie oben schon beschrieben.

Ich weiß auch gerade nicht so recht was das Upgrade mit dem Zertifikat, das ja dann immernoch unter /etc/freeradius/certs liegt und gültig ist, zu tun haben soll. Daran ändert sich ja nichts. Zumal sich auch wirklich nur die Windows Clients dran stören.

Unter dem Link, in der Fehlermeldung, steht irgendwas, dass Windows im Server Zertifikat bestimmte OIDs braucht. Wie ich diese aber zu meinem Zertifikat hinzufüge, hab ich auch noch nicht so richtig kapiert.


Gruß
Ch3p
Mitglied: Looser27
Looser27 23.11.2016 um 18:21:31 Uhr
Goto Top
Setz den Radius doch fix neu auf mit der 16.04 Lts.
Mitglied: Ch3p4cK
Ch3p4cK 24.11.2016 um 10:17:32 Uhr
Goto Top
ja werd ich wohl tun müssen... das Problem ist, dass auf der Kiste bisschen mehr läuft als nur der Radius...


Gruß
Ch3p
Mitglied: Looser27
Looser27 24.11.2016 um 10:33:19 Uhr
Goto Top
Dann bau den Radius in ner separaten VM neu. Wenn der dann live geht, schaltest Du den alten ab.
Mitglied: tellihow
tellihow 15.12.2016 um 13:53:34 Uhr
Goto Top
Guten Tag, da bin ich wieder!

Wie schon berichtet, läuft mein Radius Server. Allerdings können sich nur Android Benutzer problemlos verbinden. Probleme habe ich mit iOS und Windows Clients. Das Zertifikat "ca.der" wurde auf allen Clients installiert. Bei der Eingabe des Benutzernamen und Passwortes erscheint die Meldung " Der Benutzername oder das Passwort ist falsch". Wie schon erwähnt, bei Eingabe derselben Daten auf einem Android Smartphone klappt alles wunderbar! Beim einloggen mit einem Iphone wird im Debug Mode folgendes ausgegeben:

Info: mschap EXEC: FAILED to execute /path/to/ntlm_auth: No such file or directory

Vielleicht kann das irgendwie helfen. Ich wüsste jetzt nicht, welche Informationen ich noch posten könnte für die Fehlersuche. Für weitere Infos stehe ich gerne zur Verfügung.

Gruß

Tellihow
Mitglied: Looser27
Looser27 15.12.2016 um 14:16:22 Uhr
Goto Top
Du gibst das falsche Zertifikat weiter. Das korrekte Zertifikat hat die Dateiendung *.cer
Mitglied: tellihow
tellihow 16.12.2016 um 11:05:53 Uhr
Goto Top
OK, habe jetzt das " server.cer" Zertifikat installiert. Beim anmelden kommt folgende Fehlermeldung...

https://www.administrator.de/images/c/1/4/055a4fa922f0962127bae48c1710a0 ...

NPS? Das brauche ich doch nur, wenn der Windows Server eine RADIUS Rolle übernimmt...?

Naja, jetzt ist erstmal Wochenende angesagt. Ab Montag gehe ich wieder da dran.

Schönes Wochenende

Gruß Tellihow
fehlermeldung
Mitglied: Looser27
Looser27 16.12.2016 um 11:42:10 Uhr
Goto Top
Wahrscheinlich den falschen Speicher ausgewählt. Hierist eine Anleitung, die das schön beschreibt.
Mitglied: tellihow
tellihow 10.01.2017 um 08:41:00 Uhr
Goto Top
OK, habe die Verschlüsselung von md5 auf peap umgestellt. Jetzt läuft mein Moped!. Danke an Looser27 nochmal :-) face-smile
Mitglied: BinaryBear
BinaryBear 16.12.2017 um 20:36:52 Uhr
Goto Top
Unter Debian 9.2 scheint das nicht mehr so zu funktionieren!
Unter 8 ging es damals noch

Ich habe nun die Fehlermeldung im Freeradius-Log: (0)

Nachdem ich die Berechtigungen auf Winbind eingeräumt habe (siehe 5. Restarbeiten) bekomme ich nun:

Merkwürdig ist auch, dass Samba so beim Neustart nicht mitstartet und ich es erst via
starten muss... Ist hier der Hund begraben?
Mitglied: Looser27
Looser27 16.12.2017 um 20:42:19 Uhr
Goto Top
Unter 2.9 steht auch, dass samba automatisch gestartet werden muss.
Also ja, samba beim Boot starten und dann funktioniert auch die Authentifizierung gegen das AD.
Mitglied: BinaryBear
BinaryBear 16.12.2017 um 22:13:33 Uhr
Goto Top
Dann checke ich nicht wieso das selbst nach dem manuellen Starten nicht funktioniert.
Ich hatte den gleichen Aufbau damals unter Debian 8 durchgeführt...

Ich habe auch damals statt dem Einbinden in ein bestehendes ein neues mit dem Samba-Tool erzeugt, welches so auch wunderbar funktioniert, bis auf die Integration des Freeradius. Die Authentifizierung ohne mschap via radtest funktioniert, aber mit mschap gibt es halt Probleme.


Interessant ist, dass eine Authentifizierung via
und passendem Passwort funktioniert, jedoch nicht mit
.
Da kommt dann:

Meine Samba-Config
Mitglied: Looser27
Looser27 17.12.2017 um 12:48:09 Uhr
Goto Top
Die Authentifizierung ist dabei immer ohne chap (vgl. Kapitel 4 unten).