Server de autentificare cu doi factori LinOTP

Server de autentificare cu doi factori LinOTP

Astăzi vreau să vă împărtășesc cum să configurați un server de autentificare cu doi factori pentru a proteja o rețea corporativă, site-uri, servicii, ssh. Serverul va rula următoarea combinație: LinOTP + FreeRadius.

De ce are nevoie de noi?
Aceasta este o soluție complet gratuită, convenabilă, în cadrul propriei rețele, independentă de furnizorii terți.

Acest serviciu este foarte convenabil, destul de vizual, spre deosebire de alte produse open source și, de asemenea, acceptă un număr mare de funcții și politici (De exemplu, autentificare+parolă+(PIN+OTPToken)). Prin intermediul API-ului, se integrează cu serviciile de trimitere sms (LinOTP Config->Provider Config->SMS Provider), generează coduri pentru aplicații mobile precum Google Authentificator și multe altele. Cred că este mai convenabil decât serviciul discutat în articol.

Acest server funcționează perfect cu Cisco ASA, server OpenVPN, Apache2 și, în general, cu aproape tot ceea ce acceptă autentificarea prin intermediul unui server RADIUS (De exemplu, pentru SSH în centrul de date).

Este necesar:

1) Debian 8 (jessie) - Obligatoriu! (instalarea de probă pe debian 9 este descrisă la sfârșitul articolului)

Start:

Instalarea Debian 8.

Adăugați depozitul LinOTP:

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

Adăugarea cheilor:

# gpg --search-keys 913DFF12F86258E5

Uneori, în timpul unei instalări „curate”, după rularea acestei comenzi, Debian afișează:

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

Aceasta este configurarea inițială a gnupg. E bine. Doar rulați comanda din nou.
La întrebarea lui Debian:

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

Raspundem: 1

Următor:

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

# apt-get update

Instalați mysql. În teorie, puteți folosi un alt server sql, dar pentru simplitate îl voi folosi așa cum este recomandat pentru LinOTP.

(informații suplimentare, inclusiv reconfigurarea bazei de date LinOTP, pot fi găsite în documentația oficială pentru legătură. Acolo puteți găsi și comanda: dpkg-reconfigure linotp pentru a modifica parametrii dacă ați instalat deja mysql).

# apt-get install mysql-server

# apt-get update

(nu ar strica să verificați din nou actualizările)
Instalați LinOTP și module suplimentare:

# apt-get install linotp

Răspundem la întrebările instalatorului:
Utilizați Apache2: da
Creați o parolă pentru admin Linotp: „Parola dvs.”
Generați certificat autosemnat?: da
Folosiți MySQL?: da
Unde se află baza de date: localhost
Creați o bază de date LinOTP (nume de bază) pe server: LinOTP2
Creați un utilizator separat pentru baza de date: LinOTP2
Am stabilit o parolă pentru utilizator: „Parola ta”
Ar trebui să creez o bază de date acum? (ceva de genul „Ești sigur că vrei...”): da
Introduceți parola rădăcină MySQL pe care ați creat-o când ați instalat-o: „YourPassword”
Efectuat.

(opțional, nu trebuie să-l instalați)

# apt-get install linotp-adminclient-cli 

(opțional, nu trebuie să-l instalați)

# apt-get install libpam-linotp  

Și astfel, interfața noastră web Linotp este acum disponibilă la:

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

Despre setările din interfața web voi vorbi puțin mai târziu.

Acum, cel mai important lucru! Creăm FreeRadius și îl conectăm cu Linotp.

Instalați FreeRadius și modulul pentru a lucra cu LinOTP

# apt-get install freeradius linotp-freeradius-perl

backup pentru configurațiile client și Users radius.

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

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

Creați un fișier client gol:

# touch /etc/freeradius/clients.conf

Editarea noului nostru fișier de configurare (configurația din backup poate fi folosită ca exemplu)

# nano /etc/freeradius/clients.conf

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

Apoi, creați un fișier utilizatori:

# touch /etc/freeradius/users

Edităm fișierul, spunându-i lui radius că vom folosi perl pentru autentificare.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Apoi, editați fișierul /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Trebuie să specificăm calea către scriptul perl linotp în parametrul modulului:

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

.....
Apoi, creăm un fișier în care spunem din care (domeniu, bază de date sau fișier) să luăm datele.

# 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

Voi intra în mai multe detalii aici pentru că este important:

Descrierea completă a fișierului cu comentarii:
#IP al serverului linOTP (adresa IP a serverului nostru LinOTP)
URL=https://172.17.14.103/validate/simplecheck
#Zona noastră pe care o vom crea în interfața web LinOTP.)
REALM=rearmare1
#Numele grupului de utilizatori care este creat în botul web LinOTP.
RESCONF=fisier_plat
#opțional: comentați dacă totul pare să funcționeze bine
Depanare=Adevărat
#opțional: utilizați acest lucru, dacă aveți certificate autosemnate, altfel comentați (SSL dacă ne creăm propriul certificat și vrem să-l verificăm)
SSL_CHECK=Fals

Apoi, creați fișierul /etc/freeradius/sites-available/linotp

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

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

Și copiați configurația în ea (nu este nevoie să editați nimic):

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
}

În continuare vom crea o legătură SIM:

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

Personal, omor site-urile implicite Radius, dar dacă aveți nevoie de ele, puteți fie să le editați configurația, fie să le dezactivați.

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

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

# service freeradius reload

Acum să revenim la fața web și să o privim mai detaliat:
În colțul din dreapta sus, faceți clic pe LinOTP Config -> UserIdResolvers -> New
Alegem ceea ce dorim: LDAP (AD win, LDAP samba), sau SQL, sau utilizatori locali ai sistemului Flatfile.

Completați câmpurile obligatorii.

În continuare creăm REALMS:
În colțul din dreapta sus, faceți clic pe LinOTP Config -> Realms -> New.
și dați un nume REALMS-urilor noastre și, de asemenea, faceți clic pe UserIdResolvers create anterior.

FreeRadius are nevoie de toate aceste date în fișierul /etc/linotp2/rlm_perl.ini, așa cum am scris mai sus, așa că dacă nu le-ați editat atunci, faceți-o acum.

Serverul este tot configurat.

supliment:

Configurarea LinOTP pe Debian 9:

Instalare:

# 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

(implicit, în Debian 9 mysql (mariaDB) nu oferă să setați o parolă de rădăcină, bineînțeles că o puteți lăsa goală, dar dacă citiți știrile, acest lucru duce foarte des la „eșecuri epice”, așa că o vom seta oricum)

# 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

Lipiți codul (trimis de JuriM, mulțumesc lui pentru asta!):

server linotp {
asculta {
ipaddr = *
port = 1812
tip=auth
}
asculta {
ipaddr = *
port = 1813
tip = cont
}
autoriza {
preproces
Actualizați {
&control:Auth-Type := Perl
}
}
autentifica {
Auth-Type Perl {
perl
}
}
contabilitate {
unix
}
}

Editați /etc/freeradius/3.0/mods-enabled/perl

perl {
nume de fișier = /usr/share/linotp/radius_linotp.pm
func_authenticate = autentificare
func_authorize = autoriza
}

Din păcate, în Debian 9 biblioteca radius_linotp.pm nu este instalată din depozite, așa că o vom lua din github.

# 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

acum să edităm /etc/freeradius/3.0/clients.conf

servere client {
ipaddr = 192.168.188.0/24
secret = parola ta
}

Acum să corectăm nano /etc/linotp2/rlm_perl.ini

Lipim acolo același cod ca atunci când instalăm pe Debian 8 (descris mai sus)

asta e tot conform ideii. (nu a fost testat inca)

Voi lăsa mai jos câteva link-uri despre configurarea sistemelor care de cele mai multe ori trebuie să fie protejate cu autentificare cu doi factori:
Configurarea autentificării cu doi factori în Apache2

Configurați cu Cisco ASA(acolo se folosește un alt server de generare de jetoane, dar setările ASA în sine sunt aceleași).

VPN cu autentificare cu doi factori

ajustare autentificare cu doi factori în ssh (LinOTP este folosit și acolo) - mulțumesc autorului. Acolo puteți găsi și lucruri interesante despre configurarea politicilor LiOTP.

De asemenea, cms-urile multor site-uri acceptă autentificarea cu doi factori (Pentru WordPress, LinOTP are chiar și propriul modul special pentru github), de exemplu, dacă doriți să faceți o secțiune protejată pe site-ul dvs. corporativ pentru angajații companiei.
FAPT IMPORTANT! NU bifați caseta „Google autenteficator” pentru a utiliza Google Authenticator! Codul QR nu se poate citi atunci... (fapt ciudat)

Pentru a scrie acest articol, au fost folosite informații din următoarele articole:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Multumesc autorilor.

Sursa: www.habr.com

Adauga un comentariu