LinOTP երկգործոն նույնականացման սերվեր

LinOTP երկգործոն նույնականացման սերվեր

Այսօր ես ուզում եմ կիսվել, թե ինչպես ստեղծել երկու գործոն վավերացման սերվեր՝ պաշտպանելու ձեր կորպորատիվ ցանցը, կայքերը, ծառայությունները, ssh-ը: Սերվերը կաշխատի հետևյալ համակցությունը՝ LinOTP + FreeRadius:

Ինչո՞ւ է դա մեզ պետք:
Սա լիովին անվճար, հարմար լուծում է, իր սեփական ցանցում, անկախ երրորդ կողմի մատակարարներից:

Այս ծառայությունը շատ հարմար է, բավականին տեսողական, ի տարբերություն բաց կոդով այլ արտադրանքների, ինչպես նաև աջակցում է հսկայական թվով գործառույթների և քաղաքականության (օրինակ՝ մուտք+գաղտնաբառ+(PIN+OTPToken)): API-ի միջոցով այն ինտեգրվում է sms ուղարկող ծառայությունների հետ (LinOTP Config->Provider Config->SMS Provider), գեներացնում կոդեր բջջային հավելվածների համար, ինչպիսիք են Google Authentificator-ը և շատ ավելին: Կարծում եմ՝ ավելի հարմար է, քան քննարկված ծառայությունը Հոդված.

Այս սերվերը հիանալի աշխատում է Cisco ASA-ի, OpenVPN սերվերի, Apache2-ի և ընդհանրապես գրեթե ամեն ինչի հետ, որն աջակցում է նույնականացմանը RADIUS սերվերի միջոցով (օրինակ՝ տվյալների կենտրոնում SSH-ի համար):

Պահանջվում է `

1) Debian 8 (jessie) - Իհարկե: (Դեբիան 9-ի փորձնական տեղադրումը նկարագրված է հոդվածի վերջում)

Սկիզբ:

Debian 8-ի տեղադրում.

Ավելացնել LinOTP պահեստը.

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

Բանալիների ավելացում.

# gpg --search-keys 913DFF12F86258E5

Երբեմն «մաքուր» տեղադրման ժամանակ, այս հրամանը գործարկելուց հետո, Debian-ը ցուցադրում է.

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

Սա gnupg-ի սկզբնական կարգավորումն է: Ամեն ինչ կարգին է. Պարզապես նորից գործարկեք հրամանը:
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) Выход>

Պատասխանում ենք՝ 1

Հաջորդը

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

# apt-get update

Տեղադրեք mysql. Տեսականորեն, դուք կարող եք օգտագործել մեկ այլ sql սերվեր, բայց պարզության համար ես կօգտագործեմ այն, ինչպես խորհուրդ է տրվում LinOTP-ի համար:

(լրացուցիչ տեղեկություններ, ներառյալ LinOTP տվյալների բազայի վերակազմավորումը, կարելի է գտնել պաշտոնական փաստաթղթերում. ՈՒղեցույց. Այնտեղ կարող եք գտնել նաև հրամանը՝ dpkg-reconfigure linotp՝ պարամետրերը փոխելու համար, եթե արդեն տեղադրել եք mysql):

# apt-get install mysql-server

# apt-get update

(Չի խանգարի նորից ստուգել թարմացումները)
Տեղադրեք LinOTP և լրացուցիչ մոդուլներ.

# apt-get install linotp

Մենք պատասխանում ենք տեղադրողի հարցերին.
Օգտագործեք Apache2: այո
Ստեղծեք գաղտնաբառ ադմինիստրատորի Linotp-ի համար՝ «Ձեր գաղտնաբառը»
Ստեղծե՞լ ինքնաստորագրված վկայական: այո
Օգտագործե՞լ MySQL: այո
Որտեղ է գտնվում տվյալների բազան՝ localhost
Ստեղծեք LinOTP տվյալների բազա (բազային անունը) սերվերի վրա՝ LinOTP2
Ստեղծեք տվյալների բազայի առանձին օգտվող՝ LinOTP2
Մենք գաղտնաբառ ենք սահմանել օգտագործողի համար՝ «Ձեր գաղտնաբառը»
Արդյո՞ք հիմա պետք է ստեղծեմ տվյալների բազա: («Դու վստա՞հ ես, որ ուզում ես...») այո
Մուտքագրեք MySQL արմատային գաղտնաբառը, որը ստեղծել եք այն տեղադրելիս՝ «YourPassword»
Կատարված:

(ըստ ցանկության, դուք պետք չէ այն տեղադրել)

# apt-get install linotp-adminclient-cli 

(ըստ ցանկության, դուք պետք չէ այն տեղադրել)

# apt-get install libpam-linotp  

Եվ այսպես, մեր Linotp վեբ ինտերֆեյսը այժմ հասանելի է հետևյալ հասցեով՝

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

Վեբ ինտերֆեյսի կարգավորումների մասին կխոսեմ մի փոքր ուշ:

Հիմա, ամենակարևորը. Մենք բարձրացնում ենք FreeRadius-ը և կապում այն ​​Linotp-ի հետ:

Տեղադրեք FreeRadius-ը և մոդուլը՝ LinOTP-ի հետ աշխատելու համար

# apt-get install freeradius linotp-freeradius-perl

կրկնօրինակեք հաճախորդի և Օգտագործողների շառավիղի կազմաձևերը:

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

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

Ստեղծեք դատարկ հաճախորդի ֆայլ.

# touch /etc/freeradius/clients.conf

Մեր նոր կազմաձևման ֆայլի խմբագրում (կրկնօրինակված կազմաձևը կարող է օգտագործվել որպես օրինակ)

# nano /etc/freeradius/clients.conf

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

Հաջորդը, ստեղծեք օգտվողների ֆայլ.

# touch /etc/freeradius/users

Մենք խմբագրում ենք ֆայլը՝ շառավիղին ասելով, որ նույնականացման համար կօգտագործենք perl-ը:

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Հաջորդը, խմբագրեք ֆայլը /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Մենք պետք է նշենք դեպի perl linotp սցենարի ուղին մոդուլի պարամետրում.

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

... ..
Հաջորդը, մենք ստեղծում ենք ֆայլ, որտեղ ասում ենք, թե որից (տիրույթից, տվյալների բազայից կամ ֆայլից) վերցնել տվյալները:

# 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

Այստեղ ես մի փոքր ավելի մանրամասն կանդրադառնամ, քանի որ դա կարևոր է.

Ֆայլի ամբողջական նկարագրությունը մեկնաբանություններով.
linOTP սերվերի #IP (մեր LinOTP սերվերի IP հասցեն)
URL=https://172.17.14.103/validate/simplecheck
#Մեր տարածքը, որը մենք կստեղծենք LinOTP վեբ ինտերֆեյսում։)
REALM=թև1
#Օգտատերերի խմբի անունը, որը ստեղծվել է LinOTP վեբ մզկիթում:
RESCONF=հարթ_ֆայլ
#ըստ ցանկության. մեկնաբանեք, եթե թվում է, թե ամեն ինչ լավ է աշխատում
Debug=Ճիշտ է
#ընտրովի. օգտագործեք սա, եթե ունեք ինքնաստորագրված վկայականներ, այլապես մեկնաբանեք (SSL, եթե մենք ստեղծում ենք մեր սեփական վկայականը և ցանկանում ենք ստուգել այն)
SSL_CHECK=Սխալ է

Հաջորդը, ստեղծեք /etc/freeradius/sites-available/linotp ֆայլը

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

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

Եվ պատճենեք կազմաձևը դրա մեջ (ոչինչ խմբագրելու կարիք չկա).

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
}

Հաջորդը մենք կստեղծենք SIM հղում.

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

Անձամբ ես սպանում եմ լռելյայն շառավղով կայքերը, բայց եթե դրանք ձեզ պետք են, կարող եք կամ խմբագրել դրանց կազմաձևերը կամ անջատել դրանք:

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

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

# service freeradius reload

Հիմա եկեք վերադառնանք վեբ դեմքին և մի փոքր ավելի մանրամասն նայենք դրան.
Վերևի աջ անկյունում սեղմեք LinOTP Config -> UserIdResolvers -> Նոր
Մենք ընտրում ենք այն, ինչ ուզում ենք՝ LDAP (AD win, LDAP samba) կամ SQL կամ Flatfile համակարգի տեղական օգտվողներ:

Լրացրեք պահանջվող դաշտերը:

Հաջորդը մենք ստեղծում ենք REALMS.
Վերևի աջ անկյունում կտտացրեք LinOTP Config -> Realms -> New:
և անուն տվեք մեր REALMS-ին, ինչպես նաև սեղմեք նախկինում ստեղծված UserIdResolvers-ի վրա:

FreeRadius-ին անհրաժեշտ են այս բոլոր տվյալները /etc/linotp2/rlm_perl.ini ֆայլում, ինչպես ես գրել եմ վերևում, այնպես որ, եթե այն ժամանակ չեք խմբագրել, արեք դա հիմա:

Սերվերը բոլորը կազմաձևված է:

Հավելվածը:

LinOTP-ի կարգավորում Debian 9-ում:

Установка:

# 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

(լռելյայնորեն, Debian 9-ում mysql-ը (mariaDB) չի առաջարկում արմատային գաղտնաբառ տեղադրել, իհարկե, կարող եք այն դատարկ թողնել, բայց եթե կարդում եք նորությունները, դա շատ հաճախ հանգեցնում է «էպիկական ձախողումների», այնպես որ մենք այն կսահմանենք։ ամեն դեպքում)

# 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

Տեղադրեք կոդը (ուղարկված JuriM-ի կողմից, շնորհակալություն նրան դրա համար):

սերվեր linotp {
լսիր {
ipaddr = *
նավահանգիստ = 1812
տեսակ = հեղինակություն
}
լսիր {
ipaddr = *
նավահանգիստ = 1813
տեսակ = ակտ
}
լիազորել {
նախամշակում
թարմացնել {
&control:Auth-Type:= Perl
}
}
նույնականացնել {
Auth-Type Perl {
Perl
}
}
հաշվապահություն {
Unix
}
}

Խմբագրել /etc/freeradius/3.0/mods-enabled/perl

perl {
ֆայլի անուն = /usr/share/linotp/radius_linotp.pm
func_authenticate = նույնականացնել
func_authorize = լիազորել
}

Ցավոք, Debian 9-ում radius_linotp.pm գրադարանը տեղադրված չէ պահեստներից, ուստի մենք այն կվերցնենք 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

հիմա եկեք խմբագրենք /etc/freeradius/3.0/clients.conf

հաճախորդի սերվերներ {
ipaddr = 192.168.188.0/24
գաղտնի = ձեր գաղտնաբառը
}

Հիմա եկեք ուղղենք nano /etc/linotp2/rlm_perl.ini

Մենք այնտեղ տեղադրում ենք նույն կոդը, ինչպես debian 8-ի վրա տեղադրելիս (վերևում նկարագրված)

այս ամենը ըստ գաղափարի: (դեռ փորձարկված չէ)

Ստորև ես կթողնեմ մի քանի հղումներ համակարգերի ստեղծման համար, որոնք ամենից հաճախ պետք է պաշտպանվեն երկգործոն նույնականացման միջոցով.
Երկգործոն նույնականացման կարգավորում Apache2- ը

Կարգավորում Cisco ASA-ի հետ(Այնտեղ օգտագործվում է տարբեր նշանների սերվեր, բայց հենց ASA-ի կարգավորումները նույնն են):

VPN երկգործոն նույնականացմամբ

հարմարեցում երկու գործոն նույնականացում ssh-ում (Այնտեղ օգտագործվում է նաև LinOTP) - շնորհակալություն հեղինակին: Այնտեղ կարող եք նաև գտնել հետաքրքիր բաներ LiOTP քաղաքականության ստեղծման վերաբերյալ:

Նաև շատ կայքերի cms-ն աջակցում է երկգործոն նույնականացմանը (Wordpress-ի համար LinOTP-ն նույնիսկ ունի իր հատուկ մոդուլը GitHub), օրինակ, եթե ցանկանում եք ձեր կորպորատիվ կայքում պաշտպանված բաժին ստեղծել ընկերության աշխատակիցների համար:
ԿԱՐԵՎՈՐ ՓԱՍՏ! Մի նշեք «Google autenteficator» վանդակը՝ Google Authenticator-ն օգտագործելու համար: Այդ դեպքում QR կոդը ընթեռնելի չէ... (տարօրինակ փաստ)

Այս հոդվածը գրելու համար օգտագործվել են հետևյալ հոդվածներից ստացված տեղեկությունները.
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Շնորհակալություն հեղինակներին։

Source: www.habr.com

Добавить комментарий