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":
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:
(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:
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:
2. Dodajte naš multiOTP poslužitelj u grupu:
3. Mi uređujemo profil veze, postavljanje grupe poslužitelja Active Directory kao glavnog autentifikacijskog poslužitelja:
4. U kartici Napredno -> Autentikacija Također odabiremo grupu poslužitelja Active Directory:
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:
Primijenite postavke i
Korak 6, poznat i kao posljednji
Provjerimo radi li dvofaktorska autentifikacija za SLL 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