Serveri i autorizimit me dy faktorë LinOTP

Serveri i autorizimit me dy faktorë LinOTP

Sot do të ndaja si të konfigurojmë serverin e autorizimit me dy faktorë për të mbrojtur rrjetin korporativ, faqet, shërbimet, ssh. Në server do të funksionojë kombinimi: LinOTP + FreeRadius.

Përse na nevojitet?
Kjo është një zgjidhje krejtësisht pa pagesë, e lehtë për t'u përdorur brenda rrjetit tonë, pa u varur nga ofrues të jashtëm.

Ky shërbim është mjaft i përshtatshëm, është vizualisht i qartë, ndryshe nga produktet e tjera me burim të hapur, dhe gjithashtu mbështet një shumëllojshmëri të madhe funksionesh dhe politikash (për shembull login+password+(PIN+OTPToken)). Nëpërmjet API, integrohet me shërbimet e dërgesës SMS (LinOTP Config->Provider Config->SMS Provider), gjeneron kode për aplikacione mobile si Google Authenticator dhe shumë të tjera. Unë mendoj se është më i përshtatshëm se shërbimi i trajtuar në artikullin.

Ky server punon shkëlqyer me Cisco ASA, serverin OpenVPN, Apache2, dhe në përgjithësi me çdo gjë që mbështet autentikimin përmes serverit RADIUS (për shembull për SSH në qendrat e të dhënave).

Kërkohet:

1) Debian 8 (jessie) — Patjetër! (instalimi provues në debian 9 është përshkruar në fund të artikullit)

Fillimi:

Instalojmë Debian 8.

Shtojmë depozitat LinOTP:

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

Shtojmë çelësat:

# gpg --search-keys 913DFF12F86258E5

Ndonjëherë, me një instalim "të pastër", pas ekzekutimit të kësaj komande, Debian jep:

gpg: u krijua dosja `/root/.gnupg'
gpg: u krijua një skedar i ri konfigurimi `/root/.gnupg/gpg.conf'
gpg: KËTËN E KËTË SERIES: parametrat në `/root/.gnupg/gpg.conf' akoma nuk janë aktivë për këtë ekzekutimin
gpg: u krijua tabela e çelësave `/root/.gnupg/secring.gpg'
gpg: u krijua tabela e çelësave `/root/.gnupg/pubring.gpg'
gpg: nuk janë caktuar serverat e çelësave (përdorni --keyserver)
gpg: dështim në kërkimi në serverin e çelësave: URI i keq

Kjo është konfigurimi fillestar i gnupg. S'ka asgjë për t'u shqetësuar. Thjesht ekzekutoni përsëri komandën.
Për pyetjen e Debiana:

gpg: kërkimi "913DFF12F86258E5" në serverin hkp keys.gnupg.net
(1)	LSE LinOTP2 Packaging 
	  çelësi RSA 2048 bit F86258E5, krijuar: 2010-05-10
Çelësat 1-1 nga 1 për "913DFF12F86258E5".  Shkruani numrat, N) Tjetër ose Q) Dalja>

Përgjigjemi: 1

Tjetër:

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

# apt-get update

Po instalahet mysql. Në teori, mund të përdoret një server tjetër sql, por për lehtësinë time do ta përdor këtë, siç rekomandohet për LinOTP.

(informacion shtesë, përfshirë për rikonfigurimin e bazës LinOTP mund të gjendet në dokumentacionin zyrtar për lidhjes. Atje gjithashtu, mund të gjeni komandën: dpkg-reconfigure linotp për të ndryshuar parametrat nëse tashmë e keni instaluar mysql).

# apt-get install mysql-server

# apt-get update

(kontrolli i përditësimeve sërish nuk do të dëmtonte)
Po instalahet LinOTP dhe modulet shtesë:

# apt-get install linotp

Përgjigjemi pyetjeve të instaluest:
Përdor Apache2: po
Sa vijon, shpikni fjalëkalimin për admin Linotp: «FjalëkalimiJuaj»
Të gjenerohet një certifikatë e vetë-nënshkruar?: po
Të përdorim MySQL?: po
Ku ndodhet baza e të dhënave: localhost
Krijojmë bazën LinOTP (emri i bazës) në server: LinOTP2
Krijojmë një përdorues të veçantë për bazën e të dhënave: LinOTP2
Caktojmë fjalëkalimin për përdoruesin: «FjalëkalimiJuaj»
A të krijojmë bazën tani? (diçka si “A jeni të sigurt që dëshironi ...”): po
Shkruajmë fjalëkalimin root të MySQL që krijuam gjatë instalimit: «FjalëkalimiJuaj»
Kryer.

(opsional, nuk është e detyrueshme)

# apt-get install linotp-adminclient-cli 

(opsional, nuk është e detyrueshme)

# apt-get install libpam-linotp  

Dhe kështu ndërfaqja jonë e internetit LinOtp tani është e aksesueshme në adresën:

"<b>https<\/b>: \\\/\\\/IP_server\\\/manage"

Rreth konfigurimeve në ndërfaqen e internetit do flas pak më vonë.

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

Instalojmë FreeRadius dhe modulin për funksionimin me LinOTP

# apt-get install freeradius linotp-freeradius-perl

backup konfigurimet client dhe users të Radius.

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

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

Krijojmë një skedar të zbrazët për klientin:

# touch /etc/freeradius/clients.conf

Redaktojmë skedarin tonë të ri të konfigurimit (konfigurimi i dhënë mund të shërbejë si shembull)

# nano /etc/freeradius/clients.conf

client 192.168.188.0/24 {
secret  = passwd # fjalëkalimi për lidhjen e klientëve
}

Më pas krijojmë skedarin users:

# touch /etc/freeradius/users

Redaktojmë skedarin, duke i thënë Radiusit se do të përdorim perl për autentifikimin.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Më pas redaktojmë skedarin /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Nevojitet të shkruani rrugën për skenarin perl linotp në parametrin module:

Perl { .......
.........
module = /usr/lib/linotp/radius_linotp.pm

…..
Më pas krijojmë një skedar, ku tregojmë nga cilat (domain, bazë ose skedar) do të marrim të dhënat.

# touch /etc/linotp2/rlm_perl.ini

# nano /etc/linotp2/rlm_perl.ini

URL=https://IP_e_serverit_Tuaj_LinOTP(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=False

Këtu do të ndalem pak më në hollësi, pasi kjo është e rëndësishme:

Përshkrimi i plotë i skedarit me komente:
#IP of the linotp server (IP адрес нашего LinOTP сервера)
URL=https://172.17.14.103/validate/simplecheck
#Наша область которую мы создадим в веб интерфейсе LinOTP.)
REALM=rearm1
#Имя группы юзверей которая создается в вебморде LinOTP.
RESCONF=flat_file
#optional: comment out if everything seems to work fine
Debug=True
#optional: use this, if you have selfsigned certificates, otherwise comment out (SSL если мы создаем свой сертификат и хотим его проверять)
SSL_CHECK=False

Më pas do të krijojmë skedarin /etc/freeradius/sites-available/linotp

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

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

Dhe do ta kopjojmë brenda konfigurimin (nuk ka nevojë të ndryshohet asgjë):

autorizo {
#normalizon kërkesat e formuluara gabim nga klienti para se të kalojnë në module të tjera (shih '/etc/freeradius/modules/preprocess')
paraproces
#  Nëse po përdorni lloje të shumtë realm-esh, ju ndoshta
#  dëshironi të vendosni "ignore_null = yes" për të gjithë ata.
#  Ndryshe, kur stili i parë i realm-it nuk përputhet,
#  stilët e tjerë nuk do të kontrollohen.
#lejon një listë realesh (shih '/etc/freeradius/modules/realm')
IPASS
#kupton diçka si USER@REALM dhe mund të diferencojë komponentët (shih '/etc/freeradius/modules/realm')
suffix
#kupton USERREALM dhe mund të diferencojë komponentët (shih '/etc/freeradius/modules/realm')
ntdomain
#  Lexoni skedarin 'users' për të mësuar rreth konfigurimeve speciale që duhet të aplikohen për
# përdorues të caktuar (shih '/etc/freeradius/modules/files')
files
# lejon që autentifikimi të skadojë (shih '/etc/freeradius/modules/expiration')
expiration
# lejon të përcaktoni kohët e shërbimeve të vlefshme (shih '/etc/freeradius/modules/logintime')
logintime
# Nuk kemi radius_shortname_map!
pap
}
#këtu moduli perl linotp thirret për përpunim të mëtejshëm
autentikim {
perl
}

Tani do të krijojmë një lidhje simbolike:

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

Personal, unë shkatërroj faqat default të radiusit, por nëse ju nevojiten ato, mund të redaktoni konfigurimin e tyre ose t'i çaktivizoni.

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

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

# service freeradius reload

Tani kthehemi te ndërfaqja web dhe e shqyrtojmë pak më në detaje:
Në këndin e sipërm të djathtë klikoni LinOTP Config -> UserIdResolvers ->New
Zgjidhni atë që dëshironi: LDAP (AD win, LDAP samba), ose SQL, ose përdorues lokal të sistemit Flatfile.

Plotësoni fushat përkatëse.

Më pas krijojmë REALMS:
Në këndin e sipërm të djathtë klikoni LinOTP Config ->Realms ->New.
dhe i japim një emër REALMS-it tonë, si dhe klikojmë mbi UserIdResolvers që krijuam më parë.

Të gjitha këto të dhëna janë të nevojshme për freeRadius në skedarin /etc/linotp2/rlm_perl.ini, siç e thashë më sipër, prandaj, nëse nuk e keni redaktuar atëherë, bëjeni tani.

Të gjithë serveri është i konfiguruar.

Shtesë:

Konfigurimi i LinOTP në Debian 9:

Instalimi:

# 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

(në mënyrë default, në Debian 9 mysql (mariaDB) nuk ofron të vendosni fjalëkalimin e root, sigurisht që mund ta lini dhe bosh, por nëse po lexoni lajmet, kjo shpesh çon në «epik fail», prandaj ne do ta vendosim)

# mysql -u root -p
përdor mysql;
UPDATE user SET Password = PASSWORD('tut_parol') 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

Shtojmë kodin (dërguar nga JuriM, për të cilin e falenderojmë!):

server linotp {
dëgjo {
ipaddr = *
port = 1812
lidhja = auth
}
dëgjo {
ipaddr = *
port = 1813
lidhja = acct
}
autorizo {
parapërpunim
update {
&control:Auth-Type := Perl
}
}
autentifiko {
Auth-Type Perl {
perl
}
}
llogaritje {
unix
}
}

Rregullojmë /etc/freeradius/3.0/mods-enabled/perl

perl {
filename = /usr/share/linotp/radius_linotp.pm
func_authenticate = authenticate
func_authorize = authorize
}

Fatkeqësisht në debian 9, biblioteka radius_linotp.pm nuk instalohet nga depozitë, prandaj do ta marrim 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 do ta rregullojmë /etc/freeradius/3.0/clients.conf

client servers {
ipaddr = 192.168.188.0/24
sekreti = вашпароль
}

tani do ta rregullojmë nano /etc/linotp2/rlm_perl.ini

Shtojmë atje të njëjtin kod si gjatë instalimit në debian 8 (të përshkruar më sipër)

në parim, gjithçka. (deri tani nuk është testuar)

Do të lë më poshtë disa lidhje për konfigurimin e sistemeve, që shpesh kërkohet të mbrohen me autentifikim me dy faktorë:
Konfigurimi i autentifikimit me dy faktorë në Apache2

Konfigurimi me Cisco ASA(aty përdoret një server tjetër për gjenerimin e tokeneve, por konfigurimet e vetë ASA janë të njëjta).

VPN me autentifikim me dy faktorë

Konfigurimi autentifikimi me dy faktorë në ssh (aty përdoret gjithashtu LinOTP) — faleminderit autori. Atje gjithashtu mund të gjeni gjëra interesante për konfigurimin e politikave të LiOTP.

Gjithashtu, CMS-ja e shumë faqeve në internet mbështet autentifikimin me dy faktorë (për WordPress, LinOTP ka një modul të veçantë në github), për shembull, nëse doni të krijoni një seksion të sigurt për punonjësit e kompanisë në faqen tuaj korporative.
FAKTI I RËNDËSISHËM! MOS e vendosni shenjën e kontrollit "Google autenteficator" për të përdorur autentifikuesin e Google! Kodi QR nuk lexohen atëherë... (fakt i çuditshëm)

Për përgatitjen e këtij artikulli u përdor informacioni nga artikujt e mëposhtëm:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Faleminderit autorëve.

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster