
Ma szeretném megosztani, hogyan állítsuk be a kétfaktoros hitelesítési szervert a vállalati hálózat, weboldalak, szolgáltatások és SSH védelmére. A szerveren a LinOTP + FreeRadius kombinációja fog működni.
Miért van szükség rá?
Ez egy teljesen ingyenes, kényelmes megoldás, amely a saját hálózatán belül működik, nem függ harmadik fél szolgáltatóitól.
Ez a szolgáltatás nagyon kényelmes, szemléletes a többi nyílt forráskódú termékhez képest, és támogat egy hatalmas funkció- és politika mennyiséget (például login + jelszó + (PIN + OTPToken)). API-n keresztül integrálható SMS küldő szolgáltatásokkal (LinOTP Config->Provider Config->SMS Provider), generál kódokat a Google Authenticator típusú mobilalkalmazásokhoz és még sok egyébhez. Véleményem szerint ez kényelmesebb, mint a vizsgált szolgáltatás. .
Ez a szerver remekül működik Cisco ASA-val, OpenVPN szerverrel, Apache2-vel, és gyakorlatilag mindennel, ami támogatja a RADIUS szerveren keresztüli hitelesítést (például SSH számára a datacenterben).
Szükséges:
1) Debian 8 (Jessie) — Kötelező! (a Debian 9-ről szóló próbaverzió telepítése a cikk végén található)
Kezdés:
Telepítsük a Debian 8-at.
Hozzáadjuk a LinOTP tárolót:
# echo 'deb http://www.linotp.org/apt/debian jessie linotp' > /etc/apt/sources.list.d/linotp.listHozzáadjuk a kulcsokat:
# gpg --search-keys 913DFF12F86258E5Néha 'tiszta' telepítésnél, miután ezt a parancsot végrehajtottuk, a Debian ezt adja:
gpg: létrehozva a műveleti könyvtár `\/root\/.gnupg'\ngpg: új beállítási fájl létrehozva `\/root\/.gnupg\/gpg.conf'\ngpg: FIGYELEM: a `\/root\/.gnupg\/gpg.conf' fájlban lévő beállítások még nem aktívak ezen a futtatáson\ngpg: kulcsrendszertábla létrehozva `\/root\/.gnupg\/secring.gpg'\ngpg: kulcsrendszertábla létrehozva `\/root\/.gnupg\/pubring.gpg'\ngpg: nem megadva kulcservers (használjon --keyserver)\ngpg: hiba a kulcsservers keresésekor: hibás URI
Ez a gnupg kezdeti beállítása. Nincs semmi veszélyes. Csak futtassa a parancsot még egyszer.
A Debian kérdésére:
gpg: keresés "913DFF12F86258E5" a hkp kulcsszerveren keys.gnupg.net\n(1)\tLSE LinOTP2 csomagolás <linotp2@lsexperts.de>\n\t 2048 bites RSA kulcs F86258E5, létrehozva: 2010-05-10\nKulcsok 1-1 az 1-hez "913DFF12F86258E5". Kérjük, adja meg a számokat, N) Következő vagy Q) Kilépés>Válaszolunk: 1
Tovább:
# gpg --export 913DFF12F86258E5 | apt-key add -# apt-get updateTelepítsük a MySQL-t. Elméletileg más SQL szerver is használható, de a könnyebb kezelés érdekében én ezt fogom használni, mint a LinOTP ajánlott megoldását.
(további információk, beleértve a LinOTP adatbázisának újrakonfigurálását, a hivatalos dokumentációban találhatók a . Az ott található parancs: dpkg-reconfigure linotp a paraméterek módosításához, ha már telepítette a MySQL-t).
# apt-get install mysql-server# apt-get update (még egyszer ellenőrizni a frissítéseket nem árt)
Telepítsük a LinOTP-t és a kiegészítő modulokat:
# apt-get install linotp Válaszoljunk a telepítő kérdéseire:
Használni Apache2-t: igen
Találjon ki egy jelszót az admin LinOTP-hoz: „AzÖnJelszava”
Önjelölt tanúsítvány generálása?: igen
Használjuk a MySQL-t?: igen
A személyi adatbázis helye: localhost
Létrehozzuk a LinOTP adatbázist (adatbázis neve) a szerveren: LinOTP2
Létrehozunk egy külön felhasználót az adatbázis számára: LinOTP2
Jelszót adunk a felhasználónak: „ATeJelszavad”
Hozzuk létre az adatbázist most? (valami hasonló ‘Biztosan szeretnéd ...’): igen
Beírjuk a MySQL root jelszót, amelyet az installáláskor hoztunk létre: „ATeJelszavad”
Kész.
(opcionális, nem szükséges hozzáadni)
# apt-get install linotp-adminclient-cli (opcionális, nem szükséges hozzáadni)
# apt-get install libpam-linotp Így a Linotp webes felület most elérhető a címen:
"<b>https<\/b>: \\\/\\\/IP_szerver\\\/manage"A webes felületen található beállításokról később fogok beszélni.
Most, a legfontosabb! Aktiváljuk a FreeRadius-t és összekapcsoljuk a LinOTP-val.
Telepítjük a FreeRadius-t és a LinOTP modulját
# apt-get install freeradius linotp-freeradius-perlBiztonsági mentést készítünk a radius kliens és felhasználók konfigurációjáról.
# mv /etc/freeradius/clients.conf /etc/freeradius/clients.old# mv /etc/freeradius/users /etc/freeradius/users.oldLétrehozunk egy üres kliens fájlt:
# touch /etc/freeradius/clients.confMódosítjuk az új konfigurációs fájlunkat (a biztonsági másolatot mint példát használhatjuk)
# nano /etc/freeradius/clients.confclient 192.168.188.0/24 {
secret = passwd # a kliens csatlakozási jelszava
}Ezután létrehozunk egy felhasználói fájlt:
# touch /etc/freeradius/usersMódosítjuk a fájlt, mondva a radius-nak, hogy a perl-t fogjuk használni az azonosításhoz.
# nano /etc/freeradius/usersDEFAULT Auth-type := perlEzután módosítjuk a fájlt /etc/freeradius/modules/perl
# nano /etc/freeradius/modules/perlMeg kell adnunk a linotp perl szkript útvonalát a modul paraméterében:
Perl { .......
.........
module = /usr/lib/linotp/radius_linotp.pm …..
Ezután létrehozunk egy fájlt, amelyben megmondjuk, hogy honnan (domain-ból, adatbázisból vagy fájlból) vegyük az adatokat.
# touch /etc/linotp2/rlm_perl.ini# nano /etc/linotp2/rlm_perl.iniURL=https://IP_a_LinOTP_szerveredhez(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=FalseItt kicsit részletesebben megállok, mivel ez fontos:
A fájl teljes leírása megjegyzésekkel:
#IP of the linotp server (IP адрес нашего LinOTP сервера)
URL=https://172.17.14.103/validate/simplecheck
#Наша область которую мы создадим в веб интерфейсе LinOTP.)
REALM=rearm1
#Имя группы юзверей которая создается в вебморде LinOTP.
RESCONF=flat_file
#optional: comment out if everything seems to work fine
Debug=True
#optional: use this, if you have selfsigned certificates, otherwise comment out (SSL если мы создаем свой сертификат и хотим его проверять)
SSL_CHECK=False
Ezután létrehozunk egy fájlt /etc/freeradius/sites-available/linotp
# touch /etc/freeradius/sites-available/linotp# nano /etc/freeradius/sites-available/linotpÉs bemásoljuk a konfigurációt (nem kell módosítani semmit):
authorize {
#normalizes maleformed client request before handed on to other modules (see '/etc/freeradius/modules/preprocess')
preprocess
# If you are using multiple kinds of realms, you probably
# want to set "ignore_null = yes" for all of them.
# Otherwise, when the first style of realm doesn't match,
# the other styles won't be checked.
#allows a list of realms (see '/etc/freeradius/modules/realm')
IPASS
#understands something like USER@REALM and can tell the components apart (see '/etc/freeradius/modules/realm')
suffix
#understands USERREALM and can tell the components apart (see '/etc/freeradius/modules/realm')
ntdomain
# Read the 'users' file to learn about special configuration which should be applied for
# certain users (see '/etc/freeradius/modules/files')
files
# allows to let authentication to expire (see '/etc/freeradius/modules/expiration')
expiration
# allows to define valid service-times (see '/etc/freeradius/modules/logintime')
logintime
# We got no radius_shortname_map!
pap
}
#here the linotp perl module is called for further processing
authenticate {
perl
}Ezután létrehozunk egy szimbolikus linket:
# ln -s ../sites-available/linotp /etc/freeradius/sites-enabledSzemély szerint megöletem az alapértelmezett Radius weboldalakat, de ha szükséged van rájuk, szerkesztheted a konfigurációjukat, vagy letilthatod őket.
# rm /etc/freeradius/sites-enabled/default# rm /etc/freeradius/sites-enabled/inner-tunnel# service freeradius reload Most térjünk vissza a webfelülethez, és nézzük meg kicsit alaposabban:
A jobb felső sarokban kattintsunk a LinOTP Config → UserIdResolvers → Új gombra.
Válasszuk ki, amit szeretnénk: LDAP (AD Windows, LDAP Samba), vagy SQL, vagy lokális felhasználók a Flatfile rendszerben.
Töltsük ki a szükséges mezőket.
Ezután hozzunk létre REALM-eket:
A jobb felső sarokban kattintsunk a LinOTP Config → Realms → Új gombra.
És adjunk nevet a REALM-nek, valamint kattintsunk a korábban létrehozott UserIdResolvers-ra.
Mindezek az adatok szükségesek a FreeRadius számára a /etc/linotp2/rlm_perl.ini fájlban, ahogy azt fentebb említettem, tehát ha nem szerkesztetted még, tedd meg most.
Az összes szerver be van állítva.
Kiegészítés:
LinOTP konfigurálása Debian 9 alatt:
Telepítés:
# echo 'deb http://linotp.org/apt/debian stretch linotp' > /etc/apt/sources.list.d/linotp.list # apt-get install dirmngr# apt-key adv --recv-keys 913DFF12F86258E5
# apt-get update# apt-get install mysql-server(alapértelmezés szerint Debian 9 alatt a mysql (MariaDB) nem kínál meg root jelszó megadását, természetesen hagyhatod üresen, de ha olvasod a híreket, ez nagyon gyakran "epikus kudarcokhoz" vezet, ezért inkább beállítjuk.)
# mysql -u root -puse mysql;UPDATE user SET Password = PASSWORD('itt_jelszó') WHERE User = 'root';
exit# apt-get install linotp# apt-get install linotp-adminclient-cli# apt-get install python-ldap# apt install freeradius# nano /etc/freeradius/3.0/sites-enabled/linotpIllessze be a kódot (JuriM küldte, köszönet érte!):
server linotp {
listen {
ipaddr = *
port = 1812
type = auth
}
listen {
ipaddr = *
port = 1813
type = acct
}
authorize {
preprocess
update {
&control:Auth-Type := Perl
}
}
authenticate {
Auth-Type Perl {
perl
}
}
accounting {
unix
}
}
Szerkeszti a /etc/freeradius/3.0/mods-enabled/perl fájlt.
perl {
filename = /usr/share/linotp/radius_linotp.pm
func_authenticate = authenticate
func_authorize = authorize
}
Sajnos Debian 9 alatt a radius_linotp.pm könyvtár nem telepíthető a tárolókból, ezért a GitHubról fogjuk beszerezni.
# apt install git# git clone https://github.com/LinOTP/linotp-auth-freeradius-perl# cd linotp-auth-freeradius-perl/# cp radius_linotp.pm /usr/share/linotp/radius_linotp.pmMost módosítjuk a /etc/freeradius/3.0/clients.conf fájlt.
client servers {
ipaddr = 192.168.188.0/24
secret = a_te_jelszavad
}
Most módosítjuk a nano /etc/linotp2/rlm_perl.ini fájlt.
Illessze be oda ugyanazt a kódot, mint amikor a Debian 8-ra telepítettük (ahogy fentebb leírtuk).
Alapvetően ennyi. (még nem teszteltük)
Alább hagyok néhány linket a rendszerek konfigurálásához, amelyeket gyakran kell kettős hitelesítéssel védeni:
Kettős hitelesítés beállítása az
(ott egy másik token generáló szerver használják, de a ASA beállítások ugyanazok).
Beállítás (ott is LinOTP-t használnak) – köszönet a szerzőnek. Ott érdekes dolgokat találhatsz a LiOTP politikák beállításáról.
Számos weboldal CMS rendszere is támogatja a kettős hitelesítést (A WordPresshez a LinOTP-nek még van egy saját modulja a ), például, ha védett szakaszt szeretnél létrehozni a vállalati webhelyeden a munkavállalók számára.
FONTOS TÉNY! NE jelölje be a „Google autentikátor” opciót a Google autentikátor használatához! A QR-kód akkor nem olvasható... (furcsa tény)
A cikk írásához a következő cikkek információit használtam fel:
Köszönöm a szerzőknek.
Forrás: habr.com
