
Sot par ndihmën time, do të ndaj si të konfigurohet një server për autorizimin me dy faktorë, për të mbrojtur rrjetin korporativ, faqet e internetit, shërbimet, ssh. Në server do të funksionojë një lidhje: LinOTP + FreeRadius.
Pse na nevojitet?
Kjo është një zgjidhje krejtësisht falas, e lehtë për t'u përdorur brenda rrjetit tënd, e pavarur nga ofruesit e jashtëm.
Ky shërbim është shumë i përshtatshëm, i qartë në krahasim me produktet e tjera me burim të hapur, dhe gjithashtu mbështet një gamë të gjerë funksionesh dhe politikash (për shembull login + password + (PIN + OTP Token)). Ndihmon për integrimin me shërbimet e dërgimit të sms-ve përmes API (LinOTP Config->Provider Config->SMS Provider), gjeneron kode për aplikacione mobile si Google Authenticator dhe shumë të tjera. E mendoj atë më të përshtatshme se shërbimi i shqyrtuar në .
Ky server funksionon shkëlqyeshëm me Cisco ASA, serverin OpenVPN, Apache2, dhe në përgjithësi praktiksht me çdo gjë që mbështet autentifikimin përmes serverit RADIUS (për shembull për SSH në data center).
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ë depot 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ë gjatë instalimit 'të pastër', pas ekzekutimit të kësaj komande, Debian jep:
gpg: krijohet dosja `/root/.gnupg`
gpg: krijohet një skedar i ri konfigurimi `/root/.gnupg/gpg.conf`
gpg: KËSHILLIM: parametrat në `/root/.gnupg/gpg.conf' nuk janë ende aktivë në këtë ekzekutim
gpg: krijohet tabela e çelësave `/root/.gnupg/secring.gpg`
gpg: krijohet tabela e çelësave `/root/.gnupg/pubring.gpg`
gpg: nuk janë caktuar serverë çelësash (përdorni --keyserver)
gpg: dështim në kërkimin në serverin e çelësave: URI i keq
Ky është konfigurimi fillestar i gnupg. Nuk ka gjë të keqe. Thjesht ekzekutoni komandën përsëri.
Në pyetjen e Debiant:
gpg: kërkim "913DFF12F86258E5" në serverin hkp keys.gnupg.net
(1) LSE LinOTP2 Packaging
2048 bit RSA key F86258E5, krijuar: 2010-05-10
Keys 1-1 e 1 për "913DFF12F86258E5". Shkruani numrat, N) Tjetër ose Q) Dalja>Përgjigjemi: 1
Pastaj:
# gpg --export 913DFF12F86258E5 | apt-key add -# apt-get updateInstalojmë mysql. Në teori, mund të përdorim një server tjetër sql, por për thjeshtësi do ta përdor këtë, si të rekomanduar për LinOTP.
(informacione të tjera, duke përfshirë rikompozimin e bazës LinOTP, mund të gjenden në dokumentacionin zyrtar për . Atje gjithashtu, mund të gjeni komandën: dpkg-reconfigure linotp për të ndryshuar parametrat nëse e keni instaluar tashmë mysql).
# apt-get install mysql-server# apt-get update (kontrollimi i përditësimeve përsëri nuk dëmton)
Instalojmë LinOTP dhe modulet shtesë:
# apt-get install linotp Përgjigjemi në pyetjet e instaluesit:
Të përdorim Apache2: po
Mendoni një fjalëkalim për admin Linotp: "FjalëkalimiJuaj"
Të gjenerojmë një certifikatë të vetëshkruar?: po
Të përdorim MySQL?: po
Ku ndodhet baza e të dhënave: localhost
Krijojmë bazën LinOTP(emri i bazës) në serverin: LinOTP2
Krijojmë një përdorues të veçantë për bazën e të dhënave: LinOTP2
I vendosim fjalëkalimin përdoruesit: «FjalëkalimiJuaj»
Të krijojmë bazën tani? (diçka si “A jeni të sigurt që dëshironi ...”): po
Shtypim fjalëkalimin root të MySQL që krijuam gjatë instalimit: «FjalëkalimiJuaj»
Gati.
(opsionale, mund të mos e vendosni)
# apt-get install linotp-adminclient-cli (opsionale, mund të mos e vendosni)
# apt-get install libpam-linotp Kështu, ndërfaqja jonë e internetit Linotp tani është e qasshme në adresën:
"<b>https<\/b>: \/\/IP_server\/manage"Më vonë do të flas për cilësimet në ndërfaqen e internetit.
Tani, gjëja më e rëndësishme! Aktivizojmë FreeRadius dhe e lidhim me Linotp.
Instalojmë FreeRadius dhe modulin e punës me LinOTP
# apt-get install freeradius linotp-freeradius-perlkrijojmë rezervë për konfigurimet e klientëve dhe përdoruesve të radiusit.
# 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.confMegjithatë, redaktojmë skedarin tonë të ri të konfigurimit (konfigurimi i rezervuar mund të përdoret 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 autentifikim.
# nano /etc/freeradius/usersDEFAULT Auth-type := perlPastaj redaktojmë skedarin /etc/freeradius/modules/perl
# nano /etc/freeradius/modules/perlNa nevojitet të shkruajmë rrugën në skenarin perl linotp në parametrin modul:
Perl { .......
.........
module = /usr/lib/linotp/radius_linotp.pm …..
Më pas krijojmë një skedar, në të cilin i themi nga cili (domain, bazë ose skedar) të marrim të dhënat.
# touch /etc/linotp2/rlm_perl.ini# nano /etc/linotp2/rlm_perl.iniURL=https://IP_i_serverit_tonë_LinOTP(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=FalseKëtu do të ndalem pak më shumë, pasi ë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
Pastaj krijojmë një skedar /etc/freeradius/sites-available/linotp
# touch /etc/freeradius/sites-available/linotp# nano /etc/freeradius/sites-available/linotpDhe kopjojmë në të konfigurimin (nuk është nevoja të redaktojmë asgjë):
authorize {
#normalizes malformed client request before handed on to other modules (see '/etc/freeradius/modules/preprocess')
preprocess
# Nëse po përdorni lloje të shumta realm, ndoshta
# dëshironi të vendosni "ignore_null = yes" për të gjithë ata.
# Në të kundërt, kur stili i parë i realm nuk përputhet,
# stilet e tjera nuk do të kontrollohen.
#lejon një listë realm (shih '/etc/freeradius/modules/realm')
IPASS
#kupton diçka si USER@REALM dhe mund të njohë komponentët (shih '/etc/freeradius/modules/realm')
suffix
#kupton USERREALM dhe mund të njohë komponentët (shih '/etc/freeradius/modules/realm')
ntdomain
# Lexoni skedarin 'users' për të mësuar rreth konfigurimeve speciale që duhet të përdoren për
# përdoruesit e caktuar (shih '/etc/freeradius/modules/files')
files
# lejon që autentifikimi të skadojë (shih '/etc/freeradius/modules/expiration')
expiration
# lejon të përcaktohen kohët e shërbimit të vlefshëm (shih '/etc/freeradius/modules/logintime')
logintime
# Nuk kemi radius_shortname_map!
pap
}
#këtu moduli linotp perl thirret për përpunim të mëtejshëm
authenticate {
perl
}Më pas do të bëjmë një lidhje simbolike:
# ln -s ../sites-available/linotp /etc/freeradius/sites-enabledUnë personalisht shkatërroj faqet default të radius, por nëse ju nevojiten, mund të ndryshoni 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 do ta shqyrtojmë pak më në detaje:
Në këndin e sipërm të djathtë klikoni LinOTP Config -> UserIdResolvers -> New
Zgjidhni çfarë dëshironi: LDAP (AD win, LDAP samba), apo SQL, apo përdorues lokalë të sistemit Flatfile.
Plotësoni fushat e kërkuara.
Më pas krijojmë REALMS:
Në këndin e sipërm të djathtë klikoni LinOTP Config -> Realms -> New.
dhe jepni emrin REALMS-it tonë, si dhe klikoni në UserIdResolversin që e krijuam më parë.
Të gjitha këto të dhëna nevojiten për freeRadius në skedarin /etc/linotp2/rlm_perl.ini, siç e përmenda më lart, prandaj, nëse nuk e keni redaktuar atëherë, bëni këtë tani.
Të gjitha serveri është i konfiguruar.
Për të ndryshuar konfigurimin, nuk është e nevojshme të dërgoni trupin e kërkesës në formatin
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 kërkon të vendosni një fjalëkalim për rrënjën, natyrisht mund ta lini ashtu siç është, por nëse lexoni lajme, shpesh kjo çon në "epik failures", prandaj ne do ta vendosim)
# mysql -u root -puse mysql;UPDATE user SET Password = PASSWORD('këtu_fjalëkalimi') 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/linotpNgjisim kodin (dërguar nga JuriM, faleminderit për këtë!):
server linotp {
listen {
ipaddr = *
port = 1812
type = auth
}
listen {
ipaddr = *
port = 1813
type = acct
}
authorize {
preprocess
update {
&control:Auth-Type := Perl
}
}
authenticate {
Auth-Type Perl {
perl
}
}
accounting {
unix
}
}
Redaktoni /etc/freeradius/3.0/mods-enabled/perl
perl {
filename = /usr/share/linotp/radius_linotp.pm
func_authenticate = authenticate
func_authorize = authorize
}
Për fat të keq, në debian 9 biblioteka radius_linotp.pm nuk instalohet nga repo, 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 të riparojmë /etc/freeradius/3.0/clients.conf
client servers {
ipaddr = 192.168.188.0/24
secret = fjalëkalimijuaj
}
tani do të riparojmë nano /etc/linotp2/rlm_perl.ini
Ngjisim atje të njëjtin kod, si me instalimin në debian 8 (përshkruar më sipër)
në thelb është gjithçka. (ende pa u testuar)
Do të lë më poshtë disa lidhje për konfigurimin e sistemeve, të cilat shpesh kërkojnë të mbrohen me autentifikim me dy faktorë:
Konfigurimi i autentikimit me dy faktorë në
(aty përdoret një server tjetër për gjenerimin e tokenëve, por konfigurimi i vetë ASA është i njëjtë).
Configuration (aty gjithashtu përdoret LinOTP) – faleminderit autorit. Atje gjithashtu mund të gjeni gjëra interesante për konfigurimin e politikave të LiOTP.
Gjithashtu cms të shumë faqeve mbështesin autentikimin me dy faktorë (Për WordPress, LinOTP ka madje një modul të veçantë në ), për shembull, nëse dëshironi të bëni një seksion të mbrojtur për punonjësit e kompanisë suaj në faqen tuaj korporate.
Fakti i rëndësishëm! Mos e aktivizoni opsionin "Google autenteficator" për të përdorur autentikimin e Google! QR kodi nuk lexohen kështu... (fakt i çuditshëm)
Për shkruarjen e artikullit janë përdorur informacionet nga artikujt e mëposhtëm:
Faleminderit autorëve.
Burimi: habr.com
