Strežnik za dvofaktorsko avtentikacijo LinOTP

Strežnik za dvofaktorsko avtentikacijo LinOTP

Danes želim deliti z vami, kako nastaviti strežnik za dvostopenjsko avtentikacijo za zaščito omrežja podjetja, spletnih mest, storitev, ssh. Strežnik bo izvajal naslednjo kombinacijo: LinOTP + FreeRadius.

Zakaj ga potrebujemo?
To je popolnoma brezplačna, priročna rešitev, znotraj lastnega omrežja, neodvisna od tretjih ponudnikov.

Ta storitev je zelo priročna, precej vizualna, za razliko od drugih odprtokodnih izdelkov, podpira pa tudi ogromno funkcij in politik (na primer prijava+geslo+(PIN+OTPToken)). Preko API-ja se integrira s storitvami za pošiljanje sms-ov (LinOTP Config->Provider Config->SMS Provider), generira kode za mobilne aplikacije, kot je Google Authentificator in še veliko več. Mislim, da je to bolj priročno kot storitev, o kateri govorimo članek.

Ta strežnik odlično deluje s Cisco ASA, OpenVPN strežnikom, Apache2 in nasploh s skoraj vsem, kar podpira avtentikacijo preko RADIUS strežnika (Npr. za SSH v podatkovnem centru).

Zahtevano:

1) Debian 8 (jessie) - Se prepričajte! (poskusna namestitev na debian 9 je opisana na koncu članka)

Začetek:

Namestitev Debiana 8.

Dodajte repozitorij LinOTP:

# echo 'deb http://www.linotp.org/apt/debian jessie linotp' > /etc/apt/sources.list.d/linotp.list

Dodajanje ključev:

# gpg --search-keys 913DFF12F86258E5

Včasih med »čisto« namestitvijo po zagonu tega ukaza Debian prikaže:

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

To je začetna nastavitev gnupg. V redu je. Znova zaženite ukaz.
Na Debianovo vprašanje:

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) Выход>

Odgovarjamo: 1

Naprej:

# gpg --export 913DFF12F86258E5 | apt-key add -

# apt-get update

Namestite mysql. Teoretično lahko uporabite drug strežnik sql, vendar ga bom zaradi enostavnosti uporabil, kot je priporočeno za LinOTP.

(dodatne informacije, vključno s ponovno konfiguracijo baze podatkov LinOTP, najdete v uradni dokumentaciji za povezava. Tam lahko najdete tudi ukaz: dpkg-reconfigure linotp za spreminjanje parametrov, če ste že namestili mysql).

# apt-get install mysql-server

# apt-get update

(ne bi škodilo, če bi znova preveril posodobitve)
Namestite LinOTP in dodatne module:

# apt-get install linotp

Odgovarjamo na vprašanja monterja:
Uporabite Apache2: da
Ustvarite geslo za skrbnika Linotp: “Vaše geslo”
Ustvariti samopodpisano potrdilo?: da
Uporabljam MySQL?: da
Kje se nahaja baza podatkov: localhost
Ustvarite bazo podatkov LinOTP (osnovno ime) na strežniku: LinOTP2
Ustvarite ločenega uporabnika za bazo podatkov: LinOTP2
Uporabniku nastavimo geslo: “Vaše geslo”
Naj zdaj ustvarim bazo podatkov? (nekaj takega kot "Ali ste prepričani, da želite ..."): da
Vnesite korensko geslo MySQL, ki ste ga ustvarili ob namestitvi: “YourPassword”
Končano.

(izbirno, ni vam ga treba namestiti)

# apt-get install linotp-adminclient-cli 

(izbirno, ni vam ga treba namestiti)

# apt-get install libpam-linotp  

In tako je naš spletni vmesnik Linotp zdaj na voljo na:

"<b>https</b>: //IP_сервера/manage"

O nastavitvah v spletnem vmesniku bom govoril malo kasneje.

Zdaj pa najpomembnejše! Dvignemo FreeRadius in ga povežemo z Linotp.

Namestite FreeRadius in modul za delo z LinOTP

# apt-get install freeradius linotp-freeradius-perl

varnostno kopirajte konfiguracije radija odjemalca in uporabnika.

# mv /etc/freeradius/clients.conf  /etc/freeradius/clients.old

# mv /etc/freeradius/users  /etc/freeradius/users.old

Ustvarite prazno datoteko odjemalca:

# touch /etc/freeradius/clients.conf

Urejanje naše nove konfiguracijske datoteke (varnostno kopirano konfiguracijo lahko uporabite kot primer)

# nano /etc/freeradius/clients.conf

client 192.168.188.0/24 {
secret  = passwd # пароль для подключения клиентов
}

Nato ustvarite uporabniško datoteko:

# touch /etc/freeradius/users

Uredimo datoteko in povemo radiusu, da bomo za avtentikacijo uporabili perl.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Nato uredite datoteko /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

V parametru modula moramo določiti pot do skripta perl linotp:

Perl { .......
.........
<source lang="bash">module = /usr/lib/linotp/radius_linotp.pm

... ..
Nato ustvarimo datoteko, v kateri povemo, iz katere (domene, baze ali datoteke) bomo vzeli podatke.

# 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

Tukaj bom šel malo bolj podrobno, ker je pomembno:

Celoten opis datoteke s komentarji:
#IP strežnika linOTP (naslov IP našega strežnika LinOTP)
URL=https://172.17.14.103/validate/simplecheck
#Naše področje, ki ga bomo ustvarili v spletnem vmesniku LinOTP.)
REALM=ponovno oborožiti1
#Ime uporabniške skupine, ki je ustvarjena v spletnem gobčku LinOTP.
RESCONF=ravna_datoteka
#izbirno: komentirajte, če se zdi, da vse deluje v redu
Debug=True
#neobvezno: uporabite to, če imate samopodpisana potrdila, drugače komentirajte (SSL, če ustvarimo lastno potrdilo in ga želimo preveriti)
SSL_CHECK=False

Nato ustvarite datoteko /etc/freeradius/sites-available/linotp

# touch /etc/freeradius/sites-available/linotp

# nano /etc/freeradius/sites-available/linotp

Vanj kopirajte konfiguracijo (ničesar vam ni treba urejati):

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
}

Nato bomo ustvarili povezavo SIM:

# ln -s ../sites-available/linotp /etc/freeradius/sites-enabled

Osebno uničim privzeta spletna mesta Radius, a če jih potrebujete, lahko uredite njihovo konfiguracijo ali jih onemogočite.

# rm /etc/freeradius/sites-enabled/default

# rm /etc/freeradius/sites-enabled/inner-tunnel

# service freeradius reload

Zdaj pa se vrnimo k spletnemu obrazu in si ga oglejmo nekoliko podrobneje:
V zgornjem desnem kotu kliknite LinOTP Config -> UserIdResolvers -> New
Izberemo, kaj želimo: LDAP (AD win, LDAP samba), ali SQL ali lokalne uporabnike sistema Flatfile.

Izpolnite zahtevana polja.

Nato ustvarimo REALMS:
V zgornjem desnem kotu kliknite LinOTP Config -> Realms -> New.
in dajte ime našim REALMS ter kliknite na predhodno ustvarjene UserIdResolvers.

FreeRadius potrebuje vse te podatke v datoteki /etc/linotp2/rlm_perl.ini, kot sem napisal zgoraj, tako da, če tega niste uredili takrat, to storite zdaj.

Strežnik je že nastavljen.

Dodatek:

Nastavitev LinOTP na Debian 9:

Установка:

# 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

(privzeto v Debianu 9 mysql (mariaDB) ne ponuja nastavitve korenskega gesla, seveda ga lahko pustite prazno, vendar če berete novice, to zelo pogosto vodi do "epic fails", zato ga bomo nastavili vseeno)

# 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

Prilepite kodo (poslal JuriM, hvala mu za to!):

strežnik linotp {
poslušaj {
ipaddr = *
vrata=1812
tip=avt
}
poslušaj {
ipaddr = *
vrata=1813
vrsta = acct
}
avtoriziraj {
predproces
nadgradnja {
&control:Auth-Type := Perl
}
}
overi {
Auth-Type Perl {
perl
}
}
računovodstvo {
unix
}
}

Uredite /etc/freeradius/3.0/mods-enabled/perl

perl {
ime datoteke = /usr/share/linotp/radius_linotp.pm
func_authenticate = overi
func_authorize = avtoriziraj
}

Na žalost v Debianu 9 knjižnica radius_linotp.pm ni nameščena iz repozitorijev, zato jo bomo vzeli iz githuba.

# 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

zdaj pa uredimo /etc/freeradius/3.0/clients.conf

odjemalski strežniki {
ipaddr = 192.168.188.0/24
skrivnost = vaše geslo
}

Zdaj pa popravimo nano /etc/linotp2/rlm_perl.ini

Tja prilepimo isto kodo kot pri namestitvi na debian 8 (opisano zgoraj)

to je vse po zamisli. (še ni testirano)

Spodaj bom pustil nekaj povezav o nastavitvah sistemov, ki jih je najpogosteje treba zaščititi z dvofaktorsko avtentikacijo:
Nastavitev dvostopenjske avtentikacije v Apache2

Nastavitev s Cisco ASA(tam se uporablja drugačen strežnik za generiranje žetonov, vendar so nastavitve samega ASA enake).

VPN z dvofaktorsko avtentikacijo

prilagoditev dvofaktorska avtentikacija v ssh (Tam se uporablja tudi LinOTP) - hvala avtorju. Tam lahko najdete tudi zanimive stvari o nastavitvi pravilnikov LiOTP.

Poleg tega cms številnih spletnih mest podpira dvofaktorsko avtentikacijo (za WordPress ima LinOTP celo svoj poseben modul za github), na primer, če želite na spletnem mestu vašega podjetja narediti zaščiten razdelek za zaposlene v podjetju.
POMEMBNO DEJSTVO! NE označite polja »Google Autentificator«, če želite uporabljati Google Authenticator! QR koda takrat ni berljiva... (čudno dejstvo)

Za pisanje tega članka so bile uporabljene informacije iz naslednjih člankov:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Hvala avtorjem.

Vir: www.habr.com

Dodaj komentar