LinOTP divu faktoru autentifikācijas serveris

LinOTP divu faktoru autentifikācijas serveris

Šodien es vēlos pastāstīt, kā iestatīt divu faktoru autentifikācijas serveri, lai aizsargātu korporatīvo tīklu, vietnes, pakalpojumus, ssh. Serveris darbosies ar šādu kombināciju: LinOTP + FreeRadius.

Kāpēc mums tas ir vajadzīgs?
Šis ir pilnīgi bezmaksas, ērts risinājums savā tīklā, neatkarīgi no trešo pušu pakalpojumu sniedzējiem.

Šis pakalpojums ir ļoti ērts, diezgan vizuāls, atšķirībā no citiem atvērtā pirmkoda produktiem, kā arī atbalsta milzīgu skaitu funkciju un politiku (piemēram, pieteikšanās+parole+(PIN+OTPToken)). Izmantojot API, tas integrējas ar īsziņu sūtīšanas pakalpojumiem (LinOTP Config->Provider Config->SMS Provider), ģenerē kodus mobilajām lietojumprogrammām, piemēram, Google Authentificator un daudz ko citu. Manuprāt, tas ir ērtāk nekā šeit apspriestais pakalpojums raksts.

Šis serveris lieliski darbojas ar Cisco ASA, OpenVPN serveri, Apache2 un vispār ar gandrīz visu, kas atbalsta autentifikāciju caur RADIUS serveri (piemēram, SSH datu centrā).

Nepieciešams:

1) Debian 8 (Džesija) - Obligāti! (izmēģinājuma instalēšana uz debian 9 ir aprakstīta raksta beigās)

Sākuma laiks:

Debian 8 instalēšana.

Pievienojiet LinOTP repozitoriju:

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

Atslēgu pievienošana:

# gpg --search-keys 913DFF12F86258E5

Dažreiz “tīras” instalēšanas laikā pēc šīs komandas palaišanas Debian parāda:

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

Šī ir sākotnējā gnupg iestatīšana. Ir labi. Vienkārši palaidiet komandu vēlreiz.
Uz Debiana jautājumu:

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

Mēs atbildam: 1

Nākamais:

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

# apt-get update

Instalējiet mysql. Teorētiski var izmantot citu sql serveri, bet vienkāršības labad es to izmantošu kā ieteikts LinOTP.

(papildu informāciju, tostarp par LinOTP datu bāzes pārkonfigurēšanu, var atrast oficiālajā dokumentācijā saite. Tur jūs varat arī atrast komandu: dpkg-reconfigure linotp, lai mainītu parametrus, ja jau esat instalējis mysql).

# apt-get install mysql-server

# apt-get update

(tas nenāktu par ļaunu vēlreiz pārbaudīt atjauninājumus)
Instalējiet LinOTP un papildu moduļus:

# apt-get install linotp

Mēs atbildam uz uzstādītāja jautājumiem:
Izmantojiet Apache2: jā
Izveidojiet paroli administratoram Linotp: “Jūsu parole”
Ģenerēt pašparakstītu sertifikātu?: jā
Vai izmantot MySQL?: jā
Kur atrodas datubāze: localhost
Izveidojiet LinOTP datubāzi (bāzes nosaukumu) serverī: LinOTP2
Izveidojiet atsevišķu lietotāju datu bāzei: LinOTP2
Mēs iestatījām lietotāja paroli: “Jūsu parole”
Vai man tagad izveidot datubāzi? (kaut kas līdzīgs “Vai tiešām vēlaties...”): jā
Ievadiet MySQL saknes paroli, ko izveidojāt, to instalējot: “YourPassword”
Gatavs.

(pēc izvēles, jums tas nav jāinstalē)

# apt-get install linotp-adminclient-cli 

(pēc izvēles, jums tas nav jāinstalē)

# apt-get install libpam-linotp  

Tātad mūsu Linotp tīmekļa saskarne tagad ir pieejama vietnē:

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

Par iestatījumiem tīmekļa saskarnē es runāšu nedaudz vēlāk.

Tagad pats svarīgākais! Mēs paaugstinām FreeRadius un saistām to ar Linotp.

Instalējiet FreeRadius un moduli darbam ar LinOTP

# apt-get install freeradius linotp-freeradius-perl

dublējiet klienta un lietotāju rādiusa konfigurācijas.

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

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

Izveidojiet tukšu klienta failu:

# touch /etc/freeradius/clients.conf

Jaunā konfigurācijas faila rediģēšana (dublēto konfigurāciju var izmantot kā piemēru)

# nano /etc/freeradius/clients.conf

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

Pēc tam izveidojiet lietotāja failu:

# touch /etc/freeradius/users

Mēs rediģējam failu, norādot rādiusu, ka autentifikācijai izmantosim perl.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Pēc tam rediģējiet failu /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Mums ir jānorāda ceļš uz perl linotp skriptu moduļa parametrā:

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

... ..
Tālāk mēs izveidojam failu, kurā sakām, no kura (domēna, datu bāzes vai faila) ņemt datus.

# 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

Šeit es iedziļināšos nedaudz sīkāk, jo tas ir svarīgi:

Pilns faila apraksts ar komentāriem:
#linOTP servera IP adrese (mūsu LinOTP servera IP adrese)
URL=https://172.17.14.103/validate/simplecheck
#Mūsu apgabals, ko izveidosim LinOTP tīmekļa saskarnē.)
REALM=aizmugure1
#Tās lietotāju grupas nosaukums, kas ir izveidota LinOTP tīmekļa purnā.
RESCONF=plakans_fails
#optional: komentējiet, ja šķiet, ka viss darbojas labi
Atkļūdošana = True
#optional: izmantojiet šo, ja jums ir pašparakstīti sertifikāti, pretējā gadījumā komentējiet (SSL, ja mēs izveidojam savu sertifikātu un vēlamies to pārbaudīt)
SSL_CHECK=Nepatiess

Pēc tam izveidojiet failu /etc/freeradius/sites-available/linotp

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

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

Un iekopējiet tajā konfigurāciju (nekas nav jārediģē):

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
}

Tālāk mēs izveidosim SIM saiti:

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

Personīgi es nogalinu noklusējuma Radius vietnes, taču, ja jums tās ir vajadzīgas, varat rediģēt to konfigurāciju vai atspējot.

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

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

# service freeradius reload

Tagad atgriezīsimies pie tīmekļa sejas un apskatīsim to nedaudz sīkāk:
Augšējā labajā stūrī noklikšķiniet uz LinOTP Config -> UserIdResolvers -> New
Mēs izvēlamies, ko vēlamies: LDAP (AD win, LDAP samba), vai SQL, vai lokālos Flatfile sistēmas lietotājus.

Aizpildiet obligātos laukus.

Tālāk mēs izveidojam REALMS:
Augšējā labajā stūrī noklikšķiniet uz LinOTP Config -> Realms -> New.
un piešķiriet nosaukumu mūsu REALMS, kā arī noklikšķiniet uz iepriekš izveidotajiem UserIdResolvers.

FreeRadius visi šie dati ir nepieciešami /etc/linotp2/rlm_perl.ini failā, kā jau rakstīju iepriekš, tādēļ, ja toreiz nerediģējāt, dariet to tagad.

Serveris viss ir konfigurēts.

Papildinājums:

LinOTP iestatīšana operētājsistēmā 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

(pēc noklusējuma Debian 9 versijā mysql (mariaDB) nepiedāvā iestatīt root paroli, protams, var atstāt tukšu, bet, ja lasi ziņas, tas ļoti bieži noved pie “epic fails”, tāpēc mēs to iestatīsim jebkurā gadījumā)

# 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

Ielīmējiet kodu (sūtīja JuriM, paldies viņam par to!):

serveris linotp {
klausies {
ipaddr = *
ports = 1812
tips=auth
}
klausies {
ipaddr = *
ports = 1813
tips = akts
}
autorizēt {
priekšapstrāde
Atjaunināt {
&control:Auth-Type := Perl
}
}
autentificēt {
Auth-Type Perl {
Perl
}
}
grāmatvedība {
Unix
}
}

Rediģējiet /etc/freeradius/3.0/mods-enabled/perl

perl {
faila nosaukums = /usr/share/linotp/radius_linotp.pm
func_authenticate = autentificēt
func_authorize = autorizēt
}

Diemžēl Debian 9 versijā radius_linotp.pm bibliotēka nav instalēta no krātuvēm, tāpēc mēs to ņemsim no 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

tagad rediģēsim /etc/freeradius/3.0/clients.conf

klientu serveri {
ipaddr = 192.168.188.0/24
noslēpums = jūsu parole
}

Tagad labosim nano /etc/linotp2/rlm_perl.ini

Mēs tur ielīmējam to pašu kodu, ko instalējot uz debian 8 (aprakstīts iepriekš)

tas viss pēc idejas. (vēl nav pārbaudīts)

Tālāk es atstāšu dažas saites par sistēmu iestatīšanu, kuras visbiežāk ir jāaizsargā ar divu faktoru autentifikāciju:
Divu faktoru autentifikācijas iestatīšana Apache2

Iestatīšana ar Cisco ASA(tur tiek izmantots cits marķieru ģenerēšanas serveris, bet paša ASA iestatījumi ir vienādi).

VPN ar divu faktoru autentifikāciju

koriģēšana divu faktoru autentifikācija ssh (Tur tiek izmantots arī LinOTP) - paldies autoram. Tur varat atrast arī interesantas lietas par LiOTP politiku iestatīšanu.

Turklāt daudzu vietņu cms atbalsta divu faktoru autentifikāciju (WordPress gadījumā LinOTP pat ir savs īpašs modulis GitHub), piemēram, ja vēlaties savā uzņēmuma vietnē izveidot aizsargātu sadaļu uzņēmuma darbiniekiem.
SVARĪGS FAKTS! NEATzīmējiet izvēles rūtiņu “Google autenteficator”, lai izmantotu Google autentifikatoru! QR kods tad nav nolasāms... (dīvains fakts)

Lai uzrakstītu šo rakstu, tika izmantota informācija no šādiem rakstiem:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Paldies autoriem.

Avots: www.habr.com

Pievieno komentāru