Ga naar 2FA (tweefactorauthenticatie voor ASA SSL VPN)

De noodzaak om externe toegang tot een bedrijfsomgeving te bieden komt steeds vaker voor, ongeacht of het uw gebruikers of partners zijn die toegang nodig hebben tot een bepaalde server in uw organisatie.

Voor deze doeleinden gebruiken de meeste bedrijven VPN-technologie, die heeft bewezen een betrouwbaar beschermde manier te zijn om toegang te bieden tot de lokale bronnen van de organisatie.

Mijn bedrijf was daarop geen uitzondering en wij gebruiken, net als vele anderen, deze technologie. En net als vele anderen gebruiken we Cisco ASA 55xx als gateway voor externe toegang.

Naarmate het aantal externe gebruikers toeneemt, is er behoefte aan een vereenvoudiging van de procedure voor het verstrekken van inloggegevens. Maar tegelijkertijd moet dit gebeuren zonder de veiligheid in gevaar te brengen.

Voor onszelf hebben we een oplossing gevonden door tweefactorauthenticatie te gebruiken voor verbinding via Cisco SSL VPN, met behulp van eenmalige wachtwoorden. En deze publicatie vertelt u hoe u zo'n oplossing kunt organiseren met minimale tijd en nul kosten voor de benodigde software (op voorwaarde dat u al Cisco ASA in uw infrastructuur heeft).

De markt staat vol met kant-en-klare oplossingen voor het genereren van eenmalige wachtwoorden, terwijl er veel mogelijkheden zijn om deze te verkrijgen, of het nu gaat om het verzenden van het wachtwoord via sms of het gebruik van tokens, zowel hardware als software (bijvoorbeeld op een mobiele telefoon). Maar de wens om geld te besparen en de wens om geld te besparen voor mijn werkgever, in de huidige crisis, dwongen mij een gratis manier te vinden om een ​​dienst te implementeren voor het genereren van eenmalige wachtwoorden. Wat, hoewel gratis, niet veel inferieur is aan commerciële oplossingen (hier moeten we een voorbehoud maken, waarbij we opmerken dat dit product ook een commerciële versie heeft, maar we zijn het erover eens dat onze kosten, in geld, nul zullen zijn).

Dus we zullen het volgende nodig hebben:

- Een Linux-image met een ingebouwde set tools - multiOTP, FreeRADIUS en nginx, voor toegang tot de server via internet (http://download.multiotp.net/ - Ik gebruikte een kant-en-klare image voor VMware)
— Active Directory-server
— Cisco ASA zelf (voor het gemak gebruik ik ASDM)
— Elk softwaretoken dat het TOTP-mechanisme ondersteunt (ik gebruik bijvoorbeeld Google Authenticator, maar dezelfde FreeOTP zal het ook doen)

Ik zal niet in details treden over hoe het beeld zich ontvouwt. Als gevolg hiervan ontvangt u Debian Linux waarop multiOTP en FreeRADIUS al zijn geïnstalleerd, geconfigureerd om samen te werken, en een webinterface voor OTP-beheer.

Stap 1. Wij starten het systeem en configureren het voor uw netwerk
Standaard wordt het systeem geleverd met root-rootreferenties. Ik denk dat iedereen vermoedde dat het een goed idee zou zijn om het rootgebruikerswachtwoord te wijzigen na de eerste login. U moet ook de netwerkinstellingen wijzigen (standaard is dit '192.168.1.44' met de gateway '192.168.1.1'). Daarna kunt u het systeem opnieuw opstarten.

Laten we een gebruiker aanmaken in Active Directory otp, met wachtwoord MijnSuperWachtwoord.

Stap 2. Zet de verbinding op en importeer Active Directory-gebruikers
Om dit te doen, hebben we toegang tot de console en rechtstreeks tot het bestand nodig multiotp.php, waarmee we de verbindingsinstellingen met Active Directory zullen configureren.

Ga naar de map /usr/local/bin/multiotp/ en voer achtereenvolgens de volgende opdrachten uit:

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

Bepaalt of een extra (permanente) pincode nodig is bij het invoeren van een eenmalige pincode (0 of 1)

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

Bepaalt of een domeinwachtwoord vereist is bij het invoeren van een eenmalige pincode (0 of 1)

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

Het type LDAP-server wordt aangegeven (0 = gewone LDAP-server, in ons geval 1 = Active Directory)

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

Specificeert het formaat waarin de gebruikersnaam moet worden weergegeven (deze waarde geeft alleen de naam weer, zonder het domein)

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

Hetzelfde, alleen voor een groep

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

Specificeert een methode om te bepalen of een gebruiker tot een groep behoort

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

Moet ik een beveiligde verbinding met de LDAP-server gebruiken (natuurlijk - ja!)

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

Poort voor verbinding met de LDAP-server

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

Uw Active Directory-serveradres

./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"

Wij geven aan waar u moet beginnen met zoeken naar gebruikers in het domein

./multiotp.php -config ldap-bind-dn="[email protected]"

Geef een gebruiker op die zoekrechten heeft in Active Directory

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

Geef het gebruikerswachtwoord op om verbinding te maken met Active Directory

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

De time-out instellen voor verbinding met Active Directory

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

We hebben een tijdslimiet ingesteld voor de importbewerking van gebruikers

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

Activering van de Active Directory-verbindingsconfiguratie

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

Wij importeren gebruikers uit Active Directory

Stap 3. Genereer een QR-code voor het token
Alles is hier uiterst eenvoudig. Open de webinterface van de OTP-server in de browser, log in (vergeet niet het standaardwachtwoord voor de beheerder te wijzigen!) en klik op de knop “Afdrukken”:

Ga naar 2FA (tweefactorauthenticatie voor ASA SSL VPN)
Het resultaat van deze actie is een pagina met twee QR-codes. We negeren stoutmoedig de eerste (ondanks de aantrekkelijke inscriptie Google Authenticator / Authenticator / 2 Steps Authenticator), en opnieuw scannen we stoutmoedig de tweede code in een softwaretoken op de telefoon:

Ga naar 2FA (tweefactorauthenticatie voor ASA SSL VPN)
(ja, ik heb de QR-code opzettelijk verpest om hem onleesbaar te maken).

Nadat u deze acties heeft voltooid, wordt er elke dertig seconden een wachtwoord van zes cijfers in uw applicatie gegenereerd.

Voor de zekerheid kun je het in dezelfde interface controleren:

Ga naar 2FA (tweefactorauthenticatie voor ASA SSL VPN)
Door uw gebruikersnaam en eenmalig wachtwoord in te voeren vanuit de applicatie op uw telefoon. Heeft u een positieve reactie ontvangen? Dus we gaan verder.

Stap 4. Aanvullende configuratie en testen van de werking van FreeRADIUS
Zoals ik hierboven al zei, is multiOTP al geconfigureerd om met FreeRADIUS te werken. Het enige dat overblijft is het uitvoeren van tests en het toevoegen van informatie over onze VPN-gateway aan het FreeRADIUS-configuratiebestand.

We keren terug naar de serverconsole, naar de directory /usr/local/bin/multiotp/, binnenkomen:

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

Inclusief meer gedetailleerde logging.

In het configuratiebestand van FreeRADIUS-clients (/etc/freeradius/clinets.conf) geef commentaar op alle regels die verband houden met localhost en voeg twee vermeldingen toe:

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

- om te testen

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

- voor onze VPN-gateway.

Start FreeRADIUS opnieuw en probeer in te loggen:

radtest username 100110 localhost 1812 testing321

waar gebruikersnaam = gebruikersnaam, 100110 = wachtwoord dat ons wordt gegeven door de applicatie op de telefoon, localhost = RADIUS-serveradres, 1812 — RADIUS-serverpoort, testing321 — RADIUS-serverclientwachtwoord (dat we in de configuratie hebben opgegeven).

Het resultaat van deze opdracht wordt ongeveer als volgt weergegeven:

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

Nu moeten we ervoor zorgen dat de gebruiker succesvol is geverifieerd. Om dit te doen, zullen we naar het log van multiotp zelf kijken:

tail /var/log/multiotp/multiotp.log

En als de laatste invoer daar is:

2016-09-01 08:58:17     notice  username  User    OK: User username successfully logged in from 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token accepted from 127.0.0.1

Daarna is alles goed gegaan en kunnen we afronden

Stap 5: Configureer Cisco ASA
Laten we het erover eens zijn dat we al een geconfigureerde groep en beleid hebben voor toegang via SLL VPN, geconfigureerd in combinatie met Active Directory, en dat we tweefactorauthenticatie voor dit profiel moeten toevoegen.

1. Voeg een nieuwe AAA-servergroep toe:

Ga naar 2FA (tweefactorauthenticatie voor ASA SSL VPN)
2. Voeg onze multiOTP-server toe aan de groep:

Ga naar 2FA (tweefactorauthenticatie voor ASA SSL VPN)
3. Wij bewerken verbindingsprofiel, waarbij de Active Directory-servergroep wordt ingesteld als de belangrijkste authenticatieserver:

Ga naar 2FA (tweefactorauthenticatie voor ASA SSL VPN)
4. Op het tabblad Geavanceerd -> Authenticatie We selecteren ook de Active Directory-servergroep:

Ga naar 2FA (tweefactorauthenticatie voor ASA SSL VPN)
5. Op het tabblad Geavanceerd -> Secundair authenticatie, selecteert u de aangemaakte servergroep waarin de multiOTP-server is geregistreerd. Houd er rekening mee dat de sessie-gebruikersnaam wordt overgenomen van de primaire AAA-servergroep:

Ga naar 2FA (tweefactorauthenticatie voor ASA SSL VPN)
Pas de instellingen toe en

Stap 6, oftewel de laatste
Laten we controleren of tweefactorauthenticatie werkt voor SLL VPN:

Ga naar 2FA (tweefactorauthenticatie voor ASA SSL VPN)
Voila! Wanneer u verbinding maakt via Cisco AnyConnect VPN Client, wordt u ook om een ​​tweede, eenmalig wachtwoord gevraagd.

Ik hoop dat dit artikel iemand zal helpen, en dat het iemand stof tot nadenken zal geven over hoe dit te gebruiken, gratis OTP-server, voor andere taken. Deel het in de reacties als je wilt.

Bron: www.habr.com

Voeg een reactie