Poreikis suteikti nuotolinę prieigą prie įmonės aplinkos iškyla vis dažniau, nesvarbu, ar jūsų vartotojams ar partneriams reikia prieigos prie konkretaus jūsų organizacijos serverio.
Šiems tikslams dauguma įmonių naudoja VPN technologiją, kuri pasitvirtino kaip patikimai apsaugotas būdas suteikti prieigą prie organizacijos vietinių išteklių.
Mano įmonė nebuvo išimtis, ir mes, kaip ir daugelis kitų, naudojame šią technologiją. Ir, kaip ir daugelis kitų, kaip nuotolinės prieigos šliuzą naudojame Cisco ASA 55xx.
Didėjant nuotolinių vartotojų skaičiui, reikia supaprastinti kredencialų išdavimo procedūrą. Tačiau tuo pat metu tai turi būti daroma nepakenkiant saugumui.
Mes patys radome sprendimą, naudojant dviejų veiksnių autentifikavimą prisijungiant per Cisco SSL VPN, naudojant vienkartinius slaptažodžius. Ir šis leidinys jums pasakys, kaip suorganizuoti tokį sprendimą su minimaliu laiko ir nulio sąnaudomis reikalingai programinei įrangai (su sąlyga, kad jūsų infrastruktūroje jau yra Cisco ASA).
Rinkoje gausu sprendimų, skirtų vienkartiniams slaptažodžiams generuoti, o kartu siūloma daug galimybių juos gauti, nesvarbu, ar tai būtų slaptažodžio siuntimas SMS žinute ar žetonų naudojimas, tiek aparatinė, tiek programinė įranga (pavyzdžiui, mobiliajame telefone). Tačiau noras sutaupyti ir noras sutaupyti savo darbdaviui, esant dabartinei krizei, privertė mane rasti nemokamą būdą įdiegti vienkartinių slaptažodžių generavimo paslaugą. Kuris, nors ir nemokamas, niekuo nenusileidžia komerciniams sprendimams (čia reikėtų rezervuotis, atkreipiant dėmesį, kad šis produktas turi ir komercinę versiją, tačiau sutarėme, kad mūsų kaštai pinigais bus nuliniai).
Taigi, mes turime:
- „Linux“ vaizdas su integruotu įrankių rinkiniu - multiOTP, FreeRADIUS ir nginx, skirtas prieigai prie serverio per žiniatinklį (http://download.multiotp.net/ - naudojau paruoštą VMware vaizdą)
— Active Directory serveris
- pati Cisco ASA (patogumui naudoju ASDM)
— Bet koks programinės įrangos prieigos raktas, palaikantis TOTP mechanizmą (aš, pavyzdžiui, naudoju Google Authenticator, bet tiks tas pats FreeOTP)
Nesileisiu į detales, kaip susiklosto vaizdas. Dėl to gausite Debian Linux su jau įdiegta multiOTP ir FreeRADIUS, sukonfigūruota dirbti kartu, ir žiniatinklio sąsają OTP administravimui.
1 veiksmas. Mes inicijuojame sistemą ir sukonfigūruojame ją jūsų tinklui
Pagal numatytuosius nustatymus sistemoje yra šakniniai kredencialai. Manau, visi atspėjo, kad po pirmo prisijungimo būtų gerai pakeisti root vartotojo slaptažodį. Taip pat turite pakeisti tinklo nustatymus (pagal numatytuosius nustatymus jis yra „192.168.1.44“, o šliuzas – „192.168.1.1“). Po to galite iš naujo paleisti sistemą.
Sukurkime vartotoją „Active Directory“. OTP, su slaptažodžiu MySuperPassword.
2 veiksmas. Nustatykite ryšį ir importuokite „Active Directory“ vartotojus
Norėdami tai padaryti, mums reikia prieigos prie konsolės ir tiesiai prie failo multiotp.php, naudodami sukonfigūruosime prisijungimo prie „Active Directory“ nustatymus.
Eikite į katalogą /usr/local/bin/multiotp/ ir paeiliui vykdykite šias komandas:
./multiotp.php -config default-request-prefix-pin=0
Nustato, ar reikia papildomo (nuolatinio) kaiščio įvedant vienkartinį PIN kodą (0 arba 1)
./multiotp.php -config default-request-ldap-pwd=0
Nustato, ar reikalingas domeno slaptažodis įvedant vienkartinį PIN kodą (0 arba 1)
./multiotp.php -config ldap-server-type=1
Nurodytas LDAP serverio tipas (0 = įprastas LDAP serveris, mūsų atveju 1 = Active Directory)
./multiotp.php -config ldap-cn-identifier="sAMAccountName"
Nurodomas vartotojo vardo pateikimo formatas (ši reikšmė rodo tik vardą, be domeno)
./multiotp.php -config ldap-group-cn-identifier="sAMAccountName"
Tas pats, tik grupei
./multiotp.php -config ldap-group-attribute="memberOf"
Nurodomas metodas, leidžiantis nustatyti, ar vartotojas priklauso grupei
./multiotp.php -config ldap-ssl=1
Ar turėčiau naudoti saugų ryšį su LDAP serveriu (žinoma, taip!)
./multiotp.php -config ldap-port=636
Prievadas, skirtas prisijungti prie LDAP serverio
./multiotp.php -config ldap-domain-controllers=adSRV.domain.local
Jūsų Active Directory serverio adresas
./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"
Mes nurodome, kur pradėti domeno vartotojų paiešką
./multiotp.php -config ldap-bind-dn="[email protected]"
Nurodykite vartotoją, turintį paieškos teises Active Directory
./multiotp.php -config ldap-server-password="MySuperPassword"
Nurodykite vartotojo slaptažodį, kad prisijungtumėte prie „Active Directory“.
./multiotp.php -config ldap-network-timeout=10
Prisijungimo prie „Active Directory“ skirtojo laiko nustatymas
./multiotp.php -config ldap-time-limit=30
Nustatome vartotojo importo operacijos laiko limitą
./multiotp.php -config ldap-activated=1
Aktyvinama „Active Directory“ ryšio konfigūracija
./multiotp.php -debug -display-log -ldap-users-sync
Mes importuojame vartotojus iš Active Directory
3 veiksmas. Sugeneruokite žetono QR kodą
Viskas čia labai paprasta. Naršyklėje atidarykite OTP serverio žiniatinklio sąsają, prisijunkite (nepamirškite pakeisti numatytojo administratoriaus slaptažodžio!) ir spustelėkite mygtuką „Spausdinti“:
Šio veiksmo rezultatas bus puslapis, kuriame yra du QR kodai. Pirmąjį iš jų drąsiai ignoruojame (nepaisant patrauklaus užrašo Google Authenticator / Authenticator / 2 Steps Authenticator), o antrąjį kodą vėl drąsiai nuskaitome į programinės įrangos prieigos raktą telefone:
(taip, tyčia sugadinau QR kodą, kad jis būtų neįskaitomas).
Atlikus šiuos veiksmus, jūsų programoje kas trisdešimt sekundžių bus generuojamas šešių skaitmenų slaptažodis.
Norėdami įsitikinti, galite tai patikrinti toje pačioje sąsajoje:
Įvesdami savo vartotojo vardą ir vienkartinį slaptažodį iš savo telefono programos. Ar gavote teigiamą atsakymą? Taigi eikime toliau.
4 veiksmas. Papildoma FreeRADIUS veikimo konfigūracija ir testavimas
Kaip minėjau aukščiau, multiOTP jau sukonfigūruotas dirbti su FreeRADIUS, belieka atlikti testus ir į FreeRADIUS konfigūracijos failą įtraukti informaciją apie mūsų VPN šliuzą.
Grįžtame į serverio konsolę, į katalogą /usr/local/bin/multiotp/, įveskite:
./multiotp.php -config debug=1
./multiotp.php -config display-log=1
Įskaitant išsamesnį registravimą.
FreeRADIUS klientų konfigūracijos faile (/etc/freeradius/clinets.conf) pakomentuokite visas eilutes, susijusias su localhost ir pridėkite du įrašus:
client localhost {
ipaddr = 127.0.0.1
secret = testing321
require_message_authenticator = no
}
- bandymui
client 192.168.1.254/32 {
shortname = CiscoASA
secret = ConnectToRADIUSSecret
}
– mūsų VPN šliuzui.
Iš naujo paleiskite FreeRADIUS ir pabandykite prisijungti:
radtest username 100110 localhost 1812 testing321
kur Nick = vartotojo vardas, 100110 = slaptažodis, kurį mums suteikė telefono programa, localhost = RADIUS serverio adresas, 1812 — RADIUS serverio prievadas, testing321 — RADIUS serverio kliento slaptažodis (kurį nurodėme konfigūracijoje).
Šios komandos rezultatas bus išvestas maždaug taip:
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
Dabar turime įsitikinti, kad vartotojas sėkmingai autentifikuotas. Norėdami tai padaryti, pažvelgsime į patį multiotp žurnalą:
tail /var/log/multiotp/multiotp.log
Ir jei paskutinis įrašas yra:
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
Tada viskas klostėsi gerai ir galime užbaigti
5 veiksmas: sukonfigūruokite „Cisco ASA“.
Sutikime, kad jau turime sukonfigūruotą grupę ir prieigos per SLL VPN strategijas, sukonfigūruotas kartu su „Active Directory“, ir šiam profiliui turime pridėti dviejų veiksnių autentifikavimą.
1. Pridėti naują AAA serverių grupę:
2. Pridėkite mūsų multiOTP serverį prie grupės:
3. Redaguojame ryšio profilis, nustatydami „Active Directory“ serverių grupę kaip pagrindinį autentifikavimo serverį:
4. Skirtuke Išplėstinė -> Autentifikavimas Taip pat pasirenkame Active Directory serverių grupę:
5. Skirtuke Išplėstinė -> Antrinė autentifikavimą, pasirinkite sukurtą serverių grupę, kurioje užregistruotas multiOTP serveris. Atminkite, kad seanso vartotojo vardas yra paveldėtas iš pirminės AAA serverių grupės:
Taikykite nustatymus ir
6 veiksmas, dar žinomas kaip paskutinis
Patikrinkime, ar dviejų veiksnių autentifikavimas veikia SLL VPN:
Voila! Kai prisijungiate per „Cisco AnyConnect VPN Client“, jūsų taip pat bus paprašyta įvesti antrą, vienkartinį slaptažodį.
Tikiuosi, kad šis straipsnis kam nors padės ir kažkam suteiks peno pagalvoti, kaip tai panaudoti, nemokamai OTP serveris, skirtas kitoms užduotims. Jei norite, pasidalinkite komentaruose.
Šaltinis: www.habr.com