Lépjen a 2FA-ra (Kétfaktoros hitelesítés az ASA SSL VPN-hez)

A vállalati környezet távoli hozzáférésének iránti igény egyre gyakoribbá válik, függetlenül attól, hogy a felhasználók saját vagy partnerek, akiknek szükségük van hozzáférésre a szerverekhez az Ön szervezetében.

Ezekhez a célokhoz a legtöbb vállalat a VPN technológiát használja, amely megbízhatónak bizonyult a helyi erőforrásokhoz való hozzáférés biztosításának biztonságos módjaként.

A mi cégünk sem volt kivétel, mi is, mint sok más, ezt a technológiát alkalmazzuk, és mint sok más, a távoli hozzáférési átjárónak a Cisco ASA 55xx-t használjuk.

A távoli felhasználók számának növekedésével felmerül az igény az azonosítók kiadásának folyamatának egyszerűsítésére. De mindeközben ezt nem szabad a biztonság rovására tenni.

Számunkra a megoldás a Cisco SSL kétfaktoros hitelesítés alkalmazásában rejlik, VPNamely egy egyszer használatos jelszóval történik. Ez a publikáció arról szól, hogyan valósíthatjuk meg ezt a megoldást minimális időráfordítással és nullás költséggel a szükséges szoftverre (feltéve, hogy a Cisco ASA már része a infrastruktúránknak).

A piacon számos, kész megoldások találhatók egyszer használatos jelszavak generálására, sokféle lehetőséggel az előállításukra, legyen az jelszó SMS-ben történő küldése vagy tokenek használata, akár hardveres, akár szoftveres (például mobiltelefonon). Azonban a költségmegtakarítás iránti vágy és a munkaadóm számára megtakarított pénz keresése a jelenlegi válság körülményei között arra késztetett, hogy ingyenes megoldást találjak az egyszer használatos jelszavak generálására. Mely, ingyenessége ellenére, alig marad el a kereskedelmi megoldásoktól (itt érdemes megemlíteni, hogy a terméknek van kereskedelmi verziója is, de mi megállapodtunk abban, hogy a költségek, a pénz szempontjából, nullák lesznek).

Tehát, szükségünk lesz:

— Egy Linux-kiadás beépített eszközkészlettel — multiOTP, FreeRADIUS és nginx, a szerver webes hozzáféréséhez (http://download.multiotp.net/ — én a VMware-hez készült kész képet használtam)
— Active Directory szerver
— Továbbá Cisco ASA (én a kényelmesség kedvéért az ASDM-et használom)
— Bármilyen szoftveres token, amely támogatja a TOTP mechanizmust (például én a Google Authenticator-t használom, de a FreeOTP is megfelelő)

Nem fogok részletekbe bonyolódni a képfájl kiépítéséről. A kimenetben egy Debian Linux rendszerrel fog rendelkezni, amelyen már telepítve van a multiOTP és a FreeRADIUS, valamint egy webes felület az OTP adminisztrálásához.

1. lépés. Indítsuk el a rendszert és állítsuk be a saját hálózatunknak megfelelően
Alapértelmezés szerint a rendszer a root root azonosítóval érkezik. Gondolom, mindenki kitalálta, hogy érdemes lenne megváltoztatni a root felhasználó jelszavát az első bejelentkezés után. A hálózati beállításokat is meg kell változtatni (alapértelmezett IP: '192.168.1.44', átjáró: '192.168.1.1'). A rendszer újraindítása után folytathatjuk.

Hozzunk létre egy felhasználót az Active Directory-ban otp, jelszóval MySuperPassword.

2. lépés. Állítsuk be a kapcsolatot és importáljuk az Active Directory felhasználókat
Ehhez szükségünk lesz a konzolhoz való hozzáférésre, valamint a következő fájlra multiotp.php, amelyet a csatlakozási paraméterek beállításához fogunk használni az Active Directory-hoz.

Lépjünk a könyvtárba /usr/local/bin/multiotp/ és egymás után az alábbi parancsokat hajtjuk végre:

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

Ez megadja, hogy szükséges-e egy kiegészítő (állandó) PIN megadása az egyszeri PIN beviteléhez (0 vagy 1)

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

Ez annak megadását jelent, hogy szükséges-e a domain jelszó megadása az egyszeri PIN beviteléhez (0 vagy 1)

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

A LDAP-szerver típusát adja meg (0 = normál LDAP-szerver, 1 = Active Directory)

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

Megadja, hogy milyen formátumban kell megjeleníteni a felhasználó nevét (ez az érték csak a nevet adja meg, a domain nélkül)

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

Ugyanez, csak csoport számára

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

Megadja a csoporthoz való tartozás meghatározásának módját

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

Biztonságos kapcsolatot használunk a LDAP-szerverhez (természetesen — igen!)

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

Port a LDAP-szerverhez való csatlakozáshoz

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

Az Active Directory szervere címét adjuk meg

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

Megadjuk, honnan kezdjük a felhasználók keresését a domainben

.\/multiotp.php -config ldap-bind-dn="otp@domain.local"

Megadjuk a felhasználót, akinek joga van keresni az Active Directory-ban

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

Megadjuk a felhasználó jelszavát, hogy csatlakozzunk az Active Directory-hoz

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

Beállítjuk a timeout-ot az Active Directory-hoz való csatlakozáshoz

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

Beállítjuk az időkorlátot a felhasználói import művelethez

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

Aktiváljuk az Active Directory-hoz való csatlakozási konfigurációt

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

Felhasználók importálása az Active Directory-ból

3. lépés. QR-kód generálása a tokenhez
Itt minden nagyon egyszerű. Megnyitjuk az OTP-kiszolgáló webes felületét a böngészőben, bejelentkezünk (ne felejtsük el megváltoztatni az alapértelmezett admin jelszót!), és rákattintunk a 'Print' gombra:

Lépjen a 2FA-ra (Kétfaktoros hitelesítés az ASA SSL VPN-hez)
Ennek az akciónak az eredménye egy olyan oldal, amelyen két QR-kód található. Nyugodtan figyelmen kívül hagyjuk az elsőt (a Google Authenticator / Authenticator / 2 Steps Authenticator vonzó felirata ellenére), és ismét nyugodtan beolvassuk a második kódot a telefonon lévő szoftveres tokenbe:

Lépjen a 2FA-ra (Kétfaktoros hitelesítés az ASA SSL VPN-hez)
(igen, szándékosan elrontottam a QR-kódot, hogy olvashatatlanná tegyem).

Ezeket a lépéseket követően az alkalmazásban minden harminc másodpercben generálódni fog egy hat számjegyű jelszó.

A pontosság kedvéért lehetőség van ellenőrzésre is, ugyanebben a felületen:

Lépjen a 2FA-ra (Kétfaktoros hitelesítés az ASA SSL VPN-hez)
Írjuk be a felhasználónevet és az alkalmazásból származó egyszer használatos jelszót. Pozitív választ kaptunk? Akkor haladjunk tovább.

4. lépés. A FreeRADIUS beállítása és működésének tesztelése
Ahogyan korábban említettem - a multiOTP már be van állítva a FreeRADIUS-nal való munkára, csak teszteket kell végezni és be kell illeszteni a FreeRADIUS konfigurációs fájljába a VPN-átjárónk adatait.

Visszatérünk a szerver konzoljára, a könyvtárba /usr/local/bin/multiotp/, beírjuk:

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

Ezzel részletesebb naplózást aktiválunk.

A FreeRADIUS kliens konfigurációs fájljában (/etc/freeradius/clinets.conf) kommentáljuk ki az összes olyan sort, amely a localhost és adjunk hozzá két bejegyzést:

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

— a teszthez

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

— a VPN-átjárónk számára.

Újraindítjuk a FreeRADIUS-t és megpróbálunk hitelesíteni:

radtest username 100110 localhost 1812 testing321

ahol username = felhasználónév, 100110 = az alkalmazáson keresztül kapott jelszó, localhost = a RADIUS-kiszolgáló címe, 1812 = a RADIUS-kiszolgáló portja, testing321 = a RADIUS-kiszolgáló kliensének jelszava (amit a konfigurációban megadtunk).

Ennek a parancsnak az eredménye körülbelül a következő tartalom lesz:

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=20

Most már meg kell győződnünk arról, hogy a felhasználó sikeresen átesett az azonosításon. Ehhez megnézzük a multiotp naplóját:

tail /var/log/multiotp/multiotp.log

És ha az utolsó bejegyzés ott a következő lesz:

2016-09-01 08:58:17     notice  username  Felhasználó  OK: A 'username' felhasználó sikeresen bejelentkezett a(z) 127.0.0.1 címről
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token elfogadva a(z) 127.0.0.1 címről

Akkor minden rendben zajlott, és végrehajthatjuk

5. lépés. Cisco ASA beállítása
Tegyük fel, hogy már van egy beállított csoport és SSL VPN hozzáférési politikák, amelyeket az Active Directory-val együtt készítettünk, és kettős hitelesítést kell hozzáadnunk ehhez a profilhoz.

1. Új csoport hozzáadása szerverek AAA:

Lépjen a 2FA-ra (Kétfaktoros hitelesítés az ASA SSL VPN-hez)
2. Hozzáadjuk csoporthoz a multiOTP szervert:

Lépjen a 2FA-ra (Kétfaktoros hitelesítés az ASA SSL VPN-hez)
3. Módosítjuk a kapcsolat profilját, beállítva, hogy az Active Directory szervercsoport szolgáltatása legyen a fő hitelesítési szerver:

Lépjen a 2FA-ra (Kétfaktoros hitelesítés az ASA SSL VPN-hez)
4. A Advanced -> Authentification Ugyanúgy kiválasztjuk az Active Directory szerverek csoportját:

Lépjen a 2FA-ra (Kétfaktoros hitelesítés az ASA SSL VPN-hez)
5. A Advanced -> Secondary a hitelesítést választva a létrehozott szervercsoportot, amelyben a multiOTP szerver szerepel. Megjegyezzük, hogy a session username az AAA elsődleges szervercsoportból származik:

Lépjen a 2FA-ra (Kétfaktoros hitelesítés az ASA SSL VPN-hez)
Alkalmazzuk a beállításokat, és

6. lépés, az utolsó
Ellenőrizzük, hogy működik-e a kettős hitelesítés az SSL VPN-hez:

Lépjen a 2FA-ra (Kétfaktoros hitelesítés az ASA SSL VPN-hez)
Vua-la! A Cisco AnyConnect VPN Client segítségével való csatlakozáskor is kérni fogja a második, egyszer használatos jelszót.

Remélem, hogy ez a cikk segíteni fog valakinek, és hogy inspirációt ad arra, hogyan lehet használni ezt a ingyenes OTP-szervert más feladatokra. Ossza meg megjegyzésekben, ha kedve támad hozzá.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster