Ma szeretném megosztani, hogyan kell beállítani egy kéttényezős hitelesítési szervert a vállalati hálózat, helyek, szolgáltatások, ssh védelmére. A szerver a következő kombinációt fogja futtatni: LinOTP + FreeRadius.
Miért van ránk szüksége?
Ez egy teljesen ingyenes, kényelmes megoldás, saját hálózaton belül, független a külső szolgáltatóktól.
Ez a szolgáltatás nagyon kényelmes, meglehetősen vizuális, ellentétben más nyílt forráskódú termékekkel, és számos funkciót és házirendet is támogat (például bejelentkezés + jelszó + (PIN + OTPToken)). Az API-n keresztül integrálódik az sms küldő szolgáltatásokkal (LinOTP Config->Provider Config->SMS Provider), kódokat generál mobilalkalmazásokhoz, például a Google Authentificatorhoz és még sok máshoz. Szerintem kényelmesebb, mint az itt tárgyalt szolgáltatás
Ez a szerver tökéletesen működik a Cisco ASA-val, az OpenVPN-kiszolgálóval, az Apache2-vel és általában szinte mindennel, ami támogatja a RADIUS-kiszolgálón keresztüli hitelesítést (például SSH-hoz az adatközpontban).
Szükséges:
1) Debian 8 (jessie) - Mindig! (debian 9 próbaverziós telepítését a cikk végén ismertetjük)
Kezdés:
A Debian 8 telepítése.
Adja hozzá a LinOTP adattárat:
# echo 'deb http://www.linotp.org/apt/debian jessie linotp' > /etc/apt/sources.list.d/linotp.list
Kulcsok hozzáadása:
# gpg --search-keys 913DFF12F86258E5
Néha a „tiszta” telepítés során a parancs futtatása után a Debian a következőket jeleníti meg:
gpg: создан каталог `/root/.gnupg'
gpg: создан новый файл настроек `/root/.gnupg/gpg.conf'
gpg: ВНИМАНИЕ: параметры в `/root/.gnupg/gpg.conf' еще не активны при этом запуске
gpg: создана таблица ключей `/root/.gnupg/secring.gpg'
gpg: создана таблица ключей `/root/.gnupg/pubring.gpg'
gpg: не заданы серверы ключей (используйте --keyserver)
gpg: сбой при поиске на сервере ключей: плохой URI
Ez a kezdeti gnupg beállítás. Ez rendben van. Csak futtassa újra a parancsot.
Debian kérdésére:
gpg: поиск "913DFF12F86258E5" на hkp сервере keys.gnupg.net
(1) LSE LinOTP2 Packaging <[email protected]>
2048 bit RSA key F86258E5, создан: 2010-05-10
Keys 1-1 of 1 for "913DFF12F86258E5". Введите числа, N) Следующий или Q) Выход>
Válaszolunk: 1
Következő:
# gpg --export 913DFF12F86258E5 | apt-key add -
# apt-get update
Telepítse a mysql-t. Elméletileg használhatsz másik sql szervert is, de az egyszerűség kedvéért azt fogom használni a LinOTP-hez ajánlott módon.
(További információk, beleértve a LinOTP adatbázis újrakonfigurálását, a hivatalos dokumentációban találhatók
# apt-get install mysql-server
# apt-get update
(nem ártana újra ellenőrizni a frissítéseket)
Telepítse a LinOTP-t és további modulokat:
# apt-get install linotp
Válaszolunk a telepítő kérdéseire:
Apache2 használata: igen
Hozzon létre egy jelszót az admin Linotp számára: „Az Ön jelszava”
Önaláírt tanúsítványt generál?: igen
MySQL-t használ?: igen
Hol található az adatbázis: localhost
Hozzon létre egy LinOTP adatbázist (alapnév) a szerveren: LinOTP2
Hozzon létre egy külön felhasználót az adatbázishoz: LinOTP2
Jelszót állítunk be a felhasználó számára: „Az Ön jelszava”
Most hozzak létre adatbázist? (valami ilyesmi: „Biztosan akarod...”): igen
Adja meg a MySQL root jelszót, amelyet a telepítéskor hozott létre: „YourPassword”
Kész.
(opcionális, nem kell telepítenie)
# apt-get install linotp-adminclient-cli
(opcionális, nem kell telepítenie)
# apt-get install libpam-linotp
Így Linotp webes felületünk már elérhető a következő címen:
"<b>https</b>: //IP_сервера/manage"
A webes felület beállításairól kicsit később lesz szó.
Most a legfontosabb! Megemeljük a FreeRadiust, és összekapcsoljuk a Linotp-vel.
Telepítse a FreeRadiust és a modult a LinOTP használatához
# apt-get install freeradius linotp-freeradius-perl
készítsen biztonsági másolatot a kliens és a felhasználói sugár konfigurációjáról.
# mv /etc/freeradius/clients.conf /etc/freeradius/clients.old
# mv /etc/freeradius/users /etc/freeradius/users.old
Hozzon létre egy üres kliens fájlt:
# touch /etc/freeradius/clients.conf
Új konfigurációs fájlunk szerkesztése (példaként a mentett konfiguráció használható)
# nano /etc/freeradius/clients.conf
client 192.168.188.0/24 {
secret = passwd # пароль для подключения клиентов
}
Ezután hozzon létre egy felhasználói fájlt:
# touch /etc/freeradius/users
Szerkesztjük a fájlt, jelezve, hogy perl-t fogunk használni a hitelesítéshez.
# nano /etc/freeradius/users
DEFAULT Auth-type := perl
Ezután szerkessze az /etc/freeradius/modules/perl fájlt
# nano /etc/freeradius/modules/perl
Meg kell adnunk a perl linotp szkript elérési útját a modulparaméterben:
Perl { .......
.........
<source lang="bash">module = /usr/lib/linotp/radius_linotp.pm
.....
Ezután létrehozunk egy fájlt, amelyben megmondjuk, hogy melyik (domain, adatbázis vagy fájl) forrásból vegyük az adatokat.
# touch /etc/linotp2/rlm_perl.ini
# nano /etc/linotp2/rlm_perl.ini
URL=https://IP_вашего_LinOTP_сервера(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=False
Itt egy kicsit részletesebben kifejtem, mert fontos:
A fájl teljes leírása megjegyzésekkel:
#A linOTP szerver IP-címe (LinOTP szerverünk IP-címe)
URL=https://172.17.14.103/validate/simplecheck
#A területünk, amelyet a LinOTP webes felületén fogunk létrehozni.)
REALM=hátsó1
#A LinOTP webkosárban létrehozott felhasználói csoport neve.
RESCONF=lapos_fájl
#opcionális: kommentálja, ha úgy tűnik, hogy minden rendben működik
Debug=Igaz
#opcionális: használja ezt, ha önaláírt tanúsítványai vannak, ellenkező esetben kommentálja (SSL, ha saját tanúsítványt hozunk létre és ellenőrizni akarjuk)
SSL_CHECK=Hamis
Ezután hozza létre az /etc/freeradius/sites-available/linotp fájlt
# touch /etc/freeradius/sites-available/linotp
# nano /etc/freeradius/sites-available/linotp
És másold be a konfigurációt (nem kell semmit szerkeszteni):
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 realm (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 authentification 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 SIM-hivatkozást:
# ln -s ../sites-available/linotp /etc/freeradius/sites-enabled
Én személy szerint megölöm az alapértelmezett Radius webhelyeket, de ha szüksége van rájuk, szerkesztheti a konfigurációjukat, vagy letilthatja őket.
# rm /etc/freeradius/sites-enabled/default
# rm /etc/freeradius/sites-enabled/inner-tunnel
# service freeradius reload
Most térjünk vissza a weblaphoz, és nézzük meg kicsit részletesebben:
A jobb felső sarokban kattintson a LinOTP Config -> UserIdResolvers -> New elemre
Kiválasztjuk, hogy mit akarunk: LDAP (AD win, LDAP samba), vagy SQL, vagy a Flatfile rendszer helyi felhasználói.
Töltse ki a kötelező mezőket.
Ezután létrehozzuk a REALMS-t:
A jobb felső sarokban kattintson a LinOTP Config -> Realms -> New elemre.
és adjunk nevet a REALMS-unknak, és kattintsunk a korábban létrehozott UserIdResolverekre is.
A FreeRadiusnak szüksége van ezekre az adatokra az /etc/linotp2/rlm_perl.ini fájlban, ahogy fentebb is írtam, tehát ha nem szerkesztette akkor, tegye meg most.
A szerver minden konfigurálva van.
kiegészítésére:
A LinOTP beállítása Debian 9 rendszeren:
Установка:
# 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 a Debian 9-ben a mysql (mariaDB) nem ajánl fel root jelszót, természetesen üresen is hagyhatod, de ha elolvasod a híreket, ez nagyon gyakran "epic fails"-hez vezet, ezért beállítjuk akárhogyan is)
# mysql -u root -p
use mysql;
UPDATE user SET Password = PASSWORD('тут_пароль') 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/linotp
Illessze be a kódot (JuriM küldte, köszönet érte!):
szerver linotp {
hallgat {
ipaddr = *
port=1812
type=auth
}
hallgat {
ipaddr = *
port=1813
type = act
}
engedélyez {
előfeldolgozás
frissítés {
&control:Auth-Type := Perl
}
}
hitelesít {
Auth-Type Perl {
perl
}
}
könyvelés {
unix
}
}
Szerkessze az /etc/freeradius/3.0/mods-enabled/perl fájlt
perl {
fájlnév = /usr/share/linotp/radius_linotp.pm
func_authenticate = hitelesítés
func_authorize = engedélyezés
}
Sajnos a Debian 9-ben a radius_linotp.pm könyvtár nincs telepítve a tárolókból, ezért a githubból fogjuk átvenni.
# 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.pm
most szerkesszük az /etc/freeradius/3.0/clients.conf fájlt
kliens szerverek {
ipaddr = 192.168.188.0/24
titkos = a jelszavad
}
Most javítsuk ki a nano /etc/linotp2/rlm_perl.ini fájlt
Ugyanazt a kódot illesszük be oda, mint a debian 8-ra történő telepítéskor (lásd fent)
ennyi az elképzelés szerint. (még nincs tesztelve)
Az alábbiakban hagyok néhány linket a leggyakrabban kéttényezős hitelesítéssel védendő rendszerek beállításához:
Kéttényezős hitelesítés beállítása
beállítás
Ezenkívül sok webhely cm-je támogatja a kéttényezős hitelesítést (WordPress esetén a LinOTP-nek még saját speciális modulja is van
FONTOS TÉNY! NE jelölje be a „Google autenteficator” négyzetet a Google Authenticator használatához! A QR kód akkor nem olvasható... (furcsa tény)
A cikk megírásához a következő cikkekből származó információkat használtuk fel:
Köszönet a szerzőknek.
Forrás: will.com