LinOTP kahefaktorilise autentimise server

LinOTP kahefaktorilise autentimise server

Täna jagan, kuidas seadistada kahefaktorilise autentimise serverit ettevõtte võrgu, veebisaitide, teenuste, SSH kaitsmiseks. Serveris töötab kombinatsioon: LinOTP + FreeRadius.

Miks me seda vajame?
See on täiesti tasuta, mugav lahendus, mis töötab teie omas võrgus, ilma kolmandate osapoolte teenustest sõltumata.

See teenus on väga mugav, selgelt arusaadav, erinevalt teistest avatud lähtekoodiga toodetest, ja toetab suurt hulka funktsioone ja poliitikaid (näiteks login + password + (PIN + OTPToken)). Seda on võimalik API kaudu integreerida SMS-teenustega (LinOTP Config->Provider Config->SMS Provider), genereerib koode mobiilirakendustele nagu Google Autentificator ja palju muud. Arvan, et see on mugavam kui teenus, mida arutatakse artiklis.

See server töötab suurepäraselt Cisco ASA, OpenVPN serveriga, Apache2-ga, ning praktiselt kõigega, mis toetab RADIUS autentimist (näiteks SSH serverites).

Nõutav:

1) Debian 8 (jessie) — Kohustuslik! (katsepaigaldus Debian 9-le on kirjas artikli lõpus)

Algus:

Paigaldame Debian 8.

Lisame LinOTP repositooriumi:

# 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 võib „puhta” paigalduse korral, pärast selle käsu täitmist, Debian anda:

gpg: loodud kataloog `/root/.gnupg'
gpg: loodud uus seadistusfail `/root/.gnupg/gpg.conf'
gpg: KASUTUSJUHEND: parameetrid `/root/.gnupg/gpg.conf' ei ole selle käivituse ajal veel aktiivsed
gpg: loodud võtmete tabel `/root/.gnupg/secring.gpg'
gpg: loodud võtmete tabel `/root/.gnupg/pubring.gpg'
gpg: võtme serverid ei ole määratud (kasutage --keyserver)
gpg: viga võtme serverilt otsimisel: vale URI

See on gnupg esialgne seadistamine. Pole hullu. Lihtsalt käivitage käsk uuesti.
Debiana küsimusele:

gpg: otsimine "913DFF12F86258E5" hkp serveris keys.gnupg.net
(1)	LSE LinOTP2 Paketihaldus <linotp2@lsexperts.de>
	  2048 bit RSA võtme F86258E5, loodud: 2010-05-10
Võtmed 1-1 kokku "913DFF12F86258E5".  Sisestage numbrid, N) Järgmine või Q) Välja>

Vastame: 1

Edasi:

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

# apt-get update

Installeerime mysql. Teoreetiliselt on võimalik kasutada teist sql serverit, kuid ma kasutan selle lihtsuse huvides seda, kuna see on LinOTP jaoks soovitatud.

(täpse teabe, sealhulgas LinOTP andmebaasi konfigureerimise kohta leiate ametlikust dokumentatsioonist lingi kaudu. Seal on ka käsk: dpkg-reconfigure linotp, et muuta seadeid, kui olete juba mysql'i installinud).

# apt-get install mysql-server

# apt-get update

(veel kord uuenduste kontrollimine ei tee paha)
Installeerime LinOTP ja lisamoodulid:

# apt-get install linotp

Vastame installija küsimustele:
Kasutada Apache2: jah
Mõelge admin Linotsi parool: „TeieParool“
Genereeri iseallkirjastatud sertifikaat?: jah
Kas kasutada MySQL?: jah
Kus on andmebaas: localhost
Loome LinOTP nimega andmebaasi serveris: LinOTP2
Loome andmebaasi jaoks eraldi kasutaja: LinOTP2
Määrame kasutajale parooli: „TeieParool”
Kas luua andmebaas kohe? (midagi sellist nagu „Kas olete kindel, et soovite ...”): jah
Sisestame MySQL root parooli, mille lõime selle installimisel: „TeieParool”
Valmis.

(valikuline, võib ka mitte panna)

# apt-get install linotp-adminclient-cli 

(valikuline, võib ka mitte panna)

# apt-get install libpam-linotp  

Nüüd on meie veebiliides Linotp saadaval aadressil:

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

Räägin veebiliidese seadistustest natuke hiljem.

Nüüd, kõige tähtsam! Käivitame FreeRadius ja seome selle LinOTP-iga.

Paigaldame FreeRadius ja LinOTP mooduli

# apt-get install freeradius linotp-freeradius-perl

teeme kolme konfi backup klientide ja kasutajate suhtes.

# 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

Redigeerime meie uut konfi faili (backup konfi võib kasutada näitena)

# nano /etc/freeradius/clients.conf

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

Seejärel loome faili users:

# touch /etc/freeradius/users

Redigeerime faili, öeldes radius-le, et kasutame autentimiseks perl.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

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

# nano /etc/freeradius/modules/perl

Peame määrama tee perl skriptile linotp parameetris module:

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

…..
Seejärel loome faili, milles määrame, kust (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_serverist(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=False

Siin peatun veidi lähemalt, kuna see on oluline:

Faili täielik kirjeldus 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 konfiguratsiooni (mitte midagi ei pea muutma):

authorize {
# normaliseerib vale vormindusega kliendi päringu enne edastamist teistele moodulitele (vt '/etc/freeradius/modules/preprocess')
preprocess
# Kui kasutate mitmeid realm'e, soovite tõenäoliselt
# seada "ignore_null = yes" kõigile neist.
# Vastasel juhul, kui esimese tüübi realm ei ühti,
# teisi stiile ei kontrollita.
# lubab realmide loendi (vt '/etc/freeradius/modules/realm')
IPASS
# mõistab midagi nagu USER@REALM ja suudab komponente eristada (vt '/etc/freeradius/modules/realm')
suffix
# mõistab USERREALM'i ja suudab komponente eristada (vt '/etc/freeradius/modules/realm')
ntdomain
# Loe 'users' faili, et teada saada erikonfiguratsioonist, mis tuleks rakendada
# teatud kasutajatele (vt '/etc/freeradius/modules/files')
files
# võimaldab autentimise aeguda (vt '/etc/freeradius/modules/expiration')
expiration
# võimaldab määrata kehtiva teenuse ajad (vt '/etc/freeradius/modules/logintime')
logintime
# Meil pole radius_shortname_map'i!
pap
}
# siin kutsutakse linotp perl moodulit edasiseks töötlemiseks
authenticate {
perl
}

Seejärel teeme sümboolse lingi:

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

Isiklikult hävitan ma vaike radiaalsed saidid, kuid kui need on teile vajalikud, siis võite kas nende konfiguratsiooni redigeerida 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 naeme veebiliidese juurde ja vaatame seda veidi lähemalt:
Paremas ülanurgas vajutame LinOTP Config -> UserIdResolvers -> Uus
Valime, mida soovime: LDAP (AD win, LDAP samba), või SQL, või süsteemi kohalikud kasutajad Flatfile.

Täidame vajalikud väljad.

Seejärel loome REALMS'i:
Paremas ülanurgas vajutame LinOTP Config -> Realms -> Uus.
ja anname oma REALMS'ile nime ning klõpsame varem loodud UserIdResolvers'il.

Kõik need andmed on freeRadius jaoks failis /etc/linotp2/rlm_perl.ini, millest ma eelnevalt rääkisin, seega, kui te ei ole seda varem redigeerinud, siis tehke seda nüüd.

Kogu server on seadistatud.

Täiendamine:

LinOTP seadistamine Debian 9-l:

Installeerimine:

# 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, Debian 9-s ei paku mysql (mariaDB) root-parooli seadistamist, loomulikult võite selle jätta ka tühjaks, kuid kui te loete uudiseid, siis viib see tihti "epic failideni", seega seadistame selle siiski)

# mysql -u root -p
kasuta mysql;
UUENDA kasutajat 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

Kleepime koodi (saadetud JuriM'ilt, mille eest suur tänu!):

server linotp {
kuulame {
ipaddr = *
port = 1812
tüüp = auth
}
kuulame {
ipaddr = *
port = 1813
tüüp = acct
}
autentimine {
eeltöötlus
uuenda {
&control:Auth-Type := Perl
}
}
autentimine {
Auth-Type Perl {
perl
}
}
arvestamine {
unix
}
}

Muudame /etc/freeradius/3.0/mods-enabled/perl

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

Kahjuks ei ole Debian 9-le võimalik radius_linotp.pm teeki paigaldada repositooriumidest, 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 muudame /etc/freeradius/3.0/clients.conf

client servers {
ipaddr = 192.168.188.0/24
secret = teieparool
}

Nüüd muudame nano /etc/linotp2/rlm_perl.ini

Kopeerime sinna sama koodi, mis oli Debian 8 puhul (üleval kirjas)

Teoreetiliselt on kõik valmis. (veel testimata)

Jätan siia alla mõned lingid süsteemide seadistamiseks, mis vajavad tihti kahefaasilist autentimist:
Kahefaasilise autentimise seadistamine Apache2

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

VPN kahefaasilise autentimisega

Seadistamine Kahefaasiline autentimine SSH-s (seal kasutatakse samuti LinOTP) — tänan autorit. Sealt leiate ka huvitavaid asju LiOTP poliitikate seadistamise kohta.

Samuti toetavad paljude veebilehtede CMS-id kahefaasilist autentimist (WordPressile on LinOTP-l isegi oma spetsiaalne moodul github), näiteks, kui soovite oma ettevõtte veebilehe jaoks luua kaitstud osa töötajatele.
OLULINE FAKT! ÄRGE valige „Google autenteficator”, kui soovite kasutada Google'i autentifikaatorit! QR-kood ei loeta sel juhul… (veider fakt)

Artikli kirjutamisel kasutati järgmiste artiklite teavet:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Aitäh autoritele.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster