LinOTP server dvofaktorske autentikacije

LinOTP server dvofaktorske autentikacije

Danas želim podijeliti kako postaviti server za autentifikaciju s dva faktora za zaštitu korporativne mreže, web lokacija, usluga, ssh. Link će raditi na serveru: LinOTP + FreeRadius.

Zašto smo mu potrebni?
Ovo je potpuno besplatno, praktično rješenje, unutar vaše mreže, neovisno o provajderima trećih strana.

Ova usluga je vrlo zgodna, prilično vizualna, za razliku od drugih proizvoda otvorenog koda, a podržava i veliki broj funkcija i politika (na primjer, login+password+(PIN+OTPToken)). Preko API-ja se integrira sa uslugama slanja sms poruka (LinOTP Config->Provider Config->SMS Provider), generira kodove za mobilne aplikacije kao što je Google Autentifikator i još mnogo toga. Mislim da je zgodnije od usluge koja se razmatra članak.

Ovaj server dobro radi sa Cisco ASA, OpenVPN serverom, Apache2, i zaista sa skoro svime što podržava autentifikaciju preko RADIUS servera (na primer, za SSH do centra podataka).

Potrebno je:

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

Početak:

Instalirajte Debian 8.

Dodajte LinOTP spremište:

# 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 pri čistoj instalaciji, nakon izvršavanja ove naredbe, Debian izda:

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četna gnupg postavka. Uredu je. Samo pokrenite komandu ponovo.
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) Выход>

Odgovor: 1

Sledeće:

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

# apt-get update

Instaliraj mysql. U teoriji, možete koristiti drugi sql server, ali radi jednostavnosti ja ću ga koristiti kako je preporučeno za LinOTP.

(dodatne informacije, uključujući rekonfiguraciju LinOTP baze podataka, mogu se naći u službenoj dokumentaciji za link. Na istom mjestu možete pronaći naredbu: dpkg-reconfigure linotp za promjenu postavki ako ste već instalirali mysql).

# apt-get install mysql-server

# apt-get update

(Ne škodi da ponovo provjerite ima li ažuriranja)
Instalirajte LinOTP i dodatne module:

# apt-get install linotp

Odgovaramo na pitanja instalatera:
Koristite Apache2: da
Kreirajte lozinku za administratora Linotp: "YourPassword"
Generirati samopotpisani certifikat?: da
Koristiti MySQL?: da
Gdje se nalazi baza podataka: localhost
Kreirajte LinOTP bazu podataka (osnovno ime) na serveru: LinOTP2
Kreirajte zasebnog korisnika za bazu podataka: LinOTP2
Postavite lozinku za korisnika: "YourPassword"
Da li da napravim bazu sada? (nešto poput „Jeste li sigurni da želite...”): da
Unesite MySQL root lozinku koju ste kreirali tokom instalacije: "YourPassword"
Gotovo.

(opciono, ne možete staviti)

# apt-get install linotp-adminclient-cli 

(opciono, ne možete staviti)

# apt-get install libpam-linotp  

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

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

O postavkama u web interfejsu govoriću malo kasnije.

E sad, najvažnija stvar! Podignite FreeRadius i povežite ga sa Linotp-om.

Instalirajte FreeRadius i LinOTP modul

# apt-get install freeradius linotp-freeradius-perl

backup klijentskih i korisničkih konfiguracija radijusa.

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

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

Kreirajte prazan fajl klijenta:

# touch /etc/freeradius/clients.conf

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

# nano /etc/freeradius/clients.conf

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

Zatim kreirajte korisnički fajl:

# touch /etc/freeradius/users

Uređujemo datoteku, govoreći radijusu 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 postaviti putanju do linotp perl 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, baze podataka ili fajla) treba 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 se još malo zadržati, jer je važno:

Kompletan opis fajla sa komentarima:
#IP linotp servera (IP adresa našeg LinOTP servera)
URL=https://172.17.14.103/validate/simplecheck
#Naše područje koje ćemo kreirati u LinOTP web interfejsu.)
REALM=rearm1
#Naziv korisničke grupe koja je kreirana u LinOTP webmord.
RESCONF=flat_file
#opcionalno: komentirajte ako se čini da sve funkcionira dobro
Debug=Tačno
#opcionalno: koristite ovo, ako imate samopotpisane certifikate, u suprotnom komentirajte (SSL ako kreiramo vlastiti certifikat i želimo ga provjeriti)
SSL_CHECK=Netač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 nju (ništa ne treba 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 napraviti sim link:

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

Lično, ubijam zadane stranice radijusa, ali ako su vam potrebne, možete ili urediti njihovu konfiguraciju ili ih onemogućiti.

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

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

# service freeradius reload

Vratimo se sada na web njušku i pogledajmo je malo detaljnije:
U gornjem desnom uglu kliknite LinOTP Config -> UserIdResolvers -> New
Mi biramo ono što želimo: LDAP (AD win, LDAP samba), ili SQL, ili lokalni korisnici Flatfile sistema.

Popunite obavezna polja.

Zatim kreiramo REALMS:
U gornjem desnom uglu kliknite na LinOTP Config -> Realms -> New.
i dajte ime našem REALMS-u, a takođe kliknite na UserIdResolvers kreirane ranije.

Svi ovi podaci su potrebni freeRadiusu u datoteci /etc/linotp2/rlm_perl.ini, o kojoj sam pisao gore, pa ako to niste uređivali tada, uradite to sada.

Sav server je konfigurisan.

Dodatak:

Postavljanje LinOTP-a na Debian 9:

Instalacija:

# 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 ostaviti prazno, ali ako čitate vijesti, to često dovodi do "epskih neuspjeha", tako da ćemo je ipak postaviti )

# 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!):

server linotp {
slušaj {
ipaddr=*
port=1812
tip = auth
}
slušaj {
ipaddr=*
port=1813
tip = acc
}
autorizovati {
predproces
ažuriraj {
&control:Auth-Type := Perl
}
}
autentifikovati {
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 = autentifikovati
func_authorize = autorizirati
}

Nažalost, u debianu 9, biblioteka radius_linotp.pm nije instalirana iz spremišta, 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 popravimo /etc/freeradius/3.0/clients.conf

klijent serveri {
ipaddr = 192.168.188.0/24
tajna = vaša lozinka
}

sada popravimo nano /etc/linotp2/rlm_perl.ini

Tamo zalijepimo isti kod kao pri instalaciji na debian 8 (opisano gore)

na ideju svega. (još nije testirano)

U nastavku ću ostaviti nekoliko linkova za postavljanje sistema koje je najčešće potrebno zaštititi autorizacijom u dva faktora:
Postavljanje dvofaktorske autentifikacije u Apache2

Konfiguracija sa Cisco ASA(koristi drugi server za generiranje tokena, ali su postavke samog ASA-a iste).

VPN sa dvofaktorskom autentifikacijom

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

Takođe, cms mnogih sajtova podržava dvofaktorsku autentifikaciju (za WordPress, LinOTP čak ima svoj poseban modul na GitHub), na primjer, ako želite da napravite siguran odjeljak za zaposlenike kompanije na vašoj korporativnoj web stranici.
VAŽNA ČINJENICA! NEMOJTE označiti polje "Google autentifikator" da biste koristili Google Authenticator! QR kod tada nije čitljiv... (čudna činjenica)

Za pisanje č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