LinOTP kéttényezős hitelesítési szerver

LinOTP kéttényezős hitelesítési szerver

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 cikk.

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 link. Itt található a következő parancs is: dpkg-reconfigure linotp a paraméterek megváltoztatásához, ha már telepítette a mysql-t).

# 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 Apache2

Beállítás Cisco ASA segítségével(ott más tokengeneráló szervert használnak, de magának az ASA-nak a beállításai ugyanazok).

VPN kétfaktoros hitelesítéssel

beállítás kétfaktoros hitelesítés ssh-ban (Ott a LinOTP-t is használják) - köszönet a szerzőnek. Itt érdekes dolgokat is találhat a LiOTP házirendek beállításával kapcsolatban.

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 GitHub), például ha védett részt szeretne létrehozni a vállalati webhelyén a vállalati alkalmazottak számára.
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:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Köszönet a szerzőknek.

Forrás: will.com

Hozzászólás