Gaur bi faktoreko autentifikazio zerbitzari bat nola konfiguratu partekatu nahi dut sare korporatiboa, guneak, zerbitzuak, ssh babesteko. Zerbitzariak konbinazio hau exekutatuko du: LinOTP + FreeRadius.
Zergatik behar dugu?
Hau guztiz doako irtenbide erosoa da, bere sarearen barruan, hirugarren hornitzaileengandik independentea.
Zerbitzu hau oso erosoa da, nahiko bisuala, kode irekiko beste produktu batzuek ez bezala, eta funtzio eta politika ugari ere onartzen ditu (Adibidez, saioa hasteko+pasahitza+(PIN+OTPToken)). APIaren bidez, sms bidaltzeko zerbitzuekin integratzen da (LinOTP Config->Provider Config->SMS Provider), mugikorretarako aplikazioetarako kodeak sortzen ditu, hala nola Google Authentificator eta askoz gehiago. Nik uste dut erosoagoa dela eztabaidatutako zerbitzua baino
Zerbitzari honek primeran funtzionatzen du Cisco ASA, OpenVPN zerbitzariarekin, Apache2rekin eta, oro har, RADIUS zerbitzari baten bidez autentifikazioa onartzen duen ia guztiarekin (Adibidez, datu-zentroan SSHrako).
Beharrezkoa da:
1) Debian 8 (jessie) - Beharrezko! (Debian 9-en probako instalazioa artikuluaren amaieran deskribatzen da)
Hasiera:
Debian 8 instalatzen.
Gehitu LinOTP biltegia:
# echo 'deb http://www.linotp.org/apt/debian jessie linotp' > /etc/apt/sources.list.d/linotp.list
Gakoak gehitzea:
# gpg --search-keys 913DFF12F86258E5
Batzuetan, instalazio "garbi" batean, komando hau exekutatu ondoren, Debian-ek bistaratzen du:
gpg: ΡΠΎΠ·Π΄Π°Π½ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ `/root/.gnupg'
gpg: ΡΠΎΠ·Π΄Π°Π½ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Π½Π°ΡΡΡΠΎΠ΅ΠΊ `/root/.gnupg/gpg.conf'
gpg: ΠΠΠΠΠΠΠΠ: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² `/root/.gnupg/gpg.conf' Π΅ΡΠ΅ Π½Π΅ Π°ΠΊΡΠΈΠ²Π½Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅
gpg: ΡΠΎΠ·Π΄Π°Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° ΠΊΠ»ΡΡΠ΅ΠΉ `/root/.gnupg/secring.gpg'
gpg: ΡΠΎΠ·Π΄Π°Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° ΠΊΠ»ΡΡΠ΅ΠΉ `/root/.gnupg/pubring.gpg'
gpg: Π½Π΅ Π·Π°Π΄Π°Π½Ρ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ --keyserver)
gpg: ΡΠ±ΠΎΠΉ ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ: ΠΏΠ»ΠΎΡ
ΠΎΠΉ URI
Hau da gnupg hasierako konfigurazioa. Ondo da. Exekutatu komandoa berriro.
Debian-en galderara:
gpg: ΠΏΠΎΠΈΡΠΊ "913DFF12F86258E5" Π½Π° hkp ΡΠ΅ΡΠ²Π΅ΡΠ΅ keys.gnupg.net
(1) LSE LinOTP2 Packaging <[email protected]>
2048 bit RSA key F86258E5, ΡΠΎΠ·Π΄Π°Π½: 2010-05-10
Keys 1-1 of 1 for "913DFF12F86258E5". ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠΈΡΠ»Π°, N) Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΈΠ»ΠΈ Q) ΠΡΡ
ΠΎΠ΄>
Erantzuten dugu: 1
Hurrengoa:
# gpg --export 913DFF12F86258E5 | apt-key add -
# apt-get update
Instalatu mysql. Teorian, beste sql zerbitzari bat erabil dezakezu, baina sinpletasunerako LinOTPrako gomendatutako moduan erabiliko dut.
(informazio gehigarria, LinOTP datu-basea birkonfiguratzea barne, dokumentazio ofizialean aurki daiteke
# apt-get install mysql-server
# apt-get update
(Ez litzateke kaltetuko eguneraketak berriro egiaztatzea)
Instalatu LinOTP eta modulu osagarriak:
# apt-get install linotp
Instalatzailearen galderei erantzuten diegu:
Erabili Apache2: bai
Sortu pasahitza administratzailearentzat Linotp: "Zure pasahitza"
Norberak sinatutako ziurtagiria sortu?: bai
Erabili MySQL?: bai
Non dago datu-basea: localhost
Sortu LinOTP datu-base bat (oinarrizko izena) zerbitzarian: LinOTP2
Sortu datu-baserako beste erabiltzaile bat: LinOTP2
Erabiltzaileari pasahitz bat ezarri diogu: "Zure pasahitza"
Sortu behar al dut datu-base bat orain? (Β«Ziur nahi duzula...Β» bezalako zerbait): bai
Sartu instalatzean sortu zenuen MySQL erroko pasahitza: "YourPassword"
Done.
(aukerakoa, ez duzu instalatu beharrik)
# apt-get install linotp-adminclient-cli
(aukerakoa, ez duzu instalatu beharrik)
# apt-get install libpam-linotp
Beraz, gure Linotp web interfazea eskuragarri dago hemen:
"<b>https</b>: //IP_ΡΠ΅ΡΠ²Π΅ΡΠ°/manage"
Web interfazeko ezarpenei buruz hitz egingo dut pixka bat geroago.
Orain, garrantzitsuena! FreeRadius planteatzen dugu eta Linotp-ekin lotzen dugu.
Instalatu FreeRadius eta LinOTP-rekin lan egiteko modulua
# apt-get install freeradius linotp-freeradius-perl
babeskopia bezeroaren eta Erabiltzaileen erradioaren konfigurazioa.
# mv /etc/freeradius/clients.conf /etc/freeradius/clients.old
# mv /etc/freeradius/users /etc/freeradius/users.old
Sortu bezero fitxategi huts bat:
# touch /etc/freeradius/clients.conf
Gure konfigurazio-fitxategi berria editatzen (babeskopia egindako konfigurazioa adibide gisa erabil daiteke)
# nano /etc/freeradius/clients.conf
client 192.168.188.0/24 {
secret = passwd # ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
}
Ondoren, sortu erabiltzaile fitxategi bat:
# touch /etc/freeradius/users
Fitxategia editatzen dugu, erradioari esanez perl erabiliko dugula autentifikaziorako.
# nano /etc/freeradius/users
DEFAULT Auth-type := perl
Ondoren, editatu /etc/freeradius/modules/perl fitxategia
# nano /etc/freeradius/modules/perl
Moduluaren parametroan perl linotp script-erako bidea zehaztu behar dugu:
Perl { .......
.........
<source lang="bash">module = /usr/lib/linotp/radius_linotp.pm
... ..
Ondoren, fitxategi bat sortuko dugu eta bertan esango dugu zein (domeinua, datu-basea edo fitxategia) hartu datuak.
# touch /etc/linotp2/rlm_perl.ini
# nano /etc/linotp2/rlm_perl.ini
URL=https://IP_Π²Π°ΡΠ΅Π³ΠΎ_LinOTP_ΡΠ΅ΡΠ²Π΅ΡΠ°(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=False
Hemen xehetasun pixka bat gehiago sartuko dut, garrantzitsua delako:
Fitxategiaren deskribapen osoa iruzkinekin:
linOTP zerbitzariaren #IP (gure LinOTP zerbitzariaren IP helbidea)
URL=https://172.17.14.103/validate/simplecheck
#LinOTP web interfazean sortuko dugun gure eremua.)
REALM=berriro armatu1
#LinOTP web-muzoan sortzen den erabiltzaile-taldearen izena.
RESCONF=fitxategi_laua
#aukerakoa: iruzkin ezazu dena ondo funtzionatzen duela dirudi
Araztu=Egia
#aukerakoa: erabili hau, autosinatutako ziurtagiriak badituzu, bestela iruzkin ezazu (SSL gure ziurtagiria sortzen badugu eta egiaztatu nahi badugu)
SSL_CHECK=Gezurra
Ondoren, sortu /etc/freeradius/sites-available/linotp fitxategia
# touch /etc/freeradius/sites-available/linotp
# nano /etc/freeradius/sites-available/linotp
Eta kopiatu konfigurazioa bertan (ez da ezer editatu behar):
authorize {
#normalizes maleformed client request before handed on to other modules (see '/etc/freeradius/modules/preprocess')
preprocess
# If you are using multiple kinds of realms, you probably
# want to set "ignore_null = yes" for all of them.
# Otherwise, when the first style of realm doesn't match,
# the other styles won't be checked.
#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
# Read the 'users' file to learn about special configuration which should be applied for
# certain users (see '/etc/freeradius/modules/files')
files
# allows to let authentification to expire (see '/etc/freeradius/modules/expiration')
expiration
# allows to define valid service-times (see '/etc/freeradius/modules/logintime')
logintime
# We got no radius_shortname_map!
pap
}
#here the linotp perl module is called for further processing
authenticate {
perl
}
Hurrengo SIM esteka bat sortuko dugu:
# ln -s ../sites-available/linotp /etc/freeradius/sites-enabled
Pertsonalki, Radius gune lehenetsiak hiltzen ditut, baina behar badituzu, haien konfigurazioa edita dezakezu edo desgaitu.
# rm /etc/freeradius/sites-enabled/default
# rm /etc/freeradius/sites-enabled/inner-tunnel
# service freeradius reload
Orain itzul gaitezen web-aurpegira eta ikus gaitezen xehetasun apur bat gehiagorekin:
Goiko eskuineko izkinan egin klik LinOTP Config -> UserIdResolvers -> Berria
Guk nahi duguna aukeratzen dugu: LDAP (AD win, LDAP samba), edo SQL, edo Flatfile sistemaren erabiltzaile lokalak.
Bete beharrezko eremuak.
Ondoren, REALMS sortuko dugu:
Goiko eskuineko izkinan, egin klik LinOTP Config -> Realms -> Berria.
eta eman izena gure REALMSei, eta egin klik ere aurretik sortutako UserIdResolvers gainean.
FreeRadius-ek datu hauek guztiak /etc/linotp2/rlm_perl.ini fitxategian behar ditu, goian idatzi dudan bezala, beraz, orduan editatu ez bazenuen, egin orain.
Zerbitzaria dena konfiguratuta dago.
osatzeko:
LinOTP konfiguratzea Debian 9-n:
Giroa:
# 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
(lehenespenez, Debian 9-n mysql-ek (mariaDB) ez du eskaintzen root pasahitza ezartzea, noski hutsik utz dezakezu, baina albistea irakurtzen baduzu, horrek askotan "epic hutsegitea" dakar, beraz, ezarriko dugu hala ere)
# mysql -u root -p
use mysql;
UPDATE user SET Password = PASSWORD('ΡΡΡ_ΠΏΠ°ΡΠΎΠ»Ρ') 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
Itsatsi kodea (JuriM-ek bidalia, eskerrik asko horregatik!):
zerbitzari linotp {
entzun {
ipaddr = *
portua = 1812
mota=autentifikazioa
}
entzun {
ipaddr = *
portua = 1813
mota = akt
}
baimendu {
aurreprozesua
eguneratu {
&control:Auth-Type := Perl
}
}
autentifikatu {
Autentifikazio mota Perl {
perl
}
}
kontabilitatea {
unix
}
}
Editatu /etc/freeradius/3.0/mods-enabled/perl
perl {
fitxategi-izena = /usr/share/linotp/radius_linotp.pm
func_authenticate = autentifikatu
func_authorize = baimendu
}
Zoritxarrez, Debian 9-n radius_linotp.pm liburutegia ez dago biltegietatik instalatuta, beraz github-etik hartuko dugu.
# 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
orain edita dezagun /etc/freeradius/3.0/clients.conf
bezero zerbitzariak {
ipaddr = 192.168.188.0/24
sekretua = zure pasahitza
}
Orain zuzen dezagun nano /etc/linotp2/rlm_perl.ini
Kode bera itsatsi dugu debian 8-n instalatzean (goian deskribatua)
hori guztia ideiaren arabera. (Oraindik probatu gabe)
Gehienetan bi faktoreko autentifikazioarekin babestu behar diren sistemak konfiguratzeko esteka batzuk utziko ditut jarraian:
Bi faktoreko autentifikazioa konfiguratzea
doikuntza
Gainera, gune askotako cms-ek bi faktoreko autentifikazioa onartzen dute (WordPress-entzat, LinOTP-k bere modulu berezia ere badu.
DATU GARRANTZITSUA! EZ markatu "Google autentificator" laukia Google Authenticator erabiltzeko! QR kodea ez da irakurtzen orduan... (gertaera bitxia)
Artikulu hau idazteko, artikulu hauetako informazioa erabili da:
Eskerrik asko egileei.
Iturria: www.habr.com