De behoefte om extern toegang te verlenen tot een bedrijfsomgeving komt steeds vaker voor, ongeacht of dit nu voor eigen gebruikers of voor partners is die toegang nodig hebben tot een bepaalde server binnen uw organisatie.
Voor deze doeleinden gebruiken de meeste bedrijven de VPN-technologie, die zich heeft bewezen als een veilig middel om toegang te verlenen tot de lokale bronnen van de organisatie.
Mijn bedrijf vormt hierop geen uitzondering, en net als vele anderen maken wij gebruik van deze technologie. En, zoals vele anderen, gebruiken we de Cisco ASA 55xx als toegangspoort voor externe toegang.
Met de toenemende hoeveelheid externe gebruikers ontstaat de behoefte om de procedure voor het verstrekken van inloggegevens te vergemakkelijken. Maar tegelijkertijd is het noodzakelijk dit te doen zonder concessies te doen aan de veiligheid.
Voor ons hebben we een oplossing gevonden in het toepassen van multi-factor authenticatie voor verbinding via Cisco SSL VPN, met de toepassing van eenmalige wachtwoorden. Deze publicatie zal uitleggen hoe je een dergelijke oplossing kunt organiseren met minimale tijdsinvestering en nul kosten voor de benodigde software (op voorwaarde dat de Cisco ASA al in uw infrastructuur aanwezig is).
De markt biedt talloze kant-en-klare oplossingen voor het genereren van eenmalige wachtwoorden, waarbij een scala aan opties wordt aangeboden voor hun verkrijging, of het nu gaat om het verzenden van het wachtwoord via SMS of het gebruik van tokens, zowel hardware- als softwarematig (bijvoorbeeld op een mobiele telefoon). Maar de drang naar besparingen en de wens om geld voor mijn werkgever te besparen, gezien de huidige crisis, dreef me ertoe om een gratis manier te vinden om een service voor het genereren van eenmalige wachtwoorden te realiseren. Deze, ondanks zijn gratis status, doet weinig onder voor commerciƫle oplossingen (het moet worden opgemerkt dat dit product ook een commerciƫle versie heeft, maar we hebben afgesproken dat onze kosten in geld nul zullen zijn).
Dus, we hebben nodig:
ā Een Linux-image met een ingebouwde set van tools ā multiOTP, FreeRADIUS en nginx, om toegang tot de server via het web te krijgen (http://download.multiotp.net/ ā ik gebruikte een kant-en-klaar image voor VMware)
ā Een Active Directory-server
ā De Cisco ASA zelf (ik gebruik ASDM voor het gemak)
ā Enige softwarematige token dat het TOTP-mechanisme ondersteunt (ik gebruik bijvoorbeeld Google Authenticator, maar FreeOTP zal ook werken)
Ik zal niet ingaan op de details van het opzetten van de afbeelding. U krijgt Debian Linux met al geĆÆnstalleerd multiOTP en FreeRADIUS, geconfigureerd om samen te werken, en een webinterface voor het beheer van OTP.
Stap 1. We starten het systeem en stellen het in op ons netwerk
Standaard wordt het systeem geleverd met de inloggegevens root root. Ik denk dat iedereen wel kan raden dat het een goed idee zou zijn om het wachtwoord van de rootgebruiker te wijzigen na de eerste login. Ook moeten we de netwerkinstellingen wijzigen (standaard is dit '192.168.1.44' met een gateway van '192.168.1.1'). Dan kan het systeem opnieuw worden opgestart.
We creƫren een gebruiker in Active Directory otp, met het wachtwoord MySuperPassword.
Stap 2. We configureren de verbinding en importeren gebruikers uit Active Directory
Hiervoor hebben we toegang tot de console nodig, en het bestand multiotp.php, waarmee we de verbindingsparameters naar Active Directory instellen.
Ga naar de map /usr/local/bin/multiotp/ en we voeren de volgende commando's ƩƩn voor ƩƩn uit:
.\/multiotp.php -config default-request-prefix-pin=0Bepaalt of een extra (permanente) pin vereist is bij het invoeren van de eenmalige pin (0 of 1)
.\/multiotp.php -config default-request-ldap-pwd=0Bepaalt of het invoeren van het domeinwachtwoord vereist is bij het invoeren van de eenmalige pin (0 of 1)
.\/multiotp.php -config ldap-server-type=1Geeft het type LDAP-server aan (0 = gewone LDAP-server, in ons geval 1 = Active Directory)
.\/multiotp.php -config ldap-cn-identifier="sAMAccountName"Geeft aan in welk formaat de gebruikersnaam moet worden weergegeven (deze waarde geeft alleen de naam weer, zonder domein)
.\/multiotp.php -config ldap-group-cn-identifier="sAMAccountName"Hetzelfde, maar voor de groep
.\/multiotp.php -config ldap-group-attribute="memberOf"Geeft de methode aan om de groepslidmaatschap van de gebruiker te bepalen
.\/multiotp.php -config ldap-ssl=1Gebruik een veilige verbinding met de LDAP-server (natuurlijk - ja!)
.\/multiotp.php -config ldap-port=636Poort voor verbinding met de LDAP-server
.\/multiotp.php -config ldap-domain-controllers=adSRV.domain.localAdres van uw Active Directory-server
.\/multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"Geeft aan waar te beginnen met het zoeken naar gebruikers in het domein
.\/multiotp.php -config ldap-bind-dn="otp@domain.local"Geeft de gebruiker aan die zoekrechten in Active Directory heeft
.\/multiotp.php -config ldap-server-password="MySuperPassword"Geeft het wachtwoord van de gebruiker op, voor verbinding met Active Directory
.\/multiotp.php -config ldap-network-timeout=10Stelt de timeout in voor verbinding met Active Directory
.\/multiotp.php -config ldap-time-limit=30Stelt de tijdslimiet in voor de gebruikersimportoperatie
.\/multiotp.php -config ldap-activated=1We activeren de verbinding met Active Directory
.\/multiotp.php -debug -display-log -ldap-users-syncWe importeren gebruikers vanuit Active Directory
Stap 3. Genereer de QR-code voor de token
Dit is heel eenvoudig. We openen de webinterface van de OTP-server in de browser, loggen in (vergeet niet het standaard wachtwoord voor de admin te wijzigen!) en klikken op de knop 'Print':

Het resultaat van deze actie is een pagina met twee QR-codes. We negeren de eerste (ondanks de aantrekkelijke tekst Google Authenticator / Authenticator / 2 Steps Authenticator) en scannen de tweede code gerust in de softwaretoken op de telefoon:

(ja, ik heb de QR-code opzettelijk verpest zodat deze onleesbaar is).
Na deze stappen wordt er om de dertig seconden een zes-cijferige code gegenereerd in de applicatie.
Voor de zekerheid kunnen we een controle uitvoeren in dezelfde interface:

Voer de gebruikersnaam in en het eenmalige wachtwoord uit de applicatie op de telefoon. Heb je een positieve reactie ontvangen? Dan gaan we verder.
Stap 4. Stel FreeRADIUS verder in en test de werking
Zoals eerder vermeld, is multiOTP al ingesteld voor gebruik met FreeRADIUS; we moeten nu testen uitvoeren en de configuratie voor FreeRADIUS bijwerken met informatie over onze VPN-gateway.
We gaan terug naar de serverconsole, naar de directory /usr/local/bin/multiotp/, voer in:
.\/multiotp.php -config debug=1\n.\/multiotp.php -config display-log=1en zo krijgen we gedetailleerdere logging.
In het configuratiebestand van FreeRADIUS clients (/etc/freeradius/clinets.conf) commentariƫren we alle regels die betrekking hebben op localhost en voegen we twee vermeldingen toe:
client localhost {\n ipaddr = 127.0.0.1\n secret = testing321\n require_message_authenticator = no\n}ā voor de test
client 192.168.1.254\/32 {\n shortname = CiscoASA\n secret = ConnectToRADIUSSecret\n}ā voor onze VPN-gateway.
Herstart FreeRADIUS en probeer in te loggen:
radtest username 100110 localhost 1812 testing321waar username = gebruikersnaam, 100110 = wachtwoord dat door de applicatie op de telefoon is gegeven, localhost = adres van de RADIUS-server, 1812 ā poort van de RADIUS-server, testing321 ā wachtwoord van de RADIUS-client (hetgeen we in de configuratie hebben opgegeven).
Het resultaat van deze opdracht zal een uitvoer zijn van ongeveer de volgende inhoud:
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=20Laten we nu ervoor zorgen dat de gebruiker succesvol is geauthenticeerd. Hiervoor kijken we in de log van multiotp:
tail /var/log/multiotp/multiotp.logEn als de laatste vermelding daar is:
2016-09-01 08:58:17 notice gebruikersnaam User OK: Gebruiker gebruikersnaam succesvol ingelogd vanaf 127.0.0.1
2016-09-01 08:58:17 debug Debug Debug: 0 OK: Token geaccepteerd van 127.0.0.1Dan is alles goed gegaan en kunnen we uitvoeren
Stap 5. Cisco ASA configureren
We gaan ervan uit dat we al een geconfigureerde groep en beleidsregels voor toegang via SSL VPN hebben, ingesteld in combinatie met Active Directory, en dat we twee-factor authenticatie voor dit profiel moeten toevoegen.
1. Voeg een nieuwe groep toe servers AAA:

2. Voeg onze multiOTP-server aan de groep toe:

3. Pas de verbindingsprofiel, waarbij we de groep van Active Directory-servers als primaire authentificatiedienst instellen:

4. Op het tabblad Geavanceerd -> Authenticatie Kies ook de groep van Active Directory-servers:

5. Op het tabblad Geavanceerd -> Secundair selecteer de aangemaakte groep servers waarin de multiOTP-server is opgenomen. Let op dat de session gebruikersnaam wordt overgenomen uit de primaire groep van AAA-servers:

Pas de instellingen toe en
Stap 6, de laatste
Controleer of onze twee-factor authenticatie werkt voor SSL VPN:

VoilĆ ! Bij verbinding via de Cisco AnyConnect VPN Client zal ook om een tweede, eenmalig, wachtwoord worden gevraagd.
Ik hoop dat dit artikel iemand helpt, en dat het iemand aan het denken zet over hoe deze gratis OTP-server voor andere taken kan worden gebruikt. Deel uw gedachten in de comments als u dat wilt.
Bron: habr.com
