Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)

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=0

Bestimmt, ob ein zusÀtzlicher (permanenter) PIN beim Eingeben des Einmal-PINs erforderlich ist (0 oder 1)

./multiotp.php -config default-request-ldap-pwd=0

Bestimmt, ob das Eingeben des Domain-Passworts beim Eingeben des Einmal-PINs erforderlich ist (0 oder 1)

./multiotp.php -config ldap-server-type=1

Geben 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=1

Sollen sichere Verbindungen zum LDAP-Server verwendet werden? (NatĂŒrlich — ja!)

./multiotp.php -config ldap-port=636

Port fĂŒr die Verbindung zum LDAP-Server

./multiotp.php -config ldap-domain-controllers=adSRV.domain.local

Adresse 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=10

Setzen Sie das Timeout fĂŒr die Verbindung zu Active Directory

./multiotp.php -config ldap-time-limit=30

Setzen Sie die Zeitgrenze fĂŒr den Import von Benutzern

./multiotp.php -config ldap-activated=1

Aktivieren der Verbindungskonfiguration zu Active Directory

./multiotp.php -debug -display-log -ldap-users-sync

Import 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“:

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
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:

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
(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:

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
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=1

Damit 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 testing321

wobei 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=20

Jetzt mĂŒssen wir sicherstellen, dass der Benutzer erfolgreich authentifiziert wurde. Dazu schauen wir in das Log von multiotp:

tail /var/log/multiotp/multiotp.log

Und 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 akzeptiert

Dann 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:

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
2. FĂŒgen Sie unseren multiOTP-Server zur Gruppe hinzu:

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
3. Ändern Sie das Verbindungsprofil, indem Sie die Gruppe der Active Directory-Server als primĂ€ren Authentifizierungsserver festlegen:

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
4. Auf der Registerkarte Erweitert -> Authentifizierung wÀhlen wir auch die Gruppe der Active Directory-Server:

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
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:

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
Wenden Sie die Einstellungen an und

Schritt 6, der letzte Schritt
ÜberprĂŒfen Sie, ob unsere Zwei-Faktor-Authentifizierung fĂŒr SLL VPN funktioniert:

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
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

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster