Behovet for at give fjernadgang til miljøet i virksomheden bliver stadig mere almindeligt, uanset om det drejer sig om jeres egne brugere eller partnere, der har brug for adgang til en eller anden server i jeres organisation.
Til disse formål bruger de fleste virksomheder en VPN-teknologi, der har vist sig at være en pålidelig og sikker måde at give adgang til organisationens lokale ressourcer.
Min virksomhed er ingen undtagelse, og vi bruger ligesom mange andre denne teknologi. Og som mange andre anvender vi en Cisco ASA 55xx som gateway til fjernadgang.
Når antallet af fjernbrugere stiger, opstår der behov for at lette proceduren for udlevering af legitimationsoplysninger. Men samtidig er det nødvendigt at gøre dette uden at gå på kompromis med sikkerheden.
For os fandt vi en løsning i anvendelsen af tofaktorautentifikation til forbindelse via Cisco SSL VPN, ved brug af engangskoder. Og denne publikation vil fortælle, hvordan man organiserer en sådan løsning med minimal tidsforbrug og ingen omkostninger til nødvendig software (forudsat at Cisco ASA allerede er i din infrastruktur).
Markedet er fyldt med færdige løsninger til generation af engangskoder, der tilbyder mange muligheder for at modtage dem, hvad enten det er ved at sende koden via SMS eller ved at bruge tokens, både hardware- og softwarebaserede (f.eks. på mobiltelefonen). Men ønsket om at spare penge og sikre penge til sin arbejdsgiver under den nuværende krise fik mig til at finde en gratis måde at realisere en service til generation af engangskoder på. Som ved sin gratished næppe er ringere end kommercielle løsninger (det skal bemærkes, at dette produkt også har en kommerciel version, men vi har jo aftalt, at vi ikke har nogen omkostninger).
Så, vi får brug for:
— Et Linux-image med et indbygget værktøjssæt — multiOTP, FreeRADIUS og nginx, for adgang til serveren via web (http://download.multiotp.net/ — jeg brugte et færdigt billede til VMware)
— En Active Directory-server
— Selve Cisco ASA (jeg bruger ASDM for nemheds skyld)
— Enhver softwaretoken, der understøtter TOTP-mekanismen (jeg bruger f.eks. Google Authenticator, men FreeOTP fungerer også)
Jeg vil ikke gå ind i detaljerne om, hvordan billedet implementeres. I sidste ende får du Debian Linux med multiOTP og FreeRADIUS allerede installeret, konfigureret til at arbejde sammen, samt et webinterface til administration af OTP.
Trin 1. Vi starter systemet og konfigurerer det til dit netværk
Som standard leveres systemet med root-godkendelser som root root. Jeg tror, at alle kan gætte, at det ville være en god idé at ændre root-brugerens adgangskode efter første login. Du skal også ændre netværksindstillingerne (standard er ‘192.168.1.44’ med gateway ‘192.168.1.1’). Herefter kan systemet genstartes.
I Active Directory opretter vi en bruger otp, med adgangskoden MySuperPassword.
Trin 2. Vi konfigurerer forbindelsen og importerer Active Directory-brugere
For dette har vi brug for adgang til konsollen, og filen multiotp.php, som vi bruger til at konfigurere forbindelsesparametrene til Active Directory.
Går ind i mappen /usr/local/bin/multiotp/ og udfører derefter følgende kommandoer én ad gangen:
.\/multiotp.php -config default-request-prefix-pin=0Angiver, om der kræves en ekstra (permanent) PIN ved indtastning af den engangs-PIN (0 eller 1)
.\/multiotp.php -config default-request-ldap-pwd=0Angiver, om der kræves indtastning af domæneadgangskoden ved indtastning af den engangs-PIN (0 eller 1)
.\/multiotp.php -config ldap-server-type=1Angiver typen af LDAP-server (0 = almindelig LDAP-server, i vores tilfælde 1 = Active Directory)
.\/multiotp.php -config ldap-cn-identifier="sAMAccountName"Angiver i hvilket format brugernavnet skal repræsenteres (denne værdi vil kun vise navnet uden domænet)
.\/multiotp.php -config ldap-group-cn-identifier="sAMAccountName"Det samme, men for gruppen
.\/multiotp.php -config ldap-group-attribute="memberOf"Angiver metoden til at bestemme brugerens medlemskab af gruppen
.\/multiotp.php -config ldap-ssl=1Skal der anvendes en sikker forbindelse til LDAP-serveren (selvfølgelig — ja!)
.\/multiotp.php -config ldap-port=636Port til forbindelse til LDAP-serveren
.\/multiotp.php -config ldap-domain-controllers=adSRV.domain.localAdressen på din Active Directory-server
.\/multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"Angiver, hvor søgningen efter brugere i domænet skal starte
.\/multiotp.php -config ldap-bind-dn="otp@domain.local"Angiver brugeren, der har rettigheder til at søge i Active Directory
.\/multiotp.php -config ldap-server-password="MySuperPassword"Angiver adgangskoden til brugeren for at oprette forbindelse til Active Directory
.\/multiotp.php -config ldap-network-timeout=10Indstiller timeout for forbindelsen til Active Directory
.\/multiotp.php -config ldap-time-limit=30Indstiller tidsbegrænsningen for importoperationen af brugere
.\/multiotp.php -config ldap-activated=1Aktiverer konfigurationen tilslutning til Active Directory
.\/multiotp.php -debug -display-log -ldap-users-syncImporter brugere fra Active Directory
Trin 3. Genererer QR-kode til token
Her er det helt enkelt. Åbn webgrænsefladen til OTP-serveren i din browser, log ind (glem ikke at ændre standardadministratoradgangskoden!), og klik på knappen «Print»:

Resultatet af denne handling vil være en side, der indeholder to QR-koder. Vi ignorerer trygt den første (på trods af den tiltalende tekst Google Authenticator / Authenticator / 2 Steps Authenticator), og scannede igen det andet kode i softwaretoken på telefonen:

(ja, jeg har med vilje gjort QR-koden uleselig).
Efter at have udført disse handlinger vil din app generere en sekssifret adgangskode hvert tredive sekund.
For at være sikker kan du udføre en kontrol i den samme grænseflade:

Indtast brugernavnet og den engangskode fra appen på telefonen. Fikset du et positivt svar? Så går vi videre.
Trin 4. Finjustere og teste FreeRADIUSs funktionalitet
Som nævnt ovenfor - multiOTP er allerede konfigureret til at arbejde med FreeRADIUS, der er kun behov for at udføre test og tilføje information om vores VPN-gateway i konfigurationsfilen for FreeRADIUS.
Vi vender tilbage til serverkonsollen, til mappen /usr/local/bin/multiotp/, indtaster:
.\/multiotp.php -config debug=1\n.\/multiotp.php -config display-log=1Og dermed aktiverer mere detaljeret logning.
I konfigurationsfilen for FreeRADIUS-klienter (/etc/freeradius/clinets.conf) kommenterer vi alle linjer, der vedrører localhost og tilføjer to poster:
client localhost {\n ipaddr = 127.0.0.1\n secret = testing321\n require_message_authenticator = no\n}— til test
client 192.168.1.254\/32 {\n shortname = CiscoASA\n secret = ConnectToRADIUSSecret\n}— til vores VPN-gateway.
Genstart FreeRADIUS og prøv at logge ind:
radtest username 100110 localhost 1812 testing321hvor brugernavn = brugernavn, 100110 = adgangskode, der gives til os af appen på telefonen, localhost = adresse til RADIUS-serveren, 1812 — porten til RADIUS-serveren, testing321 — adgangskode til RADIUS-klienten (som vi angav i konfigurationen).
Resultatet af denne kommando vil være en output, der ligner følgende indhold:
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=20Nu skal vi sikre os, at brugeren har gennemført godkendelsen. Til dette vil vi kigge i loggen for multiotp:
tail /var/log/multiotp/multiotp.logOg hvis den seneste post der er:
2016-09-01 08:58:17 notice brugernavn Bruger OK: Bruger brugernavn logget ind med succes fra 127.0.0.1
2016-09-01 08:58:17 debug Debug Debug: 0 OK: Token accepteret fra 127.0.0.1Så er alt gået igennem med succes, og vi kan udføre
Trin 5. Konfiguration af Cisco ASA
Lad os antage, at vi allerede har en konfigureret gruppe og politikker for adgang via SSL VPN, der er opsat i samarbejde med Active Directory, og vi skal tilføje to-faktor-godkendelse til denne profil.
1. Vi tilføjer en ny gruppe servere AAA:

2. Vi tilføjer vores multiOTP-server til gruppen:

3. Vi retter forbindelsesprofilen, og sætter gruppen af Active Directory-servere som hovedserver for godkendelse:

4. Under fanen Avanceret -> Godkendelse vi vælger også gruppen af Active Directory-servere:

5. Under fanen Avanceret -> Sekundær for godkendelse vælger vi den oprettede gruppe af servere, hvor multiOTP-serveren er angivet. Vi bemærker, at session brugernavn arves fra den primære gruppe af AAA-servere:

Vi anvender indstillingerne og
Trin 6, også det sidste
Vi kontrollerer, om vores to-faktor-godkendelse fungerer for SSL VPN:

Voilà! Når du opretter forbindelse via Cisco AnyConnect VPN Client, vil der også blive bedt om en anden, engangs, adgangskode.
Jeg håber, at denne artikel kan hjælpe nogen, og at den giver stof til eftertanke om, hvordan denne gratis OTP-server kan bruges til andre opgaver. Del gerne i kommentarerne, hvis du har lyst.
Kilde: habr.com
