Behovet av att tillhandahålla fjärråtkomst till den juridiska miljön blir allt mer vanligt, oavsett om det är interna användare eller partners som behöver åtkomst till en viss server i din organisation.
För dessa ändamål använder de flesta företag en VPN-teknologi som har visat sig vara ett pålitligt och säkert sätt att ge åtkomst till interna resurser i organisationen.
Mitt företag är inget undantag, och precis som många andra använder vi denna teknologi. Och, liksom många andra, använder vi Cisco ASA 55xx som fjärråtkomstgateway.
När antalet fjärranvändare ökar uppstår ett behov av att förenkla proceduren för att utfärda autentiseringsuppgifter. Men samtidigt måste detta göras utan att kompromissa med säkerheten.
För oss har vi funnit en lösning i att använda tvåfaktorsautentisering för anslutning via Cisco SSL VPN, med användning av engångslösenord. Och denna publikation kommer att berätta hur man organiserar en sådan lösning med minimal tidsåtgång och inga kostnader för nödvändig programvara (under förutsättning att Cisco ASA redan finns i din infrastruktur).
Marknaden är full av färdiga lösningar för att generera engångslösenord, med många alternativ för att ta emot dem, vare sig det är via SMS eller genom att använda hårdvara- eller programvarutoken (som till exempel på mobiltelefonen). Men strävan efter att spara pengar och önskemålet att spara pengar för sin arbetsgivare under den nuvarande krisen fick mig att hitta ett gratis sätt att implementera en tjänst för att generera engångslösenord. Vilken, trots sin gratishet, inte skiljer sig mycket från kommersiella lösningar (jag bör påpeka att denna produkt även har en kommersiell version, men vi har ju kommit överens om att kostnaderna i pengar ska vara noll).
Så, vi kommer att behöva:
— En Linux-avbild med inbyggd verktygssats — multiOTP, FreeRADIUS och nginx, för åtkomst till servern via webben (http://download.multiotp.net/ — jag använde en färdig avbild för VMware)
— En Active Directory-server
— Själva Cisco ASA (jag använder ASDM för enkelhetens skull)
— Vilken programvarutoken som helst som stöder TOTP-mekanismen (Jag använder till exempel Google Authenticator, men FreeOTP fungerar också).
Jag kommer inte att gå in på detaljerna kring att rulla ut bilden. I slutändan får du Debian Linux med förinstallerade multiOTP och FreeRADIUS, konfigurerade för att fungera tillsammans, samt ett webbgränssnitt för administration av OTP.
Steg 1. Initiera systemet och konfigurera det för ditt nätverk
Som standard kommer systemet med användaruppgifterna root root. Jag tror att alla kan räkna ut att det vore bra att ändra lösenordet för root-användaren efter första inloggningen. Det är också nödvändigt att ändra nätverksinställningarna (som standard är detta '192.168.1.44' med gateway '192.168.1.1'). Efter det kan systemet startas om.
I Active Directory skapar vi en användare otp, med lösenordet MySuperPassword.
Steg 2. Konfigurera anslutningen och importera användare från Active Directory
För detta behöver vi åtkomst till konsolen och, direkt, filen multiotp.php, som vi använder för att konfigurera anslutningsinställningarna till Active Directory.
Går till katalogen /usr/local/bin/multiotp/ och kör sedan följande kommandon i tur och ordning:
./multiotp.php -config default-request-prefix-pin=0Anger om en ytterligare (permanent) pin krävs vid inmatning av engångspin (0 eller 1)
./multiotp.php -config default-request-ldap-pwd=0Anger om en domänlösenord krävs vid inmatning av engångspin (0 eller 1)
./multiotp.php -config ldap-server-type=1Anger typen av LDAP-server (0 = vanlig LDAP-server, i vårt fall 1 = Active Directory)
./multiotp.php -config ldap-cn-identifier="sAMAccountName"Anger hur användarnamnet ska presenteras (detta värde kommer bara att visa namnet utan domänen)
./multiotp.php -config ldap-group-cn-identifier="sAMAccountName"Samma sak, men för grupper
./multiotp.php -config ldap-group-attribute="memberOf"Anger metoden för att bestämma om en användare tillhör en grupp
./multiotp.php -config ldap-ssl=1Om en säker anslutning till LDAP-servern ska användas (självklart ja!)
./multiotp.php -config ldap-port=636Porten för anslutning till LDAP-servern
./multiotp.php -config ldap-domain-controllers=adSRV.domain.localAdressen till din Active Directory-server
./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"Anger varifrån vi ska börja söka användare i domänen
./multiotp.php -config ldap-bind-dn="otp@domain.local"Anger användaren som har rätt att söka i Active Directory
./multiotp.php -config ldap-server-password="MySuperPassword"Anger lösenordet för användaren för att ansluta till Active Directory
./multiotp.php -config ldap-network-timeout=10Ställer in tidsgräns för anslutning till Active Directory
./multiotp.php -config ldap-time-limit=30Ställer in tidsgräns för importoperationen av användare
./multiotp.php -config ldap-activated=1Aktiverar konfigurationen för anslutning till Active Directory
.\/multiotp.php -debug -display-log -ldap-users-syncVi importerar användare från Active Directory
Steg 3. Generera QR-kod för token
Här är allt extremt enkelt. Öppna webbgränssnittet för OTP-servern i webbläsaren, logga in (glöm inte att ändra standardlösenordet för administratören!) och tryck på knappen "Skriv ut":

Resultatet av denna åtgärd kommer att vara en sida som innehåller två QR-koder. Vi struntar helt i den första (trots den tilltalande texten Google Authenticator \/ Authenticator \/ 2 Steps Authenticator) och skannar den andra koden i programvarutoken på telefonen:

(ja, jag har avsiktligt förstört QR-koden så att den blir oläslig).
Efter genomförda åtgärder kommer en sexsiffrig kod att genereras i din applikation var trettio sekunder.
För säkerhets skull kan en kontroll göras i samma gränssnitt:

Genom att skriva in användarnamnet och engångslösenordet från appen på telefonen. Fick du ett positivt svar? Då går vi vidare.
Steg 4. Finjustera och testa FreeRADIUS-funktionen
Som jag nämnde tidigare - multiOTP är redan konfigurerat för att fungera med FreeRADIUS, du behövde bara köra tester och lägga till information om vår VPN-gateway i konfigurationsfilen för FreeRADIUS.
Vi återvänder till serverns konsol, till katalogen /usr/local/bin/multiotp/, skriver in:
.\/multiotp.php -config debug=1\n.\/multiotp.php -config display-log=1Vilket därmed aktiverar mer detaljerad loggning.
I konfigurationsfilen för FreeRADIUS-klienter (/etc/freeradius/clinets.conf) kommenterar vi alla rader relaterade till localhost och lägger till två poster:
client localhost {\n ipaddr = 127.0.0.1\n secret = testing321\n require_message_authenticator = no\n}— för test
client 192.168.1.254\/32 {\n shortname = CiscoASA\n secret = ConnectToRADIUSSecret\n}— för vår VPN-gateway.
Starta om FreeRADIUS och försök att autentisera:
radtest användarnamn 100110 localhost 1812 testing321w username = användarnamn, 100110 = lösenordet från appen på telefonen, localhost = RADIUS-serverns adress, 1812 — RADIUS-serverns port, testing321 — lösenord för RADIUS-serverklienten (som vi angav i konfigurationen).
Resultatet av detta kommando kommer att vara en utmatning av ungefär följande innehåll:
Sending Access-Request of id 44 to 127.0.0.1 port 1812\n User-Name = "användarnamn"\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=20Nu behöver vi säkerställa att användaren har autentiserats framgångsrikt. För att göra detta kommer vi att titta i loggen för multiotp:
tail /var/log/multiotp/multiotp.logOch om den senaste posten där är:
2016-09-01 08:58:17 notice username User OK: Användare username har loggat in framgångsrikt från 127.0.0.1
2016-09-01 08:58:17 debug Debug Debug: 0 OK: Token accepterad från 127.0.0.1Då har allt gått bra, och vi kan utföra
Steg 5. Konfigurera Cisco ASA
Vi förutsätter att vi redan har en konfigurerad grupp och policyer för åtkomst via SSL VPN, konfigurerad i samarbete med Active Directory, och att vi behöver lägga till tvåfaktorsautentisering för denna profil.
1. Lägg till en ny grupp servrar AAA:

2. Lägg till vår multiOTP-server i gruppen:

3. Vi justerar anslutningsprofilen, ställer in gruppen av Active Directory-servrar som huvudautentiseringsserver:

4. På fliken Advanced -> Authentification välj också gruppen av Active Directory-servrar:

5. På fliken Advanced -> Secondary autentifiering väljer den skapade gruppen av servrar, där multiOTP-servern är angiven. Observera att Session username ärvs från den primära gruppen av AAA-servrar:

Tillämpa inställningarna och
Steg 6, den sista
Kontrollera om vi har tvåfaktorsautentisering för SSL VPN:

Voila! Vid anslutning via Cisco AnyConnect VPN Client kommer även den andra engångskoden att efterfrågas.
Jag hoppas att denna artikel hjälper någon och att den ger någon tankar kring hur man kan använda denna gratis OTP-server för andra uppgifter. Dela gärna i kommentarerna om ni har lust.
Källa: habr.com
