Сервери аутентификатсияи ду-омили LinOTP

Сервери аутентификатсияи ду-омили LinOTP

Имрӯз ман мехоҳам мубодила кунам, ки чӣ гуна сервери аутентификатсияи ду-омилро барои муҳофизати шабакаи корпоративӣ, сайтҳо, хидматҳо, ssh таъсис диҳам. Сервер комбинатсияи зеринро иҷро мекунад: LinOTP + FreeRadius.

Чаро мо ба он ниёз дорем?
Ин як ҳалли комилан ройгон ва қулай аст, дар дохили шабакаи худ, новобаста аз провайдерҳои тарафи сеюм.

Ин хидмат бар хилофи дигар маҳсулоти кушодаасос хеле қулай, хеле визуалӣ аст ва инчунин шумораи зиёди функсияҳо ва сиёсатҳоро дастгирӣ мекунад (Масалан, login+parol+(PIN+OTPToken)). Тавассути API, он бо хидматҳои ирсоли SMS (LinOTP Config->Provider Config->Provider SMS) муттаҳид мешавад, рамзҳоро барои замимаҳои мобилӣ ба монанди Google Authentificator ва ғайра тавлид мекунад. Ман фикр мекунам, ки ин назар ба хидмате, ки дар он баррасӣ шудааст, қулайтар аст мақола.

Ин сервер бо Cisco ASA, сервери OpenVPN, Apache2 ва умуман бо ҳама чизе, ки аутентификатсияро тавассути сервери RADIUS дастгирӣ мекунад, ба таври комил кор мекунад (Масалан, барои SSH дар маркази додаҳо).

Талабот:

1) Debian 8 (Ҷесси) - Талабот! (насбкунии озмоишӣ дар debian 9 дар охири мақола тасвир шудааст)

Start:

Насб кардани 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 аст. Ин дуруст аст. Танҳо фармонро дубора иҷро кунед.
Ба саволи Дебиан:

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

Next:

# 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

Ман дар ин ҷо каме тафсилоти бештар медиҳам, зеро ин муҳим аст:

Тавсифи пурраи файл бо шарҳҳо:
#IP-и сервери linOTP (суроғаи IP-и сервери LinOTP мо)
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

Шахсан ман сайтҳои Radius-и пешфарзро мекушам, аммо агар ба шумо лозим бошад, шумо метавонед конфигуратсияи онҳоро таҳрир кунед ё ғайрифаъол кунед.

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

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

# service freeradius reload

Акнун биёед ба чеҳраи веб баргардем ва онро каме муфассалтар бубинем:
Дар кунҷи рости боло пахш кунед Config LinOTP -> 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
type=auth
}
гӯш кардан {
ipaddr = *
порт = 1813
навъи = ҳисоб
}
иҷозат додан {
коркарди пешакӣ
навсозӣ {
&назорат:Auth-Type:= Perl
}
}
тасдиқ кардан {
Auth-Type 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 ҳатто модули махсуси худро барои Гитуб), масалан, агар шумо хоҳед, ки дар вебсайти корпоративии худ барои кормандони ширкат бахши муҳофизатшуда созед.
ДАКЛИ МУХИМ! Барои истифодаи Google Authenticator қуттии "Google autenteficator" -ро тафтиш накунед! Он гоҳ рамзи QR хонда намешавад... (ҳақиқати аҷиб)

Барои навиштани ин мақола маълумот аз мақолаҳои зерин истифода шудааст:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Ташаккур ба муаллифон.

Манбаъ: will.com

Илова Эзоҳ