
Täna tahan jagada, kuidas seadistada kahefaktorilise autentimise serverit, et kaitsta ettevõtte võrgus, veebisaitides, teenustes ja ssh. Serveris töötab kombinatsioon: LinOTP + FreeRadius.
Miks me seda vajame?
See on täiesti tasuta ja mugav lahendus oma võrgus, sõltumata kolmandatest osapooltest.
See teenus on väga mugav, visuaalselt selge, erinevalt teistest avatud lähtekoodiga toodetest, ning toetab tohutult palju funktsioone ja poliitikaid (näiteks login+password+(PIN+OTPToken)). API kaudu integreerub SMS-i saatmisteenustega (LinOTP Config->Provider Config->SMS Provider), genereerib koode mobiilirakenduste jaoks nagu Google Autentificator ja palju muud. Pean seda mugavamaks kui töös oleva teenuse puhul. .
See server töötab suurepäraselt Cisco ASA, OpenVPN serveri, Apache2 ja tõeliselt peaaegu kõigega, mis toetab autentimist RADIUS serveri kaudu (näiteks SSH andmekeskustes).
Nõutav:
1) Debian 8 (jessie) — Kohustuslik! (katseinstallatsioon debian 9 peal on artikli lõpus kirja pandud)
Algus:
Installime Debian 8.
Lisame LinOTP reposti:
# echo 'deb http://www.linotp.org/apt/debian jessie linotp' > /etc/apt/sources.list.d/linotp.listLisame võtmed:
# gpg --search-keys 913DFF12F86258E5Mõnikord pärast "puhast" installatsiooni, pärast selle käsu täitmist, annab Debian järgmise veateate:
gpg: loodud kataloog `/root/.gnupg'
gpg: loodud uus seadistusfail `/root/.gnupg/gpg.conf'
gpg: TÄHELEPANU: failis `/root/.gnupg/gpg.conf' olevad parameetrid ei aktiveeru sellel käivitamisel
gpg: loodud võtme tabel `/root/.gnupg/secring.gpg'
gpg: loodud võtme tabel `/root/.gnupg/pubring.gpg'
gpg: võtme serverid pole seadistatud (kasutage --keyserver)
gpg: võtme serveril otsimisel tõrge: vale URI
See on algne gnupg seadistamine. Pole hullu. Lihtsalt käivitage käsk uuesti.
Debiani küsimusele:
gpg: otsib "913DFF12F86258E5" hkp serverilt keys.gnupg.net
(1) LSE LinOTP2 Pakendamine
2048 bitine RSA võti F86258E5, loodud: 2010-05-10
Võtmed 1-1: "913DFF12F86258E5". Sisestage numbrid, N) Järgmine või Q) Välja>Vastame: 1
Jätkame:
# gpg --export 913DFF12F86258E5 | apt-key add -# apt-get updateInstallime mysql. Teoreetiliselt on võimalik kasutada muud SQL serverit, kuid lihtsuse huvides kasutan seda, kuna see on LinOTP jaoks soovitatud.
(lisainformatsiooni, sealhulgas LinOTP baasi ümberkonfigureerimise kohta leiate ametlikust dokumentatsioonist . Seal leiate ka käsu: dpkg-reconfigure linotp, et muuta parameetreid, kui olete mysql juba installinud).
# apt-get install mysql-server# apt-get update (veel kord värskendusi kontrollida ei tee paha)
Installime LinOTP ja lisamoodulid:
# apt-get install linotp Vastame installija küsimustele:
Kasutada Apache2: jah
Mõelge Linopi admin parool: „TeieParool“
Genereeri iseallkirjastatud sertifikaat?: jah
Kas kasutada MySQL?: jah
Kus asub andmebaas: localhost
Loome LinOTP (andmebaasi nimi) andmebaasi serverisse: LinOTP2
Loome andmebaasi jaoks eraldi kasutaja: LinOTP2
Seame kasutajale parooli: „TeieParool“
Kas luua andmebaas kohe? (midagi sarnast „Kas olete kindel, et soovite …“): jah
Sisestame MySQL root parooli, mille lõime installimise ajal: „TeieParool“
Valmis.
(valikuline, ei ole kohustuslik)
# apt-get install linotp-adminclient-cli (valikuline, ei ole kohustuslik)
# apt-get install libpam-linotp Nii et meie veebiliides Linotp on nüüd saadaval aadressil:
"<b>https<\/b>: \\\/\\\/IP_serveeri\\\/manage"Räägin veebiliidese seadistustest veidi hiljem.
Nüüd, kõige tähtsam! Käivitame FreeRadiusi ja seome selle LinOTP-iga.
Paigaldame FreeRadiusi ja LinOTP modul
# apt-get install freeradius linotp-freeradius-perlvarundame kliendi ja kasutajate konfigureerimise failid.
# mv /etc/freeradius/clients.conf /etc/freeradius/clients.old# mv /etc/freeradius/users /etc/freeradius/users.oldLoome tühja kliendi faili:
# touch /etc/freeradius/clients.confMuudame meie uut konfigureerimise faili (varundatud konfi saab kasutada näitena)
# nano /etc/freeradius/clients.confclient 192.168.188.0/24 {
secret = passwd # parool klientide ühendamiseks
}Seejärel loome kasutajate faili:
# touch /etc/freeradius/usersMuudame faili, öeldes Radiusile, et kasutame autentimiseks Perl'i.
# nano /etc/freeradius/usersDEFAULT Auth-type := perlSeejärel muudame faili /etc/freeradius/modules/perl
# nano /etc/freeradius/modules/perlPeame määrama tee Perl'i skripti linotp parameetrites:
Perl { .......
.........
module = /usr/lib/linotp/radius_linotp.pm …..
Seejärel loome faili, kus määrame, millistest (domeenist, andmebaasist või failist) andmeid võtta.
# touch /etc/linotp2/rlm_perl.ini# nano /etc/linotp2/rlm_perl.iniURL=https://IP_teie_LinOTP_server (192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=FalseSiin peatun veidi põhjalikumalt, kuna see on oluline:
Faili täielik kirjeldus koos kommentaaridega:
#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
Seejärel loome faili /etc/freeradius/sites-available/linotp
# touch /etc/freeradius/sites-available/linotp# nano /etc/freeradius/sites-available/linotpJa kopeerime sinna konfi (midagi ei pea muutma):
authorize {
#normalizes maleformed client request before handed on to other modules (see '/etc/freeradius/modules/preprocess')
preprocess
# Kui kasutate mitut tüüpi realm’e, soovite ilmselt
# määrata "ignore_null = yes" kõigil neist.
# Vastasel juhul, kui esimene realm'i stiil ei sobi,
# teisi stiile ei kontrollita.
#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
# Loe 'users' faili, et teada saada, milliseid eriseadeid, mis tuleks rakendada,
# teatud kasutajate jaoks (vt '/etc/freeradius/modules/files')
files
# lubab autentimise aeguda (vt '/etc/freeradius/modules/expiration')
expiration
# lubab määrata kehtiva teenuseaega (vt '/etc/freeradius/modules/logintime')
logintime
# Meil pole radius_shortname_map!
pap
}
# Siin kutsutakse linotp perl modul edasiseks töötlemiseks
authenticate {
perl
}Seejärel teeme sümboolse lingi:
# ln -s ../sites-available/linotp /etc/freeradius/sites-enabledIsiklikult hävitan ma vaikimisi Radius'i veebisaidid, kuid kui need on teile vajalikud, võite kas nende konfiguratsiooni muuta või need välja lülitada.
# rm /etc/freeradius/sites-enabled/default# rm /etc/freeradius/sites-enabled/inner-tunnel# service freeradius reload Nüüd naaseme veebiliidese juurde ja vaatame seda natuke lähemalt:
Ülanurgas klikime LinOTP Config -> UserIdResolvers -> New
Valime, mida soovime: LDAP (AD win, LDAP samba), SQL või süsteemi kohalikud kasutajad Flatfile.
Täidame vajalikud väljad.
Seejärel loome REALMS:
Ülanurgas klikime LinOTP Config -> Realms -> New.
ja anname oma REALMSile nime ning klikime eelnevalt loodud UserIdResolvers'ile.
Kuna kõik need andmed on freeRadius'e jaoks vajalikud failis /etc/linotp2/rlm_perl.ini, nagu ma varem kirjutasin, siis kui te pole seda toona muutnud, siis tehke seda nüüd.
Kogu server on seadistatud.
Täiendamine:
LinOTP seadistamine Debian 9-s:
Paigaldamine:
# 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(vaikimisi ei paku Debian 9 mysql (mariaDB) root-parooli seadistamist, kuigi võite selle ka tühjaks jätta, kuid kui loete uudiseid, toob see tihti kaasa "epic fail'ide", seega seadistame selle ikka)
# mysql -u root -puse mysql;UPDATE user SET Password = PASSWORD('siin_parool') 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/linotpSisestame koodi (saadud JuriMilt, tänud talle!):
server linotp {
kuuleb {
ipaddr = *
port = 1812
tüüp = auth
}
kuuleb {
ipaddr = *
port = 1813
tüüp = acct
}
autoriseerimine {
eelprotsess
uuenda {
&control:Auth-Type := Perl
}
}
autentimine {
Auth-Type Perl {
perl
}
}
arvestus {
unix
}
}
Muudame /etc/freeradius/3.0/mods-enabled/perl
perl {
failinimi = /usr/share/linotp/radius_linotp.pm
func_authenticate = authenticate
func_authorize = authorize
}
Kahjuks Debiani 9-s ei installita raamatukogu radius_linotp.pm repode kaudu, seega võtame selle GitHubist.
# 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.pmNüüd parandame /etc/freeradius/3.0/clients.conf
client servers {
ipaddr = 192.168.188.0/24
salajane = teieparool
}
Nüüd parandame nano /etc/linotp2/rlm_perl.ini
Sisestame sinna sama koodi, mis debian 8 puhul (eespool kirjeldatud)
teoreetiliselt on kõik (veel pole testitud)
Jätan alla mitmeid linke süsteemide seadistamiseks, mida kõige sagedamini tuleb kaitsta kaheastmelise autentimisega:
Kaheastmelise autentimise seadistamine
(seal kasutatakse teistsugust tokenite genereerimise serverit, kuid ASA seadistused on samad).
Seadistamine (ka seal kasutatakse LinOTP) — aitäh autorile. Seal on ka huvitavaid asju LiOTP poliitikate seadistamise kohta.
Paljusid CMS-e toetavad samuti kaheastmelist autentimist (WordPressi jaoks on LinOTP-l isegi oma spetsiaalne moodul ), näiteks, kui soovite oma ettevõtte veebilehel luua kaitstud osa ettevõtte töötajatele.
OLULINE FAKT! ÄRGE märkige ruutu „Google autentifikaator” Google'i autentifikaatori kasutamiseks! QR-kood ei loe sel juhul ... (veider fakt)
Artikli kirjutamiseks kasutati teavet järgmistest artiklitest:
Tänan autoreid.
Allikas: habr.com
