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
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
# 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
marekebisho
Pia, cms za tovuti nyingi zinaunga mkono uthibitishaji wa sababu mbili (Kwa WordPress, LinOTP hata ina moduli yake maalum ya
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:
Asante kwa waandishi.
Chanzo: mapenzi.com