LinOTP dviejų veiksnių autentifikavimo serveris

LinOTP dviejų veiksnių autentifikavimo serveris

Šiandien noriu pasidalinti, kaip nustatyti dviejų veiksnių autentifikavimo serverį, kad būtų apsaugotas įmonės tinklas, svetainės, paslaugos, ssh. Serveris veiks taip: LinOTP + FreeRadius.

Kodėl mums to reikia?
Tai visiškai nemokamas, patogus sprendimas savo tinkle, nepriklausomas nuo trečiųjų šalių tiekėjų.

Ši paslauga yra labai patogi, gana vizuali, skirtingai nuo kitų atvirojo kodo produktų, taip pat palaiko daugybę funkcijų ir strategijų (pavyzdžiui, prisijungimo vardas+slaptažodis+(PIN+OTPToken)). Per API jis integruojamas su SMS siuntimo paslaugomis (LinOTP Config->Provider Config->SMS Provider), generuoja mobiliųjų programų, tokių kaip Google Authentificator, kodus ir daug daugiau. Manau, kad tai patogiau nei aptarta paslauga straipsnis.

Šis serveris puikiai veikia su Cisco ASA, OpenVPN serveriu, Apache2 ir apskritai beveik viskuo, kas palaiko autentifikavimą per RADIUS serverį (pavyzdžiui, SSH duomenų centre).

Reikia:

1) Debian 8 (jessie) - Visada! (bandomasis diegimas Debian 9 yra aprašytas straipsnio pabaigoje)

Pradžia:

Debian 8 diegimas.

Pridėkite LinOTP saugyklą:

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

Raktų pridėjimas:

# gpg --search-keys 913DFF12F86258E5

Kartais „švaraus“ diegimo metu, paleidus šią komandą, Debianas rodo:

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

Tai yra pradinė gnupg sąranka. Viskas gerai. Tiesiog paleiskite komandą dar kartą.
Į Debiano klausimą:

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

Atsakome: 1

Kitas:

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

# apt-get update

Įdiegti mysql. Teoriškai galite naudoti kitą sql serverį, bet dėl ​​paprastumo aš jį naudosiu taip, kaip rekomenduojama LinOTP.

(papildomos informacijos, įskaitant LinOTP duomenų bazės perkonfigūravimą, galite rasti oficialioje dokumentacijoje nuoroda. Ten taip pat galite rasti komandą: dpkg-reconfigure linotp, kad pakeistumėte parametrus, jei jau įdiegėte mysql).

# apt-get install mysql-server

# apt-get update

(nepakenktų dar kartą patikrinti atnaujinimus)
Įdiekite LinOTP ir papildomus modulius:

# apt-get install linotp

Atsakome į montuotojo klausimus:
Naudokite Apache2: taip
Sukurkite admin Linotp slaptažodį: „Jūsų slaptažodis“
Sugeneruoti savarankiškai pasirašytą sertifikatą?: taip
Naudoti MySQL?: taip
Kur yra duomenų bazė: localhost
Sukurkite LinOTP duomenų bazę (bazinį pavadinimą) serveryje: LinOTP2
Sukurkite atskirą duomenų bazės vartotoją: LinOTP2
Mes nustatome vartotojui slaptažodį: „Jūsų slaptažodis“
Ar dabar turėčiau sukurti duomenų bazę? (kažkas panašaus į „Ar tikrai norite...“): taip
Įveskite MySQL root slaptažodį, kurį sukūrėte jį diegdami: „Jūsų slaptažodis“
Atlikta.

(neprivaloma, jums nereikia jo įdiegti)

# apt-get install linotp-adminclient-cli 

(neprivaloma, jums nereikia jo įdiegti)

# apt-get install libpam-linotp  

Taigi mūsų Linotp žiniatinklio sąsaja dabar pasiekiama adresu:

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

Apie nustatymus žiniatinklio sąsajoje pakalbėsiu šiek tiek vėliau.

Dabar svarbiausia! Pakeliame FreeRadius ir susiejame jį su Linotp.

Įdiekite FreeRadius ir modulį darbui su LinOTP

# apt-get install freeradius linotp-freeradius-perl

atsarginę kliento ir vartotojų spindulio konfigūracijų kopiją.

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

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

Sukurkite tuščią kliento failą:

# touch /etc/freeradius/clients.conf

Naujo konfigūracijos failo redagavimas (atsarginė konfigūracijos kopija gali būti naudojama kaip pavyzdys)

# nano /etc/freeradius/clients.conf

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

Tada sukurkite vartotojų failą:

# touch /etc/freeradius/users

Redaguojame failą, nurodydami spindulį, kad autentifikavimui naudosime perl.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Tada redaguokite failą /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Modulio parametre turime nurodyti kelią į perl linotp scenarijų:

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

... ..
Tada sukuriame failą, kuriame pasakome, iš kurio (domeno, duomenų bazės ar failo) imti duomenis.

# 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

Čia papasakosiu šiek tiek išsamiau, nes tai svarbu:

Visas failo aprašymas su komentarais:
#Linotp serverio IP (mūsų LinOTP serverio IP adresas)
URL=https://172.17.14.103/validate/simplecheck
#Mūsų sritis, kurią sukursime LinOTP žiniatinklio sąsajoje.)
REALM=arm1
#Naudotojų grupės, sukurtos LinOTP žiniatinklio skiltyje, pavadinimas.
RESCONF=plokščias_failas
#pasirenkama: pakomentuokite, ar viskas veikia gerai
Debug=Tiesa
#pasirenkama: naudokite tai, jei turite savarankiškai pasirašytus sertifikatus, priešingu atveju komentuokite (SSL, jei sukuriame savo sertifikatą ir norime jį patvirtinti)
SSL_CHECK=Klaidinga

Tada sukurkite failą /etc/freeradius/sites-available/linotp

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

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

Ir nukopijuokite į ją konfigūraciją (nieko redaguoti nereikia):

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
}

Tada sukursime SIM nuorodą:

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

Asmeniškai aš sunaikinu numatytąsias Radius svetaines, bet jei jums jų reikia, galite redaguoti jų konfigūraciją arba jas išjungti.

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

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

# service freeradius reload

Dabar grįžkime prie žiniatinklio veido ir pažvelkime į jį šiek tiek išsamiau:
Viršutiniame dešiniajame kampe spustelėkite LinOTP Config -> UserIdResolvers -> New
Mes pasirenkame, ko norime: LDAP (AD win, LDAP samba), arba SQL, arba vietinius Flatfile sistemos vartotojus.

Užpildykite reikiamus laukus.

Toliau sukuriame REALMS:
Viršutiniame dešiniajame kampe spustelėkite LinOTP Config -> Realms -> New.
ir suteikite pavadinimą mūsų REALMS, taip pat spustelėkite anksčiau sukurtus UserIdResolvers.

„FreeRadius“ reikia visų šių duomenų faile /etc/linotp2/rlm_perl.ini, kaip jau rašiau aukščiau, todėl jei tada neredagavote, padarykite tai dabar.

Visas serveris sukonfigūruotas.

Papildymas:

„LinOTP“ nustatymas „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

(pagal numatytuosius nustatymus Debian 9 mysql (mariaDB) nesiūlo nustatyti root slaptažodžio, žinoma galite palikti tuščią, bet jei skaitote naujienas, tai labai dažnai veda prie "epic fails", todėl mes jį nustatysime bet kokiu atveju)

# 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

Įklijuokite kodą (atsiuntė JuriM, ačiū jam už tai!):

serveris linotp {
klausyk {
ipaddr = *
prievadas = 1812
tipas=auth
}
klausyk {
ipaddr = *
prievadas = 1813
tipas = aktas
}
įgalioti {
išankstinis apdorojimas
atnaujinti {
&control:Auth-Type := Perl
}
}
autentifikuoti {
Auth tipo Perl {
perl
}
}
buhalterija {
Unix
}
}

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

perl {
failo pavadinimas = /usr/share/linotp/radius_linotp.pm
func_authenticate = autentifikuoti
func_authorize = įgalioti
}

Deja, Debian 9 versijoje radius_linotp.pm biblioteka nėra įdiegta iš saugyklų, todėl paimsime ją iš 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

dabar redaguojame /etc/freeradius/3.0/clients.conf

kliento serveriai {
ipaddr = 192.168.188.0/24
paslaptis = jūsų slaptažodis
}

Dabar pataisykime nano /etc/linotp2/rlm_perl.ini

Ten įklijuojame tą patį kodą, kaip ir diegdami debian 8 (aprašyta aukščiau)

tai viskas pagal idėją. (dar neišbandyta)

Žemiau paliksiu keletą nuorodų, kaip nustatyti sistemas, kurias dažniausiai reikia apsaugoti naudojant dviejų veiksnių autentifikavimą:
Dviejų veiksnių autentifikavimo nustatymas Apache2

Sąranka naudojant Cisco ASA(ten naudojamas kitoks žetonų generavimo serveris, bet paties ASA parametrai tokie patys).

VPN su dviejų veiksnių autentifikavimu

reguliavimas dviejų veiksnių autentifikavimas ssh (ten naudojamas ir LinOTP) – ačiū autoriui. Čia taip pat galite rasti įdomių dalykų apie LiOTP politikos nustatymą.

Be to, daugelio svetainių cms palaiko dviejų veiksnių autentifikavimą („WordPress“ LinOTP netgi turi savo specialų modulį GitHub), pavyzdžiui, jei norite savo įmonės svetainėje sukurti apsaugotą skyrių įmonės darbuotojams.
SVARBUS FAKTAS! NENAUDOKITE „Google autentifikatoriaus“ laukelio, kad galėtumėte naudoti „Google Authenticator“! Tada QR kodas neįskaitomas... (keistas faktas)

Rašant šį straipsnį buvo panaudota informacija iš šių straipsnių:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Ačiū autoriams.

Šaltinis: www.habr.com

Добавить комментарий