Kaheastmelise autentimise server LinOTP

Kaheastmelise autentimise server LinOTP

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. artiklis.

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.list

Lisame võtmed:

# gpg --search-keys 913DFF12F86258E5

Mõ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 update

Installime 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 lingil. 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-perl

varundame kliendi ja kasutajate konfigureerimise failid.

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

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

Loome tühja kliendi faili:

# touch /etc/freeradius/clients.conf

Muudame meie uut konfigureerimise faili (varundatud konfi saab kasutada näitena)

# nano /etc/freeradius/clients.conf

client 192.168.188.0/24 {
secret  = passwd # parool klientide ühendamiseks
}

Seejärel loome kasutajate faili:

# touch /etc/freeradius/users

Muudame faili, öeldes Radiusile, et kasutame autentimiseks Perl'i.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Seejärel muudame faili /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Peame 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.ini

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

Siin 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/linotp

Ja 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-enabled

Isiklikult 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 -p
use 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/linotp

Sisestame 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.pm

Nüü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 Apache2

Seadistamine Cisco ASA-ga(seal kasutatakse teistsugust tokenite genereerimise serverit, kuid ASA seadistused on samad).

VPN kaheastmelise autentimisega

Seadistamine kaheastmelise autentimisega ssh (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 github), 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:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Tänan autoreid.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster