
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ë .
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.listShtojmë çelësat:
# gpg --search-keys 913DFF12F86258E5Ndonjë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 updatePo 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 . 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-perlbackup konfigurimet client dhe users të Radius.
# mv /etc/freeradius/clients.conf /etc/freeradius/clients.old# mv /etc/freeradius/users /etc/freeradius/users.oldKrijojmë një skedar të zbrazët për klientin:
# touch /etc/freeradius/clients.confRedaktojmë skedarin tonë të ri të konfigurimit (konfigurimi i dhënë mund të shërbejë si shembull)
# nano /etc/freeradius/clients.confclient 192.168.188.0/24 {
secret = passwd # fjalëkalimi për lidhjen e klientëve
}Më pas krijojmë skedarin users:
# touch /etc/freeradius/usersRedaktojmë skedarin, duke i thënë Radiusit se do të përdorim perl për autentifikimin.
# nano /etc/freeradius/usersDEFAULT Auth-type := perlMë pas redaktojmë skedarin /etc/freeradius/modules/perl
# nano /etc/freeradius/modules/perlNevojitet 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.iniURL=https://IP_e_serverit_Tuaj_LinOTP(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=FalseKë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/linotpDhe 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-enabledPersonal, 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 -ppë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/linotpShtojmë 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.pmtani 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ë
(aty përdoret një server tjetër për gjenerimin e tokeneve, por konfigurimet e vetë ASA janë të njëjta).
Konfigurimi (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ë ), 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:
Faleminderit autorëve.
Burimi: habr.com
