Die Notwendigkeit, remote auf Unternehmensressourcen zuzugreifen, wird immer hÀufiger, unabhÀngig davon, ob es sich um eigene Benutzer oder Partner handelt, die Zugang zu einem bestimmten Server in Ihrer Organisation benötigen.
Zu diesem Zweck nutzen die meisten Unternehmen die bewÀhrte VPN-Technologie, die als sicherer Weg zur Bereitstellung des Zugangs zu lokalen Ressourcen der Organisation gilt.
Mein Unternehmen ist da keine Ausnahme, und wir verwenden diese Technologie genauso wie viele andere. Als Gateway fĂŒr den Remote-Zugriff setzen wir den Cisco ASA 55xx ein.
Mit der zunehmenden Zahl an Remote-Benutzern entsteht die Notwendigkeit, den Prozess zur Vergabe von Anmeldedaten zu erleichtern. Gleichzeitig muss jedoch die Sicherheit gewÀhrleistet bleiben.
Wir haben eine Lösung gefunden, indem wir die Zwei-Faktor-Authentifizierung fĂŒr die Verbindung ĂŒber Cisco SSL implementieren, VPN, unter Verwendung von Einmalpasswörtern. In dieser Veröffentlichung wird beschrieben, wie Sie eine solche Lösung mit minimalem Zeitaufwand und ohne Softwarekosten (vorausgesetzt, dass Sie bereits einen Cisco ASA in Ihrer Infrastruktur haben) einrichten können.
Der Markt bietet viele fertige Lösungen zur Generierung von Einmalpasswörtern, mit einer Vielzahl von Optionen fĂŒr deren Erhalt, sei es durch Versand des Passworts per SMS oder durch die Verwendung von Tokens, sowohl hardware- als auch softwarebasiert (zum Beispiel auf einem Mobiltelefon). Doch der Drang nach Einsparungen und der Wunsch, Geld fĂŒr den Arbeitgeber zu sparen, haben mich in der aktuellen Krise dazu gezwungen, einen kostenlosen Weg zu finden, um einen Dienst zur Generierung von Einmalpasswörtern zu implementieren. Dieser ist in seiner kostenlosen Form kommerziellen Lösungen kaum unterlegen (hier sei angemerkt, dass es auch eine kommerzielle Version dieses Produkts gibt, aber wir haben ja vereinbart, dass unsere Ausgaben null sein werden).
Also, wir benötigen:
â Ein Linux-Image mit einem integrierten Werkzeugesatz â multiOTP, FreeRADIUS und nginx, um ĂŒber das Web auf den Server zuzugreifen (http://download.multiotp.net/ â ich habe ein fertiges Image fĂŒr VMware verwendet)
â Einen Active Directory Server
â Einen Cisco ASA (ich verwende fĂŒr die Bequemlichkeit ASDM)
â Jeden Software-Token, der den TOTP-Mechanismus unterstĂŒtzt (ich nutze zum Beispiel Google Authenticator, aber auch FreeOTP ist geeignet)
Ich werde nicht auf die Einzelheiten der Bereitstellung des Images eingehen. Am Ende erhalten Sie Debian Linux mit bereits installiertem multiOTP und FreeRADIUS, die fĂŒr die Zusammenarbeit konfiguriert sind, sowie einer web-basierten Schnittstelle zur Verwaltung von OTP.
Schritt 1. System initialisieren und an das eigene Netzwerk anpassen
StandardmĂ€Ăig wird das System mit den Anmeldedaten root root geliefert. Ich denke, jeder hat verstanden, dass es ratsam wĂ€re, das Passwort des root-Benutzers nach dem ersten Login zu Ă€ndern. Es ist auch notwendig, die Netzwerkeinstellungen zu Ă€ndern (standardmĂ€Ăig ist dies '192.168.1.44' mit dem Gateway '192.168.1.1'). Danach kann das System neu gestartet werden.
Im Active Directory erstellen wir einen Benutzer otp, mit dem Passwort MySuperPassword.
Schritt 2. Verbindung einrichten und Benutzer aus dem Active Directory importieren
Dazu benötigen wir Zugriff auf die Konsole und die Datei multiotp.php, mit der wir die Verbindungseinstellungen zum Active Directory konfigurieren werden.
Wir wechseln in das Verzeichnis /usr/local/bin/multiotp/ und fĂŒhren der Reihe nach die folgenden Befehle aus:
./multiotp.php -config default-request-prefix-pin=0Bestimmt, ob ein zusÀtzlicher (permanenter) PIN beim Eingeben des Einmal-PINs erforderlich ist (0 oder 1)
./multiotp.php -config default-request-ldap-pwd=0Bestimmt, ob das Eingeben des Domain-Passworts beim Eingeben des Einmal-PINs erforderlich ist (0 oder 1)
./multiotp.php -config ldap-server-type=1Geben Sie den Typ des LDAP-Servers an (0 = gewöhnlicher LDAP-Server, in unserem Fall ist 1 = Active Directory)
./multiotp.php -config ldap-cn-identifier="sAMAccountName"Gibt an, in welchem Format der Benutzername dargestellt werden soll (dieser Wert gibt nur den Namen ohne die DomÀne aus)
./multiotp.php -config ldap-group-cn-identifier="sAMAccountName"Das Gleiche, nur fĂŒr die Gruppe
./multiotp.php -config ldap-group-attribute="memberOf"Gibt die Methode zur Bestimmung der Gruppenmitgliedschaft des Benutzers an
./multiotp.php -config ldap-ssl=1Sollen sichere Verbindungen zum LDAP-Server verwendet werden? (NatĂŒrlich â ja!)
./multiotp.php -config ldap-port=636Port fĂŒr die Verbindung zum LDAP-Server
./multiotp.php -config ldap-domain-controllers=adSRV.domain.localAdresse Ihres Active Directory-Servers
./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"Geben Sie an, wo die Benutzersuche innerhalb der DomÀne beginnen soll
./multiotp.php -config ldap-bind-dn="otp@domain.local"Geben Sie den Benutzer an, der Berechtigungen zum Suchen in Active Directory hat
./multiotp.php -config ldap-server-password="MySuperPassword"Geben Sie das Passwort des Benutzers fĂŒr die Verbindung mit Active Directory an
./multiotp.php -config ldap-network-timeout=10Setzen Sie das Timeout fĂŒr die Verbindung zu Active Directory
./multiotp.php -config ldap-time-limit=30Setzen Sie die Zeitgrenze fĂŒr den Import von Benutzern
./multiotp.php -config ldap-activated=1Aktivieren der Verbindungskonfiguration zu Active Directory
./multiotp.php -debug -display-log -ldap-users-syncImport der Benutzer aus Active Directory
Schritt 3. Generieren eines QR-Codes fĂŒr das Token
Hier ist alles ganz einfach. Ăffnen Sie die WeboberflĂ€che des OTP-Servers im Browser, melden Sie sich an (vergessen Sie nicht, das Standard-Admin-Passwort zu Ă€ndern!), und klicken Sie auf die SchaltflĂ€che âDruckenâ:

Das Ergebnis dieser Aktion ist eine Seite, auf der zwei QR-Codes angezeigt werden. Ignorieren Sie den ersten (trotz der verlockenden Beschriftung Google Authenticator / Authenticator / 2 Steps Authenticator), und scannen Sie den zweiten Code mit dem Software-Token auf Ihrem Handy:

(ja, ich habe den QR-Code absichtlich beschÀdigt, um ihn unleserlich zu machen).
Nach diesen Schritten wird in Ihrer Anwendung alle 30 Sekunden ein sechsstelliger Code generiert.
Zur Sicherheit können Sie im selben Interface einen Test durchfĂŒhren:

Geben Sie den Benutzernamen und das Einmalpasswort aus der App auf Ihrem Telefon ein. Haben Sie eine positive RĂŒckmeldung erhalten? Dann gehen wir weiter.
Schritt 4. Feinabstimmung und Test der FreeRADIUS-FunktionalitÀt
Wie oben erwĂ€hnt, ist multiOTP bereits fĂŒr die Verwendung mit FreeRADIUS eingerichtet. Es bleibt nur, Tests durchzufĂŒhren und die Informationen zu unserem VPN-Gateway in die Konfigurationsdatei von FreeRADIUS einzufĂŒgen.
Gehen wir zurĂŒck zur Server-Konsole, in das Verzeichnis /usr/local/bin/multiotp/, eingeben:
./multiotp.php -config debug=1
./multiotp.php -config display-log=1Damit aktivieren wir ein detaillierteres Logging.
In der Konfigurationsdatei der FreeRADIUS-Clients (/etc/freeradius/clinets.conf) kommentieren wir alle Zeilen aus, die sich auf localhost beziehen, und fĂŒgen zwei EintrĂ€ge hinzu:
client localhost {
ipaddr = 127.0.0.1
secret = testing321
require_message_authenticator = no
}â fĂŒr den Test
client 192.168.1.254/32 {
shortname = CiscoASA
secret = ConnectToRADIUSSecret
}â fĂŒr unser VPN-Gateway.
Wir starten FreeRADIUS neu und versuchen uns zu authentifizieren:
radtest username 100110 localhost 1812 testing321wobei Benutzername = Benutzername, 100110 = das Passwort, das uns von der Anwendung auf dem Telefon gegeben wurde, localhost = die Adresse des RADIUS-Servers, 1812 â der Port des RADIUS-Servers, testing321 â das Passwort des RADIUS-Client (das wir im Konfigurationsfile angegeben haben).
Das Ergebnis dieses Befehls wird eine Ausgabe in etwa folgendem Inhalt sein:
Sending Access-Request of id 44 to 127.0.0.1 port 1812
User-Name = "username"
User-Password = "100110"
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=44, length=20Jetzt mĂŒssen wir sicherstellen, dass der Benutzer erfolgreich authentifiziert wurde. Dazu schauen wir in das Log von multiotp:
tail /var/log/multiotp/multiotp.logUnd wenn der letzte Eintrag dort lautet:
2016-09-01 08:58:17 notice username User OK: Benutzer username hat sich erfolgreich von 127.0.0.1 angemeldet
2016-09-01 08:58:17 debug Debug Debug: 0 OK: Token von 127.0.0.1 akzeptiertDann ist alles erfolgreich verlaufen und wir können
Schritt 5. Konfiguration von Cisco ASA
Lassen Sie uns annehmen, dass wir bereits eine konfigurierte Gruppe und Richtlinien fĂŒr den Zugriff ĂŒber SLL VPN haben, eingerichtet in Verbindung mit Active Directory, und wir mĂŒssen die Zwei-Faktor-Authentifizierung fĂŒr dieses Profil hinzufĂŒgen.
1. Neue Gruppe hinzufĂŒgen Server AAA:

2. FĂŒgen Sie unseren multiOTP-Server zur Gruppe hinzu:

3. Ăndern Sie das Verbindungsprofil, indem Sie die Gruppe der Active Directory-Server als primĂ€ren Authentifizierungsserver festlegen:

4. Auf der Registerkarte Erweitert -> Authentifizierung wÀhlen wir auch die Gruppe der Active Directory-Server:

5. Auf der Registerkarte Erweitert -> SekundĂ€re FĂŒr die Authentifizierung wĂ€hlen wir die erstellte Gruppe von Servern, in der der multiOTP-Server aufgefĂŒhrt ist. Beachten Sie, dass der Benutzersitzungname von der primĂ€ren Gruppe der AAA-Server abgeleitet wird:

Wenden Sie die Einstellungen an und
Schritt 6, der letzte Schritt
ĂberprĂŒfen Sie, ob unsere Zwei-Faktor-Authentifizierung fĂŒr SLL VPN funktioniert:

VoilĂ ! Beim Anschluss ĂŒber den Cisco AnyConnect VPN Client wird ebenfalls nach einem zweiten, einmaligen Passwort gefragt.
Ich hoffe, dass dieser Artikel jemandem hilft und den AnstoĂ gibt, darĂŒber nachzudenken, wie man diesen ist kostenlos OTP-Server fĂŒr andere Aufgaben nutzen kann. Teilen Sie Ihre Gedanken in den Kommentaren mit, wenn Sie möchten.
Quelle: habr.com
