LinOTP сървър за двуфакторно удостоверяване

LinOTP сървър за двуфакторно удостоверяване

Днес искам да споделя как да настроя двуфакторен сървър за удостоверяване за защита на корпоративната мрежа, сайтове, услуги, ssh. Връзката ще работи на сървъра: LinOTP + FreeRadius.

Защо му трябваме ние?
Това е напълно безплатно, удобно решение във вашата мрежа, независимо от доставчици трети страни.

Тази услуга е много удобна, доста визуална, за разлика от други продукти с отворен код, а също така поддържа огромен брой функции и политики (Например вход+парола+(PIN+OTPToken)). Чрез API се интегрира с услуги за изпращане на sms (LinOTP Config->Provider Config->SMS Provider), генерира кодове за мобилни приложения като Google Autentificator и много други. Мисля, че е по-удобно от разглежданата услуга Статия.

Този сървър работи чудесно с Cisco ASA, OpenVPN сървър, Apache2 и наистина с почти всичко, което поддържа удостоверяване чрез RADIUS сървър (Например за SSH към центъра за данни).

Изисква се:

1) Debian 8 (джеси) - Задължително! (пробна инсталация на debian 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
Задайте парола за потребителя: "YourPassword"
Трябва ли да създам база сега? (нещо като „Сигурни ли сте, че искате...“): да
Въведете основната парола на 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

Ние редактираме файла, казвайки на radius, че ще използваме perl за удостоверяване.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

След това редактирайте файла /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Трябва да зададем пътя към linotp perl скрипта в параметъра на модула:

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 webmord.
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 -> New
Избираме какво искаме: 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) не предлага задаване на root парола, разбира се, можете да го оставите празно, но ако четете новините, това често води до „epic fails“, така че все пак ще го зададем )

# 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 Authenticator“, за да използвате Google Authenticator! QR кодът не се чете тогава... (странен факт)

За написването на статията е използвана информация от следните статии:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Благодаря на авторите.

Източник: www.habr.com

Добавяне на нов коментар