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

Der Bedarf, Remote-Zugriff auf die Unternehmensumgebung bereitzustellen, wird immer hÀufiger, egal 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 sich bewÀhrte VPN-Technologie, die sich als sicherer Weg zur Bereitstellung von Zugriff auf lokale Ressourcen der Organisation etabliert hat.

Mein Unternehmen bildet da keine Ausnahme und wir verwenden diese Technologie, wie viele andere auch. Ebenso verwenden wir als Remote-Access-Gateway – Cisco ASA 55xx.

Mit der steigenden Anzahl entfernter Benutzer entsteht die Notwendigkeit, den Prozess der Vergabe von Anmeldedaten zu erleichtern. Gleichzeitig darf dies jedoch nicht auf Kosten der Sicherheit geschehen.

Wir haben fĂŒr uns eine Lösung in der Anwendung der Zwei-Faktor-Authentifizierung fĂŒr die Verbindung ĂŒber Cisco SSL gefunden, VPN, unter Verwendung von Einmalpasswörtern. Dieser Beitrag beschreibt, wie man eine solche Lösung mit minimalem Zeitaufwand und null Kosten fĂŒr die notwendige Software einrichtet (unter der Voraussetzung, dass Cisco ASA bereits in Ihrer Infrastruktur vorhanden ist).

Der Markt bietet zahlreiche fertige Lösungen zur Generierung von Einmalpasswörtern, die eine Vielzahl von Möglichkeiten zur Beschaffung anbieten, sei es durch den Versand des Passworts per SMS oder die Verwendung von Token, sowohl Hardware- als auch Software-Token (zum Beispiel auf einem Mobiltelefon). Doch der Drang zur Kostensenkung und das Bestreben, Geld fĂŒr den Arbeitgeber zu sparen, haben mich in der aktuellen Krise dazu gebracht, eine kostenlose Möglichkeit zu finden, um einen Dienst zur Generierung von Einmalpasswörtern zu realisieren. Dieser ist, trotz seiner Kostenfreiheit, kommerziellen Lösungen kaum unterlegen (hier sei erwĂ€hnt, dass dieses Produkt auch eine kommerzielle Version hat, aber wir haben ja vereinbart, dass unsere Ausgaben null betragen werden).

Also, wir benötigen:

– Ein Linux-Image mit einem integrierten Set von Werkzeugen – multiOTP, FreeRADIUS und nginx, fĂŒr den Zugriff auf den Server ĂŒber das Web (http://download.multiotp.net/ – ich habe ein fertiges Image fĂŒr VMware verwendet)
– Einen Active Directory-Server
– Eigentlich Cisco ASA (ich benutze der Einfachheit halber ASDM)
– Ein beliebiger Software-Token, der den TOTP-Mechanismus unterstĂŒtzt (zum Beispiel verwende ich Google Authenticator, aber auch FreeOTP ist geeignet)

Ich werde nicht ins Detail ĂŒber die Erstellung des Images eingehen. Am Ende erhalten Sie Debian Linux mit bereits installiertem multiOTP und FreeRADIUS, die zur Zusammenarbeit konfiguriert sind, sowie eine Web-OberflĂ€che zur Verwaltung von OTP.

Schritt 1. System initiieren und an Ihr Netzwerk anpassen
StandardmĂ€ĂŸig kommt das System mit den Zugangsdaten root root. Ich denke, jeder hat verstanden, dass es ratsam wĂ€re, das Passwort des Benutzers root nach dem ersten Login zu Ă€ndern. Ebenso mĂŒssen die Netzwerkeinstellungen geĂ€ndert werden (standardmĂ€ĂŸig ist dies ‘192.168.1.44’ mit Gateway ‘192.168.1.1’). Danach kann das System neu gestartet werden.

In Active Directory erstellen wir einen Benutzer otp, mit dem Passwort MySuperPassword.

Schritt 2. Verbindung einrichten und Active Directory-Benutzer importieren
Dazu benötigen wir Zugang zur Konsole und die Datei multiotp.php, mit deren Hilfe wir die Verbindungseinstellungen zur Active Directory konfigurieren.

Wir navigieren in das Verzeichnis /usr/local/bin/multiotp/ und nacheinander die folgenden Befehle ausfĂŒhren:

.\/multiotp.php -config default-request-prefix-pin=0

Bestimmt, ob ein zusÀtzlicher (permanenter) Pin bei der Eingabe eines Einmal-Pins erforderlich ist (0 oder 1)

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

Bestimmt, ob das Eingeben des Domain-Passworts bei der Eingabe eines Einmal-Pins erforderlich ist (0 oder 1)

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

Gibt den Typ des LDAP-Servers an (0 = regulÀrer LDAP-Server, in unserem Fall 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 Domain aus)

.\/multiotp.php -config ldap-group-cn-identifier="sAMAccountName"

Das Gleiche, jedoch fĂŒr Gruppen

.\/multiotp.php -config ldap-group-attribute="memberOf"

Gibt die Methode zur Bestimmung der Gruppenmitgliedschaft des Benutzers an

.\/multiotp.php -config ldap-ssl=1

Soll eine sichere Verbindung 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"

Gibt an, wo die Suche nach Benutzern im Domain beginnen soll

.\/multiotp.php -config ldap-bind-dn="otp@domain.local"

Gibt den Benutzer an, der Rechte zum Suchen in der Active Directory hat

.\/multiotp.php -config ldap-server-password="MySuperPassword"

Gibt das Passwort des Benutzers fĂŒr die Verbindung zur Active Directory an

.\/multiotp.php -config ldap-network-timeout=10

Setzt das Timeout fĂŒr die Verbindung zur Active Directory

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

Setzt die Zeitbegrenzung fĂŒr den Importvorgang der Benutzer

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

Aktivieren Sie die Verbindungskonfiguration zu Active Directory

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

Importieren von Benutzern aus Active Directory

Schritt 3. QR-Code fĂŒr das Token generieren
Hier ist alles ganz einfach. Öffnen Sie die WeboberflĂ€che des OTP-Servers im Browser, melden Sie sich an (vergessen Sie nicht, das sich standardmĂ€ĂŸig festgelegte 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 wird eine Seite sein, die zwei QR-Codes enthÀlt. Wir ignorieren den ersten von ihnen (trotz der ansprechenden Aufschrift Google Authenticator / Authenticator / 2 Steps Authenticator) und scannen wieder den zweiten Code in den Software-Token auf dem Telefon:

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
(ja, ich habe den QR-Code absichtlich unlesbar gemacht).

Nach diesen Schritten wird in Ihrer App alle dreißig Sekunden ein sechsstelliger Code generiert.

Zur Sicherheit können Sie eine ÜberprĂŒfung im selben Interface durchfĂŒhren:

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
Indem Sie den Benutzernamen und das Einmalpasswort aus der App auf dem Telefon eingeben. Haben Sie eine positive RĂŒckmeldung erhalten? Dann machen wir weiter.

Schritt 4. Konfigurieren und testen Sie die Funktionsweise von FreeRADIUS
Wie ich bereits erwĂ€hnt habe – multiOTP ist bereits fĂŒr die Arbeit mit FreeRADIUS eingerichtet, wir mĂŒssen nur Tests durchfĂŒhren und die Informationen ĂŒber unseren VPN-Gateway in die Konfigurationsdatei von FreeRADIUS einfĂŒgen.

Kehren Sie zur Konsole des Servers zurĂŒck, in das Verzeichnis /usr/local/bin/multiotp/, geben Sie ein:

.\/multiotp.php -config debug=1\n.\/multiotp.php -config display-log=1

Dadurch wird eine detailliertere Protokollierung aktiviert.

In der Konfigurationsdatei der FreeRADIUS-Clients (/etc/freeradius/clinets.conf) kommentieren Sie alle Zeilen aus, die sich auf localhost beziehen und fĂŒgen Sie zwei EintrĂ€ge hinzu:

client localhost {\n        ipaddr = 127.0.0.1\n        secret          = testing321\n        require_message_authenticator = no\n}

– fĂŒr den Test

client 192.168.1.254\/32 {\n        shortname =     CiscoASA\n        secret =        ConnectToRADIUSSecret\n}

– fĂŒr unser VPN-Gateway.

Starten Sie FreeRADIUS neu und versuchen Sie, sich anzumelden:

radtest username 100110 localhost 1812 testing321

wo username = Benutzername, 100110 = Passwort, das uns von der App auf dem Telefon gegeben wurde, localhost = Adresse des RADIUS-Servers, 1812 – Port des RADIUS-Servers, testing321 – Passwort des RADIUS-Server-Clients (das wir in der Konfiguration angegeben haben).

Das Ergebnis dieses Befehls wird eine Ausgabe sein, die ungefÀhr folgenden Inhalt hat:

Sending Access-Request of id 44 to 127.0.0.1 port 1812\n        User-Name = "username"\n        User-Password = "100110"\n        NAS-IP-Address = 127.0.1.1\n        NAS-Port = 1812\n        Message-Authenticator = 0x00000000000000000000000000000000\nrad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=44, length=20

Jetzt mĂŒssen wir sicherstellen, dass der Benutzer die Authentifizierung erfolgreich durchlaufen hat. Dazu schauen wir in das Protokoll 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 war alles erfolgreich, und wir können

Schritt 5. Konfiguration von Cisco ASA
Nehmen wir an, dass wir bereits eine konfigurierte Gruppe und Richtlinien fĂŒr den Zugriff ĂŒber SSL VPN haben, die mit Active Directory verbunden ist, 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. Bearbeiten 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 dem Tab Erweitert -> Authentifizierung WĂ€hlen Sie ebenfalls die Gruppe der Active Directory-Server:

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
5. Auf dem Tab Erweitert -> SekundĂ€r Bei der Authentifizierung wĂ€hlen wir die erstellte Gruppe der Server, in der der multiOTP-Server registriert ist. Beachten Sie, dass der Sitzung Benutzername aus der primĂ€ren AAA-Servergruppe ĂŒbernommen wird:

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

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

Gehe zu 2FA (Zwei-Faktor-Authentifizierung fĂŒr ASA SSL VPN)
VoilĂ ! Bei der Verbindung ĂŒber den Cisco AnyConnect VPN-Client wird ebenfalls nach dem zweiten, einmaligen Passwort gefragt.

Ich hoffe, dass dieser Artikel jemandem hilft und dass er Anregungen gibt, wie man diesen kostenlos OTP-Server fĂŒr andere Aufgaben nutzen kann. Teilen Sie Ihre Gedanken in den Kommentaren mit, wenn Sie möchten.

Quelle: habr.com

60GB SSD 8Gb DDR4