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

Potreba za pružanjem daljinskog pristupa korporativnom okruženju sve se češće javlja, bez obzira radi li se o vašim korisnicima ili partnerima koji trebaju pristup određenom poslužitelju u vašoj organizaciji.

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

Moja tvrtka nije bila iznimka i mi, kao i mnogi drugi, koristimo ovu tehnologiju. Kao i mnogi drugi, koristimo Cisco ASA 55xx kao pristupnik za daljinski pristup.

Kako se broj udaljenih korisnika povećava, javlja se potreba za pojednostavljenjem postupka izdavanja vjerodajnica. 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, koristeći jednokratne lozinke. A ova publikacija će vam reći kako organizirati takvo rješenje uz minimalno vrijeme i nula troškova za potreban softver (pod uvjetom da već imate Cisco ASA u svojoj infrastrukturi).

Tržište je prepuno kutijastih rješenja za generiranje jednokratnih lozinki, a nudi mnoštvo opcija za njihovo dobivanje, bilo da se radi o slanju lozinke putem SMS-a ili korištenjem tokena, hardverski i softverski (na primjer, na mobitelu). Ali želja za uštedom i želja za uštedom za svog poslodavca, u trenutnoj krizi, natjerale su me da pronađem besplatan način implementacije usluge za generiranje jednokratnih lozinki. Koji, iako je besplatan, nije puno inferioran komercijalnim rješenjima (ovdje treba napraviti rezervu, uz napomenu da ovaj proizvod ima i komercijalnu verziju, ali dogovorili smo se da će naši troškovi, u novcu, biti nula).

Dakle, trebamo:

- Linux slika s ugrađenim skupom alata - multiOTP, FreeRADIUS i nginx, za pristup poslužitelju putem weba (http://download.multiotp.net/ - koristio sam gotovu sliku za VMware)
— Active Directory poslužitelj
— Sam Cisco ASA (radi praktičnosti koristim ASDM)
— Bilo koji softverski token koji podržava TOTP mehanizam (ja, na primjer, koristim Google Authenticator, ali isto će poslužiti i FreeOTP)

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

Korak 1. Pokrećemo sustav i konfiguriramo ga za vašu mrežu
Prema zadanim postavkama, sustav dolazi s root root vjerodajnicama. Mislim da su svi pogodili da bi bilo dobro promijeniti root korisničku lozinku nakon prve prijave. Također trebate promijeniti mrežne postavke (prema zadanim postavkama to je '192.168.1.44' s pristupnikom '192.168.1.1'). Nakon toga možete ponovno pokrenuti sustav.

Kreirajmo korisnika u Active Directory OTP, sa lozinkom MySuperPassword.

Korak 2. Postavite vezu i uvezite Active Directory korisnike
Da bismo to učinili, potreban nam je pristup konzoli i izravno datoteci multiotp.php, pomoću kojeg ćemo konfigurirati postavke povezivanja s Active Directoryjem.

Idi u imenik /usr/local/bin/multiotp/ i redom izvršite sljedeće naredbe:

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

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

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

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

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

Navedena je vrsta LDAP poslužitelja (0 = regularni LDAP poslužitelj, u našem slučaju 1 = Active Directory)

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

Određuje format u kojem se prikazuje korisničko ime (ova će vrijednost 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

Trebam li koristiti sigurnu vezu s LDAP poslužiteljem (naravno, da!)

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

Port za spajanje na LDAP poslužitelj

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

Vaša adresa poslužitelja Active Directory

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

Naznačujemo gdje započeti traženje korisnika 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"

Navedite korisničku lozinku za spajanje na Active Directory

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

Postavljanje vremenskog ograničenja za povezivanje s Active Directoryjem

./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-a

Korak 3. Generirajte QR kod za token
Ovdje je sve krajnje jednostavno. Otvorite web sučelje OTP poslužitelja u pregledniku, prijavite se (ne zaboravite promijeniti zadanu lozinku za administratora!) i kliknite na gumb "Ispis":

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

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
(da, namjerno sam pokvario QR kod da bude nečitljiv).

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

Kako biste bili sigurni, možete to provjeriti u istom sučelju:

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
Unosom 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 gore spomenuo, multiOTP je već konfiguriran za rad s FreeRADIUS-om, sve što preostaje je pokrenuti testove i dodati informacije o našem VPN pristupniku u FreeRADIUS konfiguracijsku datoteku.

Vraćamo se na konzolu poslužitelja, u direktorij /usr/local/bin/multiotp/, Unesi:

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

Uključujući detaljnije bilježenje.

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

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

- za probu

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

— za naš VPN gateway.

Ponovno pokrenite FreeRADIUS i pokušajte se prijaviti:

radtest username 100110 localhost 1812 testing321

gdje korisničko ime = korisničko ime, 100110 = lozinka koju nam daje aplikacija na telefonu, localhost = adresa RADIUS poslužitelja, 1812 — priključak RADIUS poslužitelja, testing321 — Lozinka klijenta RADIUS poslužitelja (koju smo naveli u konfiguraciji).

Rezultat ove naredbe bit će ispisan otprilike ovako:

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 dnevnik samog multiotp-a:

tail /var/log/multiotp/multiotp.log

A ako je posljednji unos:

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 dobro i možemo završiti

Korak 5: Konfigurirajte Cisco ASA
Složimo se da već imamo konfiguriranu grupu i pravila za pristup putem SLL VPN-a, konfiguriranu u sprezi s Active Directoryjem, te moramo dodati dvofaktorsku autentifikaciju za ovaj profil.

1. Dodajte novu grupu AAA poslužitelja:

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

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
3. Mi uređujemo profil veze, postavljanje grupe poslužitelja Active Directory kao glavnog autentifikacijskog poslužitelja:

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
4. U kartici Napredno -> Autentikacija Također odabiremo grupu poslužitelja Active Directory:

Idite na 2FA (dvofaktorska autentifikacija za ASA SSL VPN)
5. U kartici Napredno -> Sekundarno autentifikaciju, odaberite stvorenu grupu poslužitelja u kojoj je registriran multiOTP poslužitelj. Imajte na umu da je korisničko ime Sesije naslijeđeno od primarne grupe poslužitelja AAA:

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

Korak 6, poznat i kao posljednji
Provjerimo radi li dvofaktorska autentifikacija za SLL VPN:

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

Nadam se da će ovaj članak nekome pomoći i da će nekome dati povoda za razmišljanje kako ovo koristiti, besplatno OTP poslužitelj, za druge zadatke. Podijelite u komentarima ako želite.

Izvor: www.habr.com

Dodajte komentar