
Danas želim podijeliti kako podesiti server za dvofaktorsku autentifikaciju, za zaštitu korporativne mreže, web stranica, servisa, ssh. Na serveru će raditi kombinacija: LinOTP + FreeRadius.
Zašto nam to treba?
To je u potpunosti besplatno, praktično rješenje unutar vlastite mreže, nezavisno od vanjskih pružatelja usluga.
Ova usluga je vrlo praktična, prilično pregledna, za razliku od drugih open source proizvoda, a također podržava ogroman broj funkcija i politika (Na primjer, login+password+(PIN+OTPToken)). Integrira se s uslugama za slanje SMS poruka putem API-ja (LinOTP Config->Provider Config->SMS Provider), generira kodove za mobilne aplikacije poput Google Autenticatora i mnogo više. Mislim da je lakše korišten nego usluga o kojoj se razmatra. .
Ovaj server sjajno radi s Cisco ASA, OpenVPN serverom, Apache2, i uopće sa svime što podržava autentifikaciju putem RADIUS servera (Na primjer, za SSH u data centru).
Potrebno:
1) Debian 8 (jessie) — Obavezno! (probna instalacija na Debian 9 opisana je na kraju članka)
Početak:
Instaliramo Debian 8.
Dodajemo LinOTP repozitorij:
# echo 'deb http://www.linotp.org/apt/debian jessie linotp' > /etc/apt/sources.list.d/linotp.listDodajemo ključeve:
# gpg --search-keys 913DFF12F86258E5Ponekad, prilikom "čiste" instalacije, nakon izvršenja ove naredbe, Debian prikazuje:
gpg: napravljen direktorij `/root/.gnupg'
gpg: napravljen novi datoteka s postavkama `/root/.gnupg/gpg.conf'
gpg: PAŽNJA: parametri u `/root/.gnupg/gpg.conf' nisu još aktivni pri ovom pokretanju
gpg: napravljena tablica ključeva `/root/.gnupg/secring.gpg'
gpg: napravljena tablica ključeva `/root/.gnupg/pubring.gpg'
gpg: serveri ključeva nisu postavljeni (koristite --keyserver)
gpg: greška pri pretraživanju na serveru ključeva: loš URI
To je osnovna konfiguracija gnupg. Nema veze. Samo ponovo izvršite naredbu.
Na pitanje Debiana:
gpg: pretraživanje "913DFF12F86258E5" na hkp serveru keys.gnupg.net
(1) LSE LinOTP2 Packaging
2048 bit RSA ključ F86258E5, napravljen: 2010-05-10
Ključevi 1-1 od 1 za "913DFF12F86258E5". Unesite brojeve, N) Sljedeći ili Q) Izlaz>Odgovaramo: 1
Sljedeće:
# gpg --export 913DFF12F86258E5 | apt-key add -# apt-get updateInstaliramo mysql. U teoriji, može se koristiti drugi sql server, ali ću za jednostavnost koristiti njega, kao preporučeni za LinOTP.
(dodatne informacije, uključujući rekonstrukciju baze LinOTP, možete pronaći u službenoj dokumentaciji) . Tamo možete pronaći naredbu: dpkg-reconfigure linotp za promjenu parametara ako ste već instalirali mysql).
# apt-get install mysql-server# apt-get update (još jednom provjeriti ažuriranja ne bi škodilo)
Instaliramo LinOTP i dodatne module:
# apt-get install linotp Odgovaramo na pitanja instalatera:
Koristiti Apache2: da
Smislite lozinku za admin Linotp: „VašaLozinka“
Generirati samo-potpisani certifikat?: da
Koristiti MySQL?: da
Gdje se nalazi baza podataka: localhost
Kreiramo bazu LinOTP (ime baze) na poslužitelju: LinOTP2
Kreiramo posebnog korisnika za bazu podataka: LinOTP2
Postavljamo lozinku korisniku: «VašaLozinka»
Želite li kreirati bazu odmah? (nešto poput “Jeste li sigurni da želite ...”): da
Unosimo root lozinku za MySQL koju smo stvorili prilikom instalacije: «VašaLozinka»
Gotovo.
(opcionalno, može se i ne staviti)
# apt-get install linotp-adminclient-cli (opcionalno, može se i ne staviti)
# apt-get install libpam-linotp I tako naš web sučelje Linotp sada je dostupno na adresi:
"<b>https<\/b>: \\\/\\\/IP_poslu\u017eitelja\\\/manage"O postavkama u web sučelju ću govoriti malo kasnije.
Sada, najvažnije! Pokrećemo FreeRadius i povezujemo ga s Linotp.
Instaliramo FreeRadius i modul za rad s LinOTP
# apt-get install freeradius linotp-freeradius-perlbackupujemo konfiguracije klijenta i korisnika radijusa.
# mv /etc/freeradius/clients.conf /etc/freeradius/clients.old# mv /etc/freeradius/users /etc/freeradius/users.oldKreiramo praznu datoteku klijenta:
# touch /etc/freeradius/clients.confUređujemo našu novu datoteku konfiguracije (backup konfiguracija može se koristiti kao primjer)
# nano /etc/freeradius/clients.confclient 192.168.188.0/24 {
secret = passwd # lozinka za povezivanje klijenata
}Zatim kreiramo datoteku korisnika:
# touch /etc/freeradius/usersUređujemo datoteku, govoreći radijusu da ćemo koristiti perl za autentifikaciju.
# nano /etc/freeradius/usersDEFAULT Auth-type := perlZatim uređujemo datoteku /etc/freeradius/modules/perl
# nano /etc/freeradius/modules/perlMoramo navesti put do perl skripte linotp u parametru module:
Perl { .......
.........
module = /usr/lib/linotp/radius_linotp.pm …..
Zatim kreiramo datoteku u kojoj navodimo iz kojeg (domena, baze ili datoteke) uzimamo podatke.
# touch /etc/linotp2/rlm_perl.ini# nano /etc/linotp2/rlm_perl.iniURL=https://IP_vašeg_LinOTP_poslužitelja(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=FalseOvdje ću se zadržati malo detaljnije, budući da je to važno:
Potpuno opis datoteke s komentarima:
#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
Zatim ćemo kreirati datoteku /etc/freeradius/sites-available/linotp
# touch /etc/freeradius/sites-available/linotp# nano /etc/freeradius/sites-available/linotpI kopirati ćemo u nju konfiguraciju (ne treba ništa mijenjati):
authorize {
#normalizes malformed client request before handed on to other modules (see '/etc/freeradius/modules/preprocess')
preprocess
# Ako koristite više vrsta realmova, vjerojatno
# želite postaviti "ignore_null = yes" za sve njih.
# Inače, kada prvi stil realm ne odgovara,
# ostali stilovi se neće provjeriti.
#omogućuje listu realmova (see '/etc/freeradius/modules/realm')
IPASS
#razumije nešto poput USER@REALM i može raspoznati komponente odvojeno (see '/etc/freeradius/modules/realm')
suffix
#razumije USERREALM i može raspoznati komponente odvojeno (see '/etc/freeradius/modules/realm')
ntdomain
# Pročitajte 'users' datoteku da biste saznali o posebnoj konfiguraciji koju treba primijeniti za
# određene korisnike (see '/etc/freeradius/modules/files')
files
# omogućava ugovor za autentifikaciju (see '/etc/freeradius/modules/expiration')
expiration
# omogućava definiranje valjanih vremenskih usluga (see '/etc/freeradius/modules/logintime')
logintime
# Nemamo radius_shortname_map!
pap
}
#ovdje se linotp perl modul poziva za daljnju obradu
authenticate {
perl
}Zatim ćemo napraviti simbolički link:
# ln -s ../sites-available/linotp /etc/freeradius/sites-enabledOsobno uklanjam zadane radius web stranice, ali ako su vam potrebne, možete ili urediti njihovu konfiguraciju ili ih isključiti.
# rm /etc/freeradius/sites-enabled/default# rm /etc/freeradius/sites-enabled/inner-tunnel# service freeradius reload Sada se vraćamo na web sučelje i razmotrit ćemo ga malo detaljnije:
U gornjem desnom kutu kliknite na LinOTP Config -> UserIdResolvers -> New
Biramo što želimo: LDAP (AD win, LDAP samba), ili SQL, ili lokalne korisnike sustava Flatfile.
Ispunjavamo potrebna polja.
Zatim kreiramo REALMS:
U gornjem desnom kutu kliknite na LinOTP Config -> Realms -> New.
i dajemo ime našem REALMS-u, kao i kliknemo na prethodno kreirani UserIdResolvers.
Sve ove podatke freeRadiusu trebaju u datoteci /etc/linotp2/rlm_perl.ini, o čemu sam pisao ranije, pa ako niste uredili tada, učinite to sada.
Svi serveri su postavljeni.
Dodatak:
Postavljanje LinOTP na Debian 9:
Instalacija:
# 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(po zadano, u Debianu 9 mysql (mariaDB) ne nudi postavljanje root lozinke, naravno, možete je ostaviti praznom, ali ako čitate vijesti, to često dovodi do "epic faila", pa ćemo je ipak postaviti)
# mysql -u root -puse mysql;UPDATE user SET Password = PASSWORD('tu_lozinku') 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/linotpUbacujemo kod (poslao JuriM, hvala mu!):
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
}
}
Uredite /etc/freeradius/3.0/mods-enabled/perl
perl {
filename = /usr/share/linotp/radius_linotp.pm
func_authenticate = authenticate
func_authorize = authorize
}
Nažalost u debian 9 biblioteka radius_linotp.pm se ne instalira iz repozitorija, pa ćemo je uzeti s githuba.
# 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.pmsada ćemo ispraviti /etc/freeradius/3.0/clients.conf
client servers {
ipaddr = 192.168.188.0/24
secret = vašalozinka
}
sada ćemo ispraviti nano /etc/linotp2/rlm_perl.ini
Ubacite tamo isti kod kao pri instalaciji na debian 8 (opisano ranije)
teoretski, to je to. (još nije testirano)
Ostavit ću nekoliko poveznica o postavljanju sustava koje se najčešće trebaju zaštititi dvofaktorskom autentifikacijom:
Postavljanje dvofaktorske autentifikacije u
(tamo se koristi drugi server za generiranje tokena, ali postavke same ASA su iste).
Podešavanje (tamo se također koristi LinOTP) — hvala autoru. Tamo se također mogu pronaći zanimljive stvari o postavljanju politika LiOTP.
Također, cms mnogih web stranica podržavaju dvofaktorsku autentifikaciju (za WordPress LinOTP čak ima svoj specijalni modul na ), na primjer, ako želite na svom korporativnom web mjestu napraviti zaštićeni odjeljak za zaposlenike kompanije.
VAŽNA ČINJENICA! NE stavljajte kvačicu za „Google autenteficator“ ako koristite Google autentifikator! QR kod se tada ne može pročitati… (čudna činjenica)
Za pisanje članka korištene su informacije iz sljedećih članaka:
Hvala autorima.
Izvor: habr.com
