Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)

Potreba za daljinskim pristupom korporativnom okruženju javlja se sve češće, bez obzira da li se radi o vašim korisnicima ili partnerima koji trebaju pristup određenom serveru u vašoj organizaciji.

U ove svrhe većina kompanija koristi VPN tehnologiju, koja se pokazala kao pouzdano zaštićen način pružanja pristupa lokalnim resursima organizacije.

Moja kompanija nije bila izuzetak i mi, kao i mnoge druge, koristimo ovu tehnologiju. I, kao i mnogi drugi, mi koristimo Cisco ASA 55xx kao gateway za daljinski pristup.

Kako se broj udaljenih korisnika povećava, postoji potreba za pojednostavljenjem procedure za izdavanje akreditiva. Ali u isto vrijeme, to se mora učiniti bez ugrožavanja sigurnosti.

Za sebe smo pronašli rješenje u korištenju dvofaktorske autentifikacije za povezivanje putem Cisco SSL VPN-a, korištenjem jednokratnih lozinki. A ova publikacija će vam reći kako da organizujete takvo rešenje sa minimalnim vremenom i nula troškova za potreban softver (pod uslovom da već imate Cisco ASA u svojoj infrastrukturi).

Tržište obiluje rješenjima u kutijama za generiranje jednokratnih lozinki, a nudi puno opcija za njihovo dobivanje, bilo slanje lozinke putem SMS-a ili korištenje tokena, kako hardverskih tako i softverskih (na primjer, na mobilnom telefonu). Ali želja da uštedim novac i želja da uštedim novac za svog poslodavca, u trenutnoj krizi, natjerale su me da pronađem besplatan način za implementaciju servisa za generiranje jednokratnih lozinki. Što, iako besplatno, nije mnogo inferiorno u odnosu na komercijalna rješenja (ovdje treba napraviti rezervu, uz napomenu da ovaj proizvod ima i komercijalnu verziju, ali smo se dogovorili da će naši troškovi, u novcu, biti nula).

Dakle, trebat će nam:

- Linux slika sa ugrađenim setom alata - multiOTP, FreeRADIUS i nginx, za pristup serveru preko weba (http://download.multiotp.net/ - Koristio sam gotovu sliku za VMware)
— Server Active Directory
— Sam Cisco ASA (radi praktičnosti koristim ASDM)
— Bilo koji softverski token koji podržava TOTP mehanizam (ja, na primjer, koristim Google Authenticator, ali će to učiniti isti FreeOTP)

Neću ulaziti u detalje kako se slika odvija. Kao rezultat, dobit ćete Debian Linux s već instaliranim multiOTP i FreeRADIUS-om, konfiguriranim za zajednički rad i web sučeljem za OTP administraciju.

Korak 1. Pokrećemo sistem i konfigurišemo ga za vašu mrežu
Podrazumevano, sistem dolazi sa root root vjerodajnicama. Mislim da su svi pogodili da bi bilo dobro promijeniti root korisničku lozinku nakon prve prijave. Takođe morate da promenite mrežna podešavanja (podrazumevano je '192.168.1.44' sa mrežnim prolazom '192.168.1.1'). Nakon toga možete ponovo pokrenuti sistem.

Kreirajmo korisnika u Active Directory otp, sa lozinkom MySuperPassword.

Korak 2. Podesite vezu i uvezite Active Directory korisnike
Da bismo to uradili, potreban nam je pristup konzoli i direktno fajlu multiotp.php, pomoću koje ćemo konfigurirati postavke povezivanja na Active Directory.

Idi na imenik /usr/local/bin/multiotp/ i izvedite redom sljedeće naredbe:

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

Određuje da li je potreban dodatni (trajni) pin kada se unese jednokratni pin (0 ili 1)

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

Određuje da li je potrebna lozinka domene prilikom unosa jednokratnog PIN-a (0 ili 1)

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

Tip LDAP servera je naznačen (0 = običan LDAP server, u našem slučaju 1 = Active Directory)

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

Određuje format u kojem će se prikazati korisničko ime (ova vrijednost će prikazati samo ime, bez domene)

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

Ista stvar, samo za grupu

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

Određuje metodu za određivanje pripada li korisnik grupi

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

Da li treba da koristim sigurnu vezu sa LDAP serverom (naravno - da!)

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

Port za povezivanje na LDAP server

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

Adresa vašeg Active Directory servera

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

Naznačavamo odakle početi tražiti korisnike u domeni

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

Navedite korisnika koji ima prava pretraživanja u Active Directory

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

Odredite korisničku lozinku za povezivanje na Active Directory

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

Postavljanje vremenskog ograničenja za povezivanje na Active Directory

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

Postavili smo vremensko ograničenje za operaciju uvoza korisnika

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

Aktiviranje konfiguracije veze Active Directory

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

Uvozimo korisnike iz Active Directory

Korak 3. Generirajte QR kod za token
Ovdje je sve krajnje jednostavno. Otvorite web sučelje OTP servera u pretraživaču, prijavite se (ne zaboravite promijeniti zadanu lozinku za administratora!), i kliknite na dugme “Print”:

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
Rezultat ove akcije će biti stranica koja sadrži dva QR koda. Prvi od njih hrabro ignoriramo (uprkos atraktivnom natpisu Google Authenticator / Authenticator / 2 Steps Authenticator), a drugi kod opet hrabro skeniramo u softverski token na telefonu:

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
(da, namjerno sam pokvario QR kod da ga učinim nečitljivim).

Nakon dovršetka ovih radnji, šestocifrena lozinka će se početi generirati u vašoj aplikaciji svakih trideset sekundi.

Da biste bili sigurni, možete to provjeriti u istom interfejsu:

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
Unošenjem korisničkog imena i jednokratne lozinke iz aplikacije na telefonu. Jeste li dobili pozitivan odgovor? Pa idemo dalje.

Korak 4. Dodatna konfiguracija i testiranje rada FreeRADIUS-a
Kao što sam već spomenuo, multiOTP je već konfiguriran za rad sa FreeRADIUS-om, sve što ostaje je da pokrenemo testove i dodamo informacije o našem VPN gateway-u u FreeRADIUS konfiguracijski fajl.

Vraćamo se na serversku konzolu, u direktorij /usr/local/bin/multiotp/, unesite:

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

Uključujući detaljnije evidentiranje.

U konfiguracijskoj datoteci FreeRADIUS klijenata (/etc/freeradius/clinets.conf) komentirajte sve redove koji se odnose na localhost i dodajte dva unosa:

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

- za test

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

— za naš VPN gateway.

Ponovo pokrenite FreeRADIUS i pokušajte se prijaviti:

radtest username 100110 localhost 1812 testing321

gdje korisničko ime = korisničko ime, 100110 = lozinka koju nam je dala aplikacija na telefonu, localhost = adresa RADIUS servera, 1812 — RADIUS port servera, testiranje321 — Lozinka klijenta RADIUS servera (koju smo naveli u konfiguraciji).

Rezultat ove naredbe će biti ispisan otprilike na sljedeći način:

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

Sada moramo biti sigurni da je korisnik uspješno autentificiran. Da bismo to učinili, pogledat ćemo sam dnevnik multiotp-a:

tail /var/log/multiotp/multiotp.log

A ako zadnji unos postoji:

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

Onda je sve prošlo kako treba i možemo završiti

Korak 5: Konfigurišite Cisco ASA
Da se dogovorimo da već imamo konfigurisanu grupu i politike za pristup preko SLL VPN-a, konfigurisane u sprezi sa Active Directory-om, i moramo da dodamo dvofaktorsku autentifikaciju za ovaj profil.

1. Dodajte novu grupu AAA servera:

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
2. Dodajte naš multiOTP server u grupu:

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
3. Pravilo profil veze, postavljanje grupe Active Directory servera kao glavnog servera za autentifikaciju:

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
4. Na kartici Napredno -> Autentifikacija Također biramo grupu Active Directory servera:

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
5. Na kartici Napredno -> Sekundarno autentifikaciju, izaberite kreiranu grupu servera u kojoj je registrovan multiOTP server. Imajte na umu da je korisničko ime sesije naslijeđeno od primarne grupe AAA servera:

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
Primijenite postavke i

Korak 6, zvani poslednji
Provjerimo radi li dvofaktorska autentifikacija za SLL VPN:

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
Voila! Kada se povezujete preko Cisco AnyConnect VPN klijenta, od vas će se tražiti i druga, jednokratna lozinka.

Nadam se da će ovaj članak nekome pomoći, a da će nekom dati povoda za razmišljanje kako da ovo iskoristi, бесплатный OTP server, za druge zadatke. Podijelite u komentarima ako želite.

izvor: www.habr.com

Dodajte komentar