Zwei-Faktor-Authentifizierung · 6 min read · Dec 28, 2025
SSH konfigurieren, um Freeradius und WiKID für die Zwei-Faktor-Authentifizierung zu verwenden
SSH konfigurieren, um Freeradius und WiKID für die Zwei-Faktor-Authentifizierung zu verwenden
Radius ist ein großartiger Standard. Er ist leistungsstark genug, um eine Menge zu erreichen, und einfach genug, um leicht zu handhaben zu sein. Freeradius ist ein ausgezeichneter, Open-Source-Radius-Server, der mit vielen Linux-Varianten geliefert wird. Er ist gut dokumentiert und gut unterstützt. Der WiKID Strong Authentication-Server ist ein kommerzielles/Open-Source-Zwei-Faktor-Authentifizierungssystem, das öffentliche Schlüsselverschlüsselung verwendet, um PINs und Einmalpasswörter sicher an Software-Token zu übertragen, die auf Blackberries, Mobiltelefonen, Palms, PocketPCs oder, unter Verwendung des J2SE-Clients, Linux, Macs und Windows-PCs ausgeführt werden. Man kann sich WiKID wie Zertifikate vorstellen, jedoch ohne die Probleme von Weiß- und Schwarze Listen und sicherer - da die PIN auf dem Server validiert wird, was Offline-Brute-Force-Angriffe verhindert.
Unternehmen, die Anforderungen wie PCI-DSS oder HIPAA erfüllen müssen, müssen möglicherweise ihre Netzwerke mit Zwei-Faktor-Authentifizierung und streng kontrolliertem Zugang sichern. Die Kombination von Freeradius und WiKID ist eine äußerst kosteneffektive Möglichkeit, dies zu erreichen.
In diesem Beispiel installiere ich Freeradius auf Fedora Core 7 und führe die 3.0RC2-RPMs von WiKID auf Centos5 aus (die gleichen Anweisungen funktionieren jedoch auch für die 2.0-Version von WiKID). Wir werden mit SSH testen, jedoch sollte dasselbe Setup auch für Apache, WebDAV, OpenVPN und jede andere Anwendung funktionieren, die PAM unterstützt.
Installation und Konfiguration von Freeradius
Egal, welche Linux-Variante Sie verwenden, es gibt wahrscheinlich ein Paket für Freeradius. Für Fedora ist die Installation über Yum einfach:
yum install freeradius
Die Konfiguration von Freeradius ist ziemlich unkompliziert. Es gibt viele Optionen. Der Schlüssel ist, nur die minimalen Elemente zu ändern, die Sie verstehen. Die Standardeinstellungen funktionieren, also machen Sie kleine Änderungen und testen Sie diese. Wir werden drei Dateien ändern. Die Datei /etc/raddb/clients.conf sagt Freeradius, welche Clients akzeptiert werden sollen. Die proxy.conf-Datei sagt Freeradius, dass die Authentifizierungspakete an den WiKID-Server gesendet werden sollen, und die radiusd.conf-Datei konfiguriert den Haupt-Freeradius-Server.
Zuerst bearbeiten Sie die Datei /etc/raddb/clients.conf:
vi /etc/raddb/clients.conf
client 127.0.0.1 {
secret = shared_secret
shortname = localhost
nastype = other
}Alles, was Sie vorerst ändern müssen, ist das gemeinsame Geheimnis, da wir uns zu Testzwecken über SSH beim Freeradius-Server anmelden werden.
Als Nächstes validieren Sie, dass Anfragen in der radiusd.conf-Datei proxiert werden können. Dies war auf Fedora der Fall:
vi /etc/raddb/radiusd.conf
proxy_requests = yes
$INCLUDE ${confdir}/proxy.confFügen Sie schließlich den WiKID Strong Authentication-Server als gültigen Proxy in proxy.conf hinzu:
vi /etc/raddb/proxy.conf
# Dieses Realm ist für Anfragen, die keinen expliziten Realm
# Präfix oder Suffix haben. Benutzernamen wie "bob" werden mit diesem übereinstimmen.
#
realm NULL {
type = radius
authhost = WIKIDSERVER_IP:1812
# accthost = WIKIDSERVER_IP:1813
secret = shared_secret
}Es versteht sich von selbst, dass Sie WIKIDSERVER_IP und shared_secret auf die IP-Adresse Ihres WiKID-Servers und das gemeinsame Geheimnis ändern sollten. Es sollte wahrscheinlich anders sein als das gemeinsame Geheimnis, das für den Client verwendet wird.
Zur zusätzlichen Sicherheit sollten Sie den Besitz dieser Dateien einschränken:
chmod a-rwx,u+r /etc/raddb/proxy.conf
chmod a-rwx,u+r /etc/raddb/clients.conf
Jetzt starten Sie Freeradius:
service radiusd start
PAM SSH konfigurieren
Zuerst müssen Sie PAM Radius installieren. Es gibt hervorragende Dokumentationen dazu auf der PAM Radius-Homepage. Je nach Ihrer Distribution finden Sie möglicherweise auch ein passendes Binary. Ich hatte keine Probleme, dies auf Fedora 7 zu kompilieren:
Bearbeiten Sie /etc/pam.d/sshd, um die Radius-Authentifizierung zuzulassen:
vi /etc/pam.d/sshd
Gehen Sie zur zweiten Zeile der Datei, drücken Sie die Einfügetaste oder die i-Taste und fügen Sie diese Zeile ein:
auth sufficient /lib/security/pam_radius_auth.so Direkt über dieser Zeile:
auth required pam_stack.so service=system-authDas „sufficient“-Tag zeigt an, dass, wenn die Radius-Authentifizierung erfolgreich ist, keine zusätzliche Authentifizierung erforderlich ist. Wenn die Radius-Authentifizierung jedoch fehlschlägt, funktioniert ein Benutzername und Passwort vom System. Verwenden Sie „Required“, um eine starke Authentifizierung zu verlangen. Da wir nur die sshd-Datei bearbeiten, hat dies keine Auswirkungen auf Terminal-Logins. PAM kann auf verschiedenen Linux-Varianten sehr unterschiedlich sein. Konsultieren Sie die spezifische Dokumentation für Ihr Betriebssystem.
Bearbeiten oder erstellen Sie Ihre /etc/raddb/server-Datei:
vi /etc/raddb/server
Unterhalb der Zeile:
127.0.0.1 secret 1Fügen Sie diese Zeile hinzu:
localhost shared_secret 1Schließlich habe ich sichergestellt, dass die PublicKey-Authentifizierung in /etc/sshd/sshd_config deaktiviert ist:
PubkeyAuthentication noKonfiguration des WiKID-Servers
Jetzt konfigurieren wir den WiKID-Server, um die Einmalpasswörter von Freeradius zu verarbeiten. Wir gehen davon aus, dass Sie auch eine neue WiKID-Domain einrichten müssen. Wenn Sie bereits eine haben, können Sie diesen Teil überspringen. Zusätzliche WiKID-Installationsdokumentationen sind hier verfügbar.
Melden Sie sich beim WiKID-Server an und klicken Sie auf die Registerkarte Domains.
Klicken Sie auf Neue Domain erstellen.
Geben Sie die angeforderten Informationen ein. Der Domain-Server-Code ist die null-padded IP-Adresse des WiKID-Servers. Wenn die externe IP-Adresse also 216.239.51.99 ist, wäre der WiKID-Server-Code 216239051099. Klicken Sie auf „Erstellen“. (Offensichtlich können Sie diesen Schritt überspringen, wenn Sie bereits eine Domain eingerichtet haben.)
Klicken Sie auf die Registerkarte Netzwerkclients und dann auf „Neuen Netzwerkclient erstellen“.
Geben Sie die angeforderten Informationen ein. Verwenden Sie für die IP-Adresse die IP-Adresse des Freeradius-Servers. Wählen Sie Radius und die Domain, die Sie gerade erstellt haben. Klicken Sie auf „Hinzufügen“, wenn Sie fertig sind.
Auf der nächsten Seite geben Sie das gemeinsame Geheimnis ein, das Sie in der Datei /etc/raddb/proxy.conf des Freeradius-Servers eingegeben haben. Sie müssen keine Informationen unter „Rückgabeattribute“ eingeben.
Wichtig: Vom WiKID-Terminal oder über SSH müssen Sie „wikidctl stop“ und dann „wikidcl start“ ausführen, um die neue Konfiguration in den WiKID-Radius-Server zu laden. (WiKID 2.0-Benutzer führen einfach „stop“ und „start“ aus.)
Testen von Freeradius mit Einmalpasswörtern
Laden Sie einen WiKID-Token-Client herunter und installieren Sie ihn. Sie können sich manuell als Benutzer über die WiKIDAdmin-Weboberfläche validieren. Sobald Sie validiert sind, wählen Sie die Domain aus, die mit der Freeradius-Ressource verbunden ist:

Geben Sie die PIN ein:

Und Sie erhalten das Einmalpasswort zurück. Das OTP ist zeitlich begrenzt, aber die Zeit kann auf dem WiKID-Server auf das eingestellt werden, was Sie möchten:

Jetzt ssh zu Ihrem Freeradius-Server:
ssh user@freeradius_server
Wenn Sie dazu aufgefordert werden, geben Sie das WiKID-Einmalpasswort ein - es sollte automatisch in Ihre Zwischenablage eingefügt worden sein, sodass ctrl-c oder shift-ins funktionieren sollten. Sie sollten Zugriff erhalten. Wenn nicht, gibt es eine Reihe von Protokollen, die Sie konsultieren können. Überprüfen Sie zuerst /var/log/secure auf Ihrem Freeradius-Server, um zu sehen, warum der Benutzer abgelehnt wurde. Wenn Sie „Alle RADIUS-Server haben nicht geantwortet.“ sehen, stellen Sie sicher, dass radiusd auf Port 1812 läuft. Überprüfen Sie die Protokolle von Freeradius unter /var/log/radius/radius.log und das WiKID-Radiusprotokoll unter /opt/WiKID/log/radius.log auf dem WiKID-Server.
Eine alternative Konfiguration: Freeradius als Backup
Einer der Vorteile der Verwendung von PAM Radius ist, dass Server in der Datei /etc/raddb/server verkettet werden können. Wenn die oberen Server nicht antworten, wird der nächste Server versuchen, den Benutzer zu authentifizieren. Um das zu verdeutlichen: Wenn der erste Server mit einer Authentifizierungsfehlermeldung antwortet, wird der Benutzer abgelehnt. Nur wenn es keine Antwort gibt, wird der zweite Radius-Server überprüft. Diese Backup-Funktion kann besonders praktisch sein, wenn sich Ihr WiKID-Server in einem entfernten Rechenzentrum befindet. Durch die Konfiguration von PAM, um direkt mit WiKID zu kommunizieren und auf Freeradius zurückzufallen, schaffen Sie eine Failover-Lösung im Falle eines Hardwareausfalls.
Ändern Sie zuerst die Datei /etc/raddb/server, um zuerst auf den WiKID-Server und dann auf den Freeradius-Server, der auf localhost läuft, zu verweisen:
# server[:port] shared_secret timeout (s)
127.0.0.1:1812 shared_secret 1
WIKIDSERVER_IP:1812 shared_secret 3
localhost:1812 shared_secret 2Ich musste einige kleinere Änderungen vornehmen, um Freeradius mit /etc/passwd zum Laufen zu bringen. Zuerst musste ich die Gruppe von radiusd in /etc/raddb/radiusd.conf auf shadow ändern:
user = radiusd
group = shadowDann musste ich shadow-Berechtigungen für /etc/passwd erteilen:
chgrp shadow /etc/shadow
chmod g+r /etc/shadow
Jetzt, wenn der WiKID-Server aus irgendeinem Grund ausfällt, haben Sie ein automatisches Backup zu Ihrer /etc/passwd-Datei.
Fazit
Radius ist ein ausgezeichneter Standard für die Authentifizierung von Remote-Benutzern. Die Kombination von Freeradius mit WiKID Strong Authentication schafft eine leistungsstarke, flexible und sichere Lösung.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.