Seva ya uthibitishaji wa vipengele viwili vya LinOTP

Seva ya uthibitishaji wa vipengele viwili vya LinOTP

Leo nataka kushiriki jinsi ya kusanidi seva ya uthibitishaji wa sababu mbili ili kulinda mtandao wa ushirika, tovuti, huduma, ssh. Seva itaendesha mchanganyiko ufuatao: LinOTP + FreeRadius.

Kwa nini tunaihitaji?
Hili ni suluhisho la bure kabisa, linalofaa, ndani ya mtandao wake, huru na watoa huduma wa tatu.

Huduma hii ni rahisi sana, inayoonekana kabisa, tofauti na bidhaa zingine za chanzo wazi, na pia inasaidia idadi kubwa ya kazi na sera (Kwa mfano, kuingia+nenosiri+(PIN+OPTToken)). Kupitia API, inaunganishwa na huduma za kutuma sms (LinOTP Config->Provider Config->SMS Provider), hutengeneza misimbo ya programu za simu kama vile Google Authentificator na mengi zaidi. Nadhani ni rahisi zaidi kuliko huduma iliyojadiliwa ndani Ibara ya.

Seva hii inafanya kazi kikamilifu na Cisco ASA, seva ya OpenVPN, Apache2, na kwa ujumla na karibu kila kitu kinachoauni uthibitishaji kupitia seva ya RADIUS (Kwa mfano, kwa SSH katika kituo cha data).

Inahitajika:

1) Debian 8 (jessie) - Lazima! (usakinishaji wa majaribio kwenye debian 9 umeelezewa mwishoni mwa kifungu)

Anza:

Inasakinisha Debian 8.

Ongeza hazina ya LinOTP:

# echo 'deb http://www.linotp.org/apt/debian jessie linotp' > /etc/apt/sources.list.d/linotp.list

Kuongeza funguo:

# gpg --search-keys 913DFF12F86258E5

Wakati mwingine wakati wa usakinishaji "safi", baada ya kutekeleza amri hii, Debian inaonyesha:

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

Huu ni usanidi wa awali wa gnupg. Ni sawa. Ingiza tu amri tena.
Kwa swali la Debian:

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) Выход>

Tunajibu: 1

Next:

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

# apt-get update

Sakinisha mysql. Kwa nadharia, unaweza kutumia seva nyingine ya sql, lakini kwa unyenyekevu nitatumia kama inavyopendekezwa kwa LinOTP.

(maelezo ya ziada, ikiwa ni pamoja na kusanidi upya hifadhidata ya LinOTP, inaweza kupatikana katika nyaraka rasmi za kiungo. Huko unaweza pia kupata amri: dpkg-reconfigure linotp ili kubadilisha vigezo ikiwa tayari umeweka mysql).

# apt-get install mysql-server

# apt-get update

(haitaumiza kuangalia sasisho tena)
Sakinisha LinOTP na moduli za ziada:

# apt-get install linotp

Tunajibu maswali ya kisakinishi:
Tumia Apache2: ndio
Unda nenosiri kwa admin Linopt: "Nenosiri lako"
Je, ungependa kutoa cheti cha kujiandikisha?: ndiyo
Tumia MySQL?: ndio
Hifadhidata iko wapi: localhost
Unda hifadhidata ya LinOTP (jina la msingi) kwenye seva: LinOTP2
Unda mtumiaji tofauti wa hifadhidata: LinOTP2
Tunaweka nenosiri kwa mtumiaji: "Nenosiri lako"
Je, nitengeneze hifadhidata sasa? (kitu kama “Una uhakika unataka...”): ndiyo
Ingiza nenosiri la msingi la MySQL ulilounda wakati wa kulisakinisha: "YourPassword"
Imefanywa.

(hiari, sio lazima uisakinishe)

# apt-get install linotp-adminclient-cli 

(hiari, sio lazima uisakinishe)

# apt-get install libpam-linotp  

Na kwa hivyo kiolesura chetu cha wavuti cha Linopp sasa kinapatikana kwa:

"<b>https</b>: //IP_сервера/manage"

Nitazungumza juu ya mipangilio kwenye kiolesura cha wavuti baadaye kidogo.

Sasa, jambo muhimu zaidi! Tunainua FreeRadius na kuiunganisha na Linopp.

Sakinisha FreeRadius na moduli ya kufanya kazi na LinOTP

# apt-get install freeradius linotp-freeradius-perl

chelezo mteja na usanidi wa radius ya Watumiaji.

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

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

Unda faili tupu ya mteja:

# touch /etc/freeradius/clients.conf

Kuhariri faili yetu mpya ya usanidi (usanidi uliohifadhiwa unaweza kutumika kama mfano)

# nano /etc/freeradius/clients.conf

client 192.168.188.0/24 {
secret  = passwd # пароль для подключения клиентов
}

Ifuatayo, unda faili ya watumiaji:

# touch /etc/freeradius/users

Tunahariri faili, tukiambia radius kwamba tutatumia perl kwa uthibitishaji.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Ifuatayo, hariri faili /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Tunahitaji kutaja njia ya hati ya perl linotp kwenye paramu ya moduli:

Perl { .......
.........
<source lang="bash">module = /usr/lib/linotp/radius_linotp.pm

... ..
Ifuatayo, tunaunda faili ambayo tunasema ambayo (kikoa, hifadhidata au faili) kuchukua data kutoka.

# 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

Nitaingia kwa undani zaidi hapa kwa sababu ni muhimu:

Maelezo kamili ya faili na maoni:
#IP ya seva ya linOTP (anwani ya IP ya seva yetu ya LinOTP)
URL=https://172.17.14.103/validate/simplecheck
#Eneo letu ambalo tutaunda katika kiolesura cha wavuti cha LinOTP.)
HALISI=mkono wa nyuma1
#Jina la kikundi cha watumiaji ambacho kimeundwa kwenye mdomo wa wavuti wa LinOTP.
RESCONF=flat_file
#hiari: toa maoni ikiwa kila kitu kinaonekana kufanya kazi vizuri
Debug=Kweli
#hiari: tumia hii, ikiwa una vyeti vya kujiandikisha, vinginevyo toa maoni (SSL ikiwa tutaunda cheti chetu na kutaka kukithibitisha)
SSL_CHECK=Uongo

Ifuatayo, unda faili /etc/freeradius/sites-available/linop

# touch /etc/freeradius/sites-available/linotp

# nano /etc/freeradius/sites-available/linotp

Na nakili usanidi ndani yake (hakuna haja ya kuhariri chochote):

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
}

Ifuatayo tutaunda kiunga cha SIM:

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

Binafsi, ninaua tovuti chaguo-msingi za Radius, lakini ikiwa unazihitaji, unaweza kuhariri usanidi wao au kuzizima.

# rm /etc/freeradius/sites-enabled/default

# rm /etc/freeradius/sites-enabled/inner-tunnel

# service freeradius reload

Sasa wacha turudi kwenye uso wa wavuti na tuitazame kwa undani zaidi:
Kwenye kona ya juu kulia bonyeza LinOTP Config -> UserIdResolvers -> Mpya
Tunachagua tunachotaka: LDAP (AD win, LDAP samba), au SQL, au watumiaji wa ndani wa mfumo wa Flatfile.

Jaza sehemu zinazohitajika.

Ifuatayo tunaunda REALMS:
Katika kona ya juu kulia, bofya LinOTP Config -> Realms -> Mpya.
na upe jina REALMS zetu, na pia ubofye kwenye UserIdResolvers zilizoundwa hapo awali.

FreeRadius inahitaji data hii yote katika /etc/linopt2/rlm_perl.ini faili, kama nilivyoandika juu, kwa hivyo ikiwa hukuihariri wakati huo, ifanye sasa.

Seva yote imesanidiwa.

Ongeza:

Kuanzisha LinOTP kwenye Debian 9:

Ufungaji:

# 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

(kwa msingi, katika Debian 9 mysql (mariaDB) haitoi kuweka nenosiri la mizizi, bila shaka unaweza kuiacha tupu, lakini ukisoma habari, hii mara nyingi husababisha "epic inashindwa", kwa hivyo tutaiweka. hata hivyo)

# 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

Bandika msimbo (uliotumwa na JuriM, asante kwa hilo!):

seva linotp {
sikiliza {
ipaddr = *
bandari = 1812
aina=mwandishi
}
sikiliza {
ipaddr = *
bandari = 1813
aina = act
}
idhinisha {
mchakato wa awali
sasisha {
&control:Auth-Type := Perl
}
}
thibitisha {
Auth-Type Perl {
lulu
}
}
uhasibu {
UNIX
}
}

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

perl {
jina la faili = /usr/share/linop/radius_linopt.pm
func_authenticate = thibitisha
func_authorize = idhinisha
}

Kwa bahati mbaya, katika Debian 9 maktaba ya radius_linop.pm haijasakinishwa kutoka kwa hazina, kwa hivyo tutaichukua kutoka kwa github.

# 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

sasa hebu tuhariri /etc/freeradius/3.0/clients.conf

seva za mteja {
ipaddr = 192.168.188.0/24
siri = nenosiri lako
}

Sasa tusahihishe nano /etc/linopt2/rlm_perl.ini

Tunabandika msimbo sawa na wakati wa kusakinisha kwenye debian 8 (ilivyoelezwa hapo juu)

hayo yote ni kulingana na wazo. (bado haijajaribiwa)

Nitaacha chini viungo vichache vya kusanidi mifumo ambayo mara nyingi inahitaji kulindwa na uthibitishaji wa mambo mawili:
Kuweka uthibitishaji wa sababu mbili ndani Apache2

Sanidi na Cisco ASA(seva tofauti ya kizazi cha ishara hutumiwa hapo, lakini mipangilio ya ASA yenyewe ni sawa).

VPN yenye uthibitishaji wa mambo mawili

marekebisho uthibitishaji wa sababu mbili katika ssh (LinOTP pia inatumika huko) - shukrani kwa mwandishi. Huko unaweza pia kupata mambo ya kuvutia kuhusu kusanidi sera za LiOTP.

Pia, cms za tovuti nyingi zinaunga mkono uthibitishaji wa sababu mbili (Kwa WordPress, LinOTP hata ina moduli yake maalum ya github), kwa mfano, ikiwa unataka kutengeneza sehemu iliyolindwa kwenye tovuti yako ya shirika kwa wafanyakazi wa kampuni.
UKWELI MUHIMU! USITEGEE kisanduku cha “Google autenteficator” ili kutumia Kithibitishaji cha Google! Msimbo wa QR hausomeki basi... (ukweli wa ajabu)

Ili kuandika nakala hii, habari kutoka kwa nakala zifuatazo zilitumiwa:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Asante kwa waandishi.

Chanzo: mapenzi.com

Kuongeza maoni