LinOTP poslužitelj za autentifikaciju u dva faktora

LinOTP poslužitelj za autentifikaciju u dva faktora

Danas želim podijeliti s vama kako postaviti poslužitelj za autentifikaciju s dva faktora za zaštitu korporativne mreže, web-mjesta, usluga, ssh-a. Poslužitelj će pokrenuti sljedeću kombinaciju: LinOTP + FreeRadius.

Zašto nam to treba?
Ovo je potpuno besplatno, praktično rješenje, unutar vlastite mreže, neovisno o pružateljima trećih strana.

Ova je usluga vrlo praktična, prilično vizualna, za razliku od drugih proizvoda otvorenog koda, a također podržava veliki broj funkcija i pravila (Na primjer, prijava+lozinka+(PIN+OTPToken)). Putem API-ja integrira se s uslugama slanja sms-a (LinOTP Config->Provider Config->SMS Provider), generira kodove za mobilne aplikacije kao što je Google Authentificator i još mnogo toga. Mislim da je to prikladnije od usluge o kojoj smo govorili članak.

Ovaj server radi savršeno sa Cisco ASA, OpenVPN serverom, Apache2, i općenito sa skoro svime što podržava autentifikaciju preko RADIUS servera (Npr. za SSH u podatkovnom centru).

Potrebno je:

1) Debian 8 (jessie) - Uvijek! (probna instalacija na debian 9 opisana je na kraju članka)

Početak:

Instaliranje Debiana 8.

Dodajte LinOTP repozitorij:

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

Dodavanje ključeva:

# gpg --search-keys 913DFF12F86258E5

Ponekad tijekom "čiste" instalacije, nakon pokretanja ove naredbe, Debian prikazuje:

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

Ovo je početno postavljanje gnupg-a. U redu je. Samo ponovno pokrenite naredbu.
Na Debianovo pitanje:

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

Odgovaramo: 1

Sljedeća:

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

# apt-get update

Instaliraj mysql. U teoriji, možete koristiti drugi sql poslužitelj, ali radi jednostavnosti ja ću ga koristiti kao što je preporučeno za LinOTP.

(dodatne informacije, uključujući rekonfiguraciju LinOTP baze podataka, mogu se pronaći u službenoj dokumentaciji za link. Tamo također možete pronaći naredbu: dpkg-reconfigure linotp za promjenu parametara ako ste već instalirali mysql).

# apt-get install mysql-server

# apt-get update

(ne bi škodilo ponovno provjeriti ažuriranja)
Instalirajte LinOTP i dodatne module:

# apt-get install linotp

Odgovaramo na pitanja instalatera:
Koristite Apache2: da
Stvorite lozinku za administratora Linotp: “Vaša lozinka”
Generirati samopotpisani certifikat?: da
Koristite MySQL?: da
Gdje se nalazi baza podataka: localhost
Napravite LinOTP bazu podataka (osnovni naziv) na poslužitelju: LinOTP2
Napravite zasebnog korisnika za bazu podataka: LinOTP2
Postavljamo lozinku za korisnika: “Vaša lozinka”
Trebam li sada izraditi bazu podataka? (nešto poput "Jeste li sigurni da želite..."): da
Unesite MySQL root lozinku koju ste kreirali prilikom instalacije: “YourPassword”
Gotovo.

(opcionalno, ne morate ga instalirati)

# apt-get install linotp-adminclient-cli 

(opcionalno, ne morate ga instalirati)

# apt-get install libpam-linotp  

I tako je naše Linotp web sučelje sada dostupno na:

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

O postavkama u web sučelju govorit ću malo kasnije.

Sada ono najvažnije! Podižemo FreeRadius i povezujemo ga s Linotp-om.

Instalirajte FreeRadius i modul za rad s LinOTP

# apt-get install freeradius linotp-freeradius-perl

napravite sigurnosnu kopiju konfiguracija radijusa klijenta i korisnika.

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

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

Napravite praznu klijentsku datoteku:

# touch /etc/freeradius/clients.conf

Uređivanje naše nove konfiguracijske datoteke (sigurnosna kopija konfiguracije može se koristiti kao primjer)

# nano /etc/freeradius/clients.conf

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

Zatim izradite korisničku datoteku:

# touch /etc/freeradius/users

Uređujemo datoteku, govoreći radius da ćemo koristiti perl za autentifikaciju.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Zatim uredite datoteku /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Moramo navesti put do perl linotp skripte u parametru modula:

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

... ..
Zatim kreiramo datoteku u kojoj kažemo iz koje (domena, baza ili datoteka) uzeti 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

Ovdje ću ići malo više u detalje jer je važno:

Potpuni opis datoteke s komentarima:
#IP linOTP poslužitelja (IP adresa našeg LinOTP poslužitelja)
URL=https://172.17.14.103/validate/simplecheck
#Naše područje koje ćemo kreirati u LinOTP web sučelju.)
REALM=naoružati1
#Naziv korisničke grupe koja je kreirana u LinOTP web brnjici.
RESCONF=ravna_datoteka
#neobavezno: komentirajte ako se čini da sve radi dobro
Debug=Istina
#neobavezno: koristite ovo, ako imate samopotpisane certifikate, inače komentirajte (SSL ako kreiramo vlastiti certifikat i želimo ga provjeriti)
SSL_CHECK=Netočno

Zatim kreirajte datoteku /etc/freeradius/sites-available/linotp

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

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

I kopirajte konfiguraciju u njega (ne morate ništa uređivati):

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
}

Zatim ćemo stvoriti SIM vezu:

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

Osobno, ubijam stranice sa zadanim radijusom, ali ako ih trebate, možete urediti njihovu konfiguraciju ili ih onemogućiti.

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

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

# service freeradius reload

Sada se vratimo web licu i pogledajmo ga malo detaljnije:
U gornjem desnom kutu kliknite LinOTP Config -> UserIdResolvers -> New
Biramo što želimo: LDAP (AD win, LDAP samba), ili SQL, ili lokalne korisnike Flatfile sustava.

Ispunite obavezna polja.

Zatim stvaramo REALMS:
U gornjem desnom kutu kliknite LinOTP Config -> Realms -> New.
i dajte ime našem REALMS-u, a također kliknite na prethodno stvorene UserIdResolvers.

FreeRadius treba sve te podatke u datoteci /etc/linotp2/rlm_perl.ini, kao što sam gore napisao, pa ako to tada niste uredili, učinite to sada.

Poslužitelj je sav konfiguriran.

dodatak:

Postavljanje LinOTP-a na Debianu 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

(prema zadanim postavkama, u Debianu 9 mysql (mariaDB) ne nudi postavljanje root lozinke, naravno, možete je ostaviti praznom, ali ako čitate vijesti, to vrlo često dovodi do “epic failsa”, pa ćemo je postaviti svejedno)

# 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

Zalijepite kod (poslao JuriM, hvala mu na tome!):

poslužitelj linotp {
slušaj {
ipaddr = *
luka = ​​1812
tip=auth
}
slušaj {
ipaddr = *
luka = ​​1813
tip = akkt
}
odobriti {
predproces
Ažuriraj {
&control:Auth-Type := Perl
}
}
provjeri autentičnost {
Auth-Type Perl {
perl
}
}
računovodstvo {
Unix
}
}

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

perl {
naziv datoteke = /usr/share/linotp/radius_linotp.pm
func_authenticate = provjera autentičnosti
func_authorize = autoriziraj
}

Nažalost, u Debianu 9 biblioteka radius_linotp.pm nije instalirana iz repozitorija, pa ćemo je preuzeti s 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

sada uredimo /etc/freeradius/3.0/clients.conf

klijentski poslužitelji {
ipaddr = 192.168.188.0/24
tajna = vaša lozinka
}

Sada ispravimo nano /etc/linotp2/rlm_perl.ini

Tamo zalijepimo isti kod kao kod instalacije na debian 8 (gore opisan)

to je sve po zamisli. (još nije testirano)

U nastavku ću ostaviti nekoliko poveznica o postavljanju sustava koje je najčešće potrebno zaštititi dvofaktorskom autentifikacijom:
Postavljanje dvofaktorske autentifikacije u Apache2

Postavljanje s Cisco ASA(tu se koristi drugačiji poslužitelj za generiranje tokena, ali postavke samog ASA-a su iste).

VPN s dvofaktorskom autentifikacijom

podešavanje dvostruka autentifikacija u ssh-u (Tu se također koristi LinOTP) - hvala autoru. Tamo također možete pronaći zanimljive stvari o postavljanju LiOTP pravila.

Također, cms-ovi mnogih web-mjesta podržavaju autentifikaciju u dva faktora (za WordPress, LinOTP čak ima svoj poseban modul za Github), na primjer, ako želite napraviti zaštićeni odjeljak na svojoj korporativnoj web stranici za zaposlenike tvrtke.
VAŽNA ČINJENICA! NEMOJTE označiti okvir "Google Autentifikator" da biste koristili Google Autentifikator! QR kod tada nije čitljiv... (čudna činjenica)

Za pisanje ovog članka korištene su informacije iz sljedećih članaka:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Hvala autorima.

Izvor: www.habr.com

Dodajte komentar