LinOTP сервер за автентикација со два фактори

LinOTP сервер за автентикација со два фактори

Денес сакам да споделам како да поставам сервер за автентикација со два фактори за заштита на корпоративна мрежа, сајтови, услуги, ssh. Серверот ќе ја работи следнава комбинација: LinOTP + FreeRadius.

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

Оваа услуга е многу удобна, доста визуелна, за разлика од другите производи со отворен код, а исто така поддржува огромен број функции и политики (На пример, најава+лозинка+(PIN+OTPToken)). Преку API се интегрира со услугите за испраќање смс (LinOTP Config-> Provider Config->SMS Provider), генерира кодови за мобилни апликации како Google Authentificator и многу повеќе. Мислам дека е поудобно од услугата за која се дискутираше Член.

Овој сервер работи совршено со 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
Поставивме лозинка за корисникот: „Вашата лозинка“
Дали сега треба да создадам база на податоци? (нешто како „Дали сте сигурни дека сакате...“): да
Внесете ја root лозинката на 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=rearm1
#Име на корисничката група што е креирана во веб-муцката на 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

Сега да се вратиме на веб-лицето и да го разгледаме малку подетално:
Во горниот десен агол кликнете 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, се разбира можете да ја оставите празна, но ако ги читате вестите, ова многу често води до „епски неуспеси“, па ние ќе го поставиме како и да е)

# 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 {
перл
}
}
сметководство {
уникс
}
}

Уредете /etc/freeradius/3.0/mods-enabled/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

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

Извор: www.habr.com

Додадете коментар