Kostenloser RADIUS-Server

Workshop - Freeradius für Linux einrichten

21.06.2011 von Thomas Hümmler
RADIUS steht für Remote Authentication Dial In User Service. Das Protokoll dient zur zentralen Authentifizierung bei Einwahlverbindungen in ein Netzwerk, die per Modem, ISDN, VPN, WLAN und DSL aufgebaut werden können. Wir zeigen Ihnen, warum Sie einen RADIUS-Server einsetzen sollten und wie Sie ihn installieren und konfigurieren.

Insgesamt 35 unterschiedliche RADIUS-Server listet die englische Wikipedia-Enzyklopädie auf. Hersteller wie Microsoft und Cisco bieten Server an oder integrieren diese in ihre Geräte. Einer der bekanntesten RADIUS-Vertreter ist Freeradius. Diesen Open-Source-Server gibt es sowohl für Linux als auch für Windows. Die Windows-Version nutzt Cygwin, um unter dem Microsoft-Betriebssystem laufen zu können. Als Download steht auf der Homepage die Version 1.1.7 zur Verfügung. Die Linux-Variante hat schon weitere Entwicklungsschritte hinter sich gebracht zurzeit ist Version 2.1.10 zu haben. Hiervon existiert keine Windows-Variante; die Betreiber von freeradius.net haben es bislang nur geschafft, 2.0.x und ältere Pakete auf Windows XP zu kompilieren.

RADIUS wird für die Authentifizierung, die Autorisierung und die Zugangssteuerung benutzt. Sehr passend wird es im Entwicklernetzwerk von Microsoft erklärt: "Ein RADIUS-Client (normalerweise ein DFÜ-Server, VPN-Server oder drahtloser Zugriffspunkt) sendet Benutzeranmeldeinformationen und Verbindungsparameter in Form einer RADIUS-Meldung an einen RADIUS-Server. Der RADIUS-Server authentifiziert und autorisiert die Anfrage des RADIUS-Clients und sendet eine RADIUS-Antwortmeldung zurück."

RADIUS-Clients senden darüber hinaus Kontoführungsmeldungen an einen RADIUS-Server. Sogenannte RADIUS-Proxys werden ebenfalls verwendet. Dieser Proxy schickt RADIUS-Meldungen zwischen RADIUS-kompatiblen Computern hin und her. Authentifizierungen im RADIUS-Protokoll werden über den UDP-Port 1812 gesendet (einige senden über den Port 1645). Der folgende UDP-Port 1813 (oder 1646) wird für die RADIUS-Kontoführungsmeldungen benutzt. Jedes Datenpaket enthält jeweils nur eine einzige RADIUS-Meldung.

RADIUS-Protokoll für Benutzer und Geräte

Das RADIUS-Protokoll existiert schon seit 1991. Es wurde von Livingston Enterprises entwickelt und zunächst an der Universität Michigan und verbundenen Instituten eingesetzt. 1997 wurde das Protokoll zu einem Internetstandard erklärt; es ist in den RFCs 2039, 2865 und 2866 beschrieben. Das Entwicklungsunternehmen hat den Quellcode veröffentlicht, und heutzutage wird RADIUS als typische Implementation für 802.1X-Netzwerkzugänge genutzt.

Eingesetzt werden RADIUS-Server daher häufig von Internet-Service-Providern oder von Hochschulen. Dort können dann mithilfe eines Authentifizierungsservers auch lokal unbekannte Teilnehmer den Netzzugang nutzen. Doch nicht nur Benutzer, auch Geräte können sich per RADIUS im Netzwerk identifizieren. Benutzer wie Geräte werden in der Fachsprache als Supplicant tituliert, die über einen Authenticator - quasi einen Türsteher - eine Verbindung mit dem Netzwerk oder Einlass begehren.

Der Authenticator ist oft ein 802.1X-fähiger Netzwerk-Switch, ein Router oder ein WLAN-Access-Point. Er erfragt mithilfe von PAP-, CHAP- oder EAP-Authentikation die Legitimation bei einem Authentication -erver, in diesem Fall einem RADIUS-Server. Der sendet als Antwort zurück: Zugang gewährt, Zugang verboten oder "Weitere Daten erforderlich". Wird der Zugriff gewährt, prüft der RADIUS-Server oft noch, auf welche Ressourcen ein Benutzer zugreifen darf - etwa das VPN oder nur das interne WLAN. Passwörter werden dabei nicht im Klartext übertragen, sondern mittels eines MD5-Hash-Algorithmus. Allerdings wird das nicht als starker Schutz betrachtet, weshalb zusätzliche Methoden wie beispielsweise IPsec-Tunnel benutzt werden.

RADIUS-Server prüfen die Benutzerdaten zum Beispiel mithilfe von Textdateien, LDAP-Servern oder SQL-Datenbanken. Wie lange RADIUS allerdings noch das Protokoll der Wahl ist, ist fraglich. Mit Diameter steht schon der Nachfolger fest. Als Transport-Layer nutzt es das Stream Control Transmission Protocol (SCTP) oder das ähnliche TCP.

Freeradius unter Linux installieren

Von Freeradius gibt es für verschiedene Linux-Derivate bereits vorgefertigte Pakete, ebenso für Mac OS, BSD und Windows. In den verschiedenen Linux-Versionen sind meist mehrere Pakete für unterschiedliche Aufgaben enthalten: In Ubuntu etwa wird das eigentliche Paket freeradius flankiert von Paketen mit Modulen für iODBC, LDAP, PostgreSQL, MySQL und Kerberos; standardmäßig unterstützt Freeradius bereits das Systempasswort, PAM und Textdateien mit Anmeldeinformationen.

Im Paket freeradius-dialupadmin stehen PHP-Skripte mit einer web-basierten Schnittstelle, um einen Freeradius-Server zu administrieren, der die Anmeldeinformationen entweder in SQL oder in LDAP speichert. Das Paket freeradius-utils schließlich enthält verschiedene Programme für RADIUS-Clients wie radclient und radeapclient , radsniff , radwho und smbencrypt . Mit dem Befehl

sudo apt-get install freeradius

werden der Freeradius-Server und die Utilities installiert. Das Installationsskript legt den Benutzer freerad an und fügt diesen den Gruppen shadow und ssl-cert hinzu. Anschließend werden die SSL-Zertifikatseinstellungen aktualisiert und ein SSL-Schlüssel erzeugt. Mit dem Hinweis

* Starting FreeRADIUS daemon freeradius [ OK ]

schließt das Installationsskript nach erfolgreichem Start des Servers ab.

Um zu prüfen, ob der RADIUS-Server korrekt läuft, starten Sie den Server mit dem Parameter -C:

sudo freeradius -C

Check: Auf 350 Zeilen zeigt die Ausgabe des Befehls "freeradius -XC", welche Module geprüft und welche nicht geprüft werden. Die letzte Zeile deutet in dem Fall darauf hin, dass die Konfiguration korrekt sein könnte.

Mit dem Kommando überprüfen Sie die Konfiguration. Wird der Befehl ohne weitere Ausgaben und Meldungen beendet, deutet das darauf hin, dass die Konfiguration vermutlich korrekt ist - sie muss es allerdings nicht sein, da nicht alle Eventualitäten geprüft werden. Wenn Sie wissen wollen, welche Module auf korrekte Konfiguration überprüft werden, benutzen Sie stattdessen die Parameter "-XC". Der Parameter "-X" schaltet in den Debug-Modus. Im Zusammenspiel mit "-C" erfahren Sie so auch, welche Module nicht überprüft werden.

Freeradius konfigurieren

Die Konfigurationsdaten des Freeradius-Servers stehen üblicherweise unter /etc/raddb. In Ubuntu und Debian finden Sie diese Dateien im Verzeichnis /etc/freeradius. Beachten Sie, dass Sie die Inhalte des Verzeichnisses nur als root sehen können; auf einer Konsole in Ubuntu wechseln Sie zur root-Identität mit dem Befehl sudo su und Ihrem Passwort. Im Konfigurationsverzeichnis sucht der Server nach Dateien wie dem Wörterbuch und den Benutzerdaten. Auch die 800 Zeilen lange und gut dokumentierte Hauptkonfigurationsdatei radiusd.conf ist dort zu finden.

Lauschprotokoll: Auf welchen Ports Freeradius horcht, steht in der Datei /etc/services. Mit dem Befehl "less /etc/services | grep radius" erhalten Sie sofort die gewünschten Informationen.

Auf welchen Ports Freeradius horcht, steht in der Datei /etc/services. Wie oben erwähnt, sind das standardmäßig die Ports 1812 und 1813; auch der Freeradius-Server macht hier keine Ausnahme. Der Port 1813 dient dabei für die Accounting-/Konto-Informationen. Dass der Server die Information über die Ports aus der Datei /etc/services bezieht, liegt an der Einstellung der Direktive in der Datei /etc/freeradius/radiusd.conf: Da steht port = 0, und das bedeutet, dass die Einstellungen aus der /etc/services geholt werden sollen.

Geordnet: Unter Debian und Ubuntu stehen die Konfigurationsdateien von Freeradius im Verzeichnis /etc/freeradius.

Den Port können Sie auch manuell mit dem Parameter -p PORT festlegen. In dem Fall wird die Direktive in der Konfigurationsdatei /etc/raddb/radiusd.conf ignoriert. Wenn Sie allerdings den Port manuell festlegen, müssen Sie noch mit -i IP-ADRESSE die IP-Adresse angeben, die der Server nutzt, also etwa:

freeradius -p 1645 -i 192.168.3.4

Freeradius mit virtuellen Servern

Freeradius kann auch mit virtuellen Servern umgehen. Das hat den Vorteil, dass RADIUS-Anfragen nur an den betroffenen Server geleitet werden. Wollen Sie virtuelle Server neu definieren, dann legen Sie pro virtuellen Server eine Datei im Verzeichnis /etc/freeradius/sites-enabled/ an. Die sieht ähnlich aus wie das folgende Beispiel:

server foo {

listen {

ipaddr = 127.0.0.1

port = 2000

type = auth

}

authorize {

update control {

Cleartext-Password := "bob"

}

pap

}

authenticate {

pap

}

}

Wenn Sie danach in einen Terminal den Befehl

$ radtest bob bob localhost:2000 0 testing123

eingeben, sollte Ihnen der Server den Zugang gewähren. Ein Tipp zum Schluss: Sehen Sie sich alle Dateien im Verzeichnis /etc/freeradius und darunter genau an. Sie enthalten wertvolle Informationen zum Einrichten des RADIUS-Servers. Ziehen Sie außerdem das Howto, die Dokumentation und die FAQ auf der Freeradius-Homepage zurate. (cvi)