Serveri i vërtetimit me dy faktorë LinOTP

Serveri i vërtetimit me dy faktorë LinOTP

Sot dua të ndaj se si të konfiguroni një server vërtetimi me dy faktorë për të mbrojtur rrjetin tuaj të korporatës, faqet e internetit, shërbimet, ssh. Serveri do të ekzekutojë kombinimin e mëposhtëm: LinOTP + FreeRadius.

Pse na duhet?
Kjo është një zgjidhje krejtësisht falas, e përshtatshme, brenda rrjetit të vet, e pavarur nga ofruesit e palëve të treta.

Ky shërbim është shumë i përshtatshëm, mjaft vizual, ndryshe nga produktet e tjera me burim të hapur, dhe gjithashtu mbështet një numër të madh funksionesh dhe politikash (Për shembull, hyrje+fjalëkalim+(PIN+OTPToken)). Përmes API-së, ai integrohet me shërbimet e dërgimit të sms (LinOTP Config-> Provider Config->SMS Provider), gjeneron kode për aplikacione celulare si Google Authentificator dhe shumë më tepër. Unë mendoj se është më i përshtatshëm se shërbimi i diskutuar në artikull.

Ky server funksionon në mënyrë të përsosur me Cisco ASA, serverin OpenVPN, Apache2, dhe në përgjithësi me pothuajse gjithçka që mbështet vërtetimin përmes një serveri RADIUS (Për shembull, për SSH në qendrën e të dhënave).

Kërkohet:

1) Debian 8 (jessie) - Sigurisht! (instalimi i provës në debian 9 përshkruhet në fund të artikullit)

Filloni kohë:

Instalimi i Debian 8.

Shtoni depon e LinOTP:

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

Shtimi i çelësave:

# gpg --search-keys 913DFF12F86258E5

Ndonjëherë gjatë një instalimi "të pastër", pas ekzekutimit të kësaj komande, Debian shfaq:

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

Ky është konfigurimi fillestar i gnupg. Është në rregull. Thjesht ekzekutoni përsëri komandën.
Për pyetjen e 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) Выход>

Ne përgjigjemi: 1

Next:

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

# apt-get update

Instaloni mysql. Në teori, ju mund të përdorni një server tjetër sql, por për thjeshtësi unë do ta përdor atë siç rekomandohet për LinOTP.

(informacione shtesë, duke përfshirë rikonfigurimin e bazës së të dhënave LinOTP, mund të gjenden në dokumentacionin zyrtar për lidhje. Aty mund të gjeni edhe komandën: dpkg-rikonfiguroni linotp për të ndryshuar parametrat nëse tashmë keni instaluar mysql).

# apt-get install mysql-server

# apt-get update

(nuk do të dëmtonte të kontrollonim përsëri përditësimet)
Instaloni LinOTP dhe module shtesë:

# apt-get install linotp

Ne i përgjigjemi pyetjeve të instaluesit:
Përdorni Apache2: po
Krijo një fjalëkalim për administratorin Linotp: "Fjalëkalimi juaj"
Gjeneroni certifikatë të vetë-nënshkruar?: po
Përdorni MySQL?: po
Ku ndodhet baza e të dhënave: localhost
Krijo një bazë të dhënash LinOTP (emri bazë) në server: LinOTP2
Krijo një përdorues të veçantë për bazën e të dhënave: LinOTP2
Ne vendosëm një fjalëkalim për përdoruesin: "Fjalëkalimi juaj"
A duhet të krijoj një bazë të dhënash tani? (diçka si "A je i sigurt që dëshiron..."): po
Futni fjalëkalimin rrënjësor të MySQL që keni krijuar kur e instaloni: "Fjalëkalimi juaj"
Done.

(opsionale, nuk keni pse ta instaloni)

# apt-get install linotp-adminclient-cli 

(opsionale, nuk keni pse ta instaloni)

# apt-get install libpam-linotp  

Dhe kështu ndërfaqja jonë e internetit Linotp tani është e disponueshme në:

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

Do të flas për cilësimet në ndërfaqen e internetit pak më vonë.

Tani, gjëja më e rëndësishme! Ne ngremë FreeRadius dhe e lidhim atë me Linotp.

Instaloni FreeRadius dhe modulin për të punuar me LinOTP

# apt-get install freeradius linotp-freeradius-perl

kopjoni konfigurimin e klientit dhe rrezes së përdoruesve.

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

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

Krijoni një skedar bosh klienti:

# touch /etc/freeradius/clients.conf

Redaktimi i skedarit tonë të ri të konfigurimit (konfigurimi i rezervuar mund të përdoret si shembull)

# nano /etc/freeradius/clients.conf

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

Tjetra, krijoni një skedar përdoruesi:

# touch /etc/freeradius/users

Ne redaktojmë skedarin, duke i thënë rrezes se do të përdorim perl për vërtetim.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Më pas, modifikoni skedarin /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Ne duhet të specifikojmë shtegun për në skriptin perl linotp në parametrin e modulit:

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

… ..
Më pas, krijojmë një skedar në të cilin themi se nga cili (domain, bazë të dhënash ose skedar) të marrim të dhënat.

# 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

Këtu do të hyj në pak më shumë detaje sepse është e rëndësishme:

Përshkrimi i plotë i skedarit me komente:
#IP e serverit linOTP (adresa IP e serverit tonë LinOTP)
URL=https://172.17.14.103/validate/simplecheck
#Zona jonë që do të krijojmë në ndërfaqen e internetit LinOTP.)
REALM=krahu1
#Emri i grupit të përdoruesve që është krijuar në grykën e internetit LinOTP.
RESCONF=flat_skedar
#opsionale: komentoni nëse gjithçka duket se funksionon mirë
Debug=E vërtetë
#opsionale: përdorni këtë, nëse keni certifikata të vetë-nënshkruara, përndryshe komentoni (SSL nëse krijojmë certifikatën tonë dhe duam ta verifikojmë)
SSL_CHECK=E rreme

Më pas, krijoni skedarin /etc/freeradius/sites-available/linotp

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

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

Dhe kopjoni konfigurimin në të (nuk ka nevojë të modifikoni asgjë):

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
}

Më pas do të krijojmë një lidhje SIM:

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

Personalisht, unë vras ​​faqet e paracaktuara të Radius, por nëse keni nevojë për to, mund t'i modifikoni ose t'i çaktivizoni konfigurimin e tyre.

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

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

# service freeradius reload

Tani le të kthehemi te faqja e internetit dhe ta shikojmë atë në pak më shumë detaje:
Në këndin e sipërm djathtas, klikoni LinOTP Config -> UserIdResolvers -> New
Ne zgjedhim atë që duam: LDAP (AD win, LDAP samba), ose SQL, ose përdorues lokalë të sistemit Flatfile.

Plotësoni fushat e kërkuara.

Më pas ne krijojmë REALMS:
Në këndin e sipërm djathtas, klikoni LinOTP Config -> Realms -> New.
dhe i jepni një emër REALMS-ve tona, dhe gjithashtu klikoni në UserIdResolvers të krijuar më parë.

FreeRadius ka nevojë për të gjitha këto të dhëna në skedarin /etc/linotp2/rlm_perl.ini, siç shkrova më lart, kështu që nëse nuk e keni modifikuar atëherë, bëjeni tani.

Serveri është i konfiguruar i gjithë.

Supplement:

Konfigurimi i LinOTP në Debian 9:

Vendosja:

# 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

(si parazgjedhje, në Debian 9 mysql (mariaDB) nuk ofron vendosjen e një fjalëkalimi rrënjë, sigurisht që mund ta lini bosh, por nëse lexoni lajmet, kjo shumë shpesh çon në "dështime epike", kështu që ne do ta vendosim gjithsesi)

# 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

Ngjitni kodin (dërguar nga JuriM, faleminderit për këtë!):

server linotp {
dëgjo {
ipaddr = *
port=1812
tip=auth
}
dëgjo {
ipaddr = *
port=1813
lloji = akt
}
Autorizoj {
parapërpunimit
përditëso {
&control:Auth-Type := Perl
}
}
vërtetoj {
Auth-Type Perl {
perl
}
}
Kontabiliteti {
Unix
}
}

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

perl {
emri i skedarit = /usr/share/linotp/radius_linotp.pm
func_authenticate = vërtetoj
func_autorize = autorizoj
}

Fatkeqësisht, në Debian 9 biblioteka radius_linotp.pm nuk është e instaluar nga magazinat, kështu që ne do ta marrim atë nga 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

tani le të redaktojmë /etc/freeradius/3.0/clients.conf

serverat e klientit {
ipaddr = 192.168.188.0/24
sekret = fjalëkalimi juaj
}

Tani le të korrigjojmë nano /etc/linotp2/rlm_perl.ini

Ne ngjitim të njëjtin kod atje si kur instalojmë në debian 8 (përshkruar më sipër)

kjo është e gjitha sipas idesë. (jo testuar ende)

Më poshtë do të lë disa lidhje për konfigurimin e sistemeve që më së shpeshti duhet të mbrohen me vërtetim me dy faktorë:
Vendosja e vërtetimit me dy faktorë në Apache2

Konfigurimi me Cisco ASA(një server tjetër i gjenerimit të shenjave përdoret atje, por cilësimet e vetë ASA janë të njëjta).

VPN me vërtetim me dy faktorë

rregullim vërtetimi me dy faktorë në ssh (Aty përdoret edhe LinOTP) - faleminderit autorit. Aty mund të gjeni edhe gjëra interesante rreth konfigurimit të politikave LiOTP.

Gjithashtu, cms-të e shumë faqeve mbështesin vërtetimin me dy faktorë (Për WordPress, LinOTP madje ka modulin e tij të veçantë për Github), për shembull, nëse doni të krijoni një seksion të mbrojtur në faqen tuaj të internetit të korporatës për punonjësit e kompanisë.
FAKT I RËNDËSISHËM! MOS kontrolloni kutinë "Google autenteficator" për të përdorur Google Authenticator! Kodi QR nuk lexohet atëherë... (fakt i çuditshëm)

Për të shkruar këtë artikull, u përdorën informacione nga artikujt e mëposhtëm:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Faleminderit autorëve.

Burimi: www.habr.com

Shto një koment