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 (Джесси) - Албетте! (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 орнотуу. Жарайт. Жөн гана буйрукту кайра иштетиңиз.
Дебиандын суроосуна:

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 менен байланыштырабыз.

LinOTP менен иштөө үчүн FreeRadius жана модулду орнотуңуз

# 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=rearm1
#LinOTP желе оозунда түзүлгөн колдонуучу тобунун аталышы.
RESCONF=жалпак_файл
#милдеттүү эмес: эгер баары жакшы болуп көрүнсө, комментарий бериңиз
Debug=True
#милдеттүү эмес: эгер сизде өз алдынча кол койгон сертификаттарыңыз болсо, муну колдонуңуз, антпесе комментарий калтырыңыз (эгер биз өзүбүздүн сертификатыбызды түзүп, аны текшергибиз келсе, 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 -> Жаңы чыкылдатыңыз
Биз каалаган нерсени тандайбыз: LDAP (AD win, LDAP samba) же SQL же Flatfile тутумунун жергиликтүү колдонуучулары.

Керектүү талааларды толтуруңуз.

Андан кийин биз REALMS түзөбүз:
Жогорку оң бурчта, LinOTP Config -> Realms -> New дегенди басыңыз.
жана биздин REALMSке ат бериңиз, ошондой эле мурда түзүлгөн UserIdResolvers чыкылдатыңыз.

FreeRadius бул маалыматтардын бардыгына /etc/linotp2/rlm_perl.ini файлында керек, мен жогоруда жазгандай, андыктан эгер сиз аны түзөткөн эмес болсоңуз, азыр кылыңыз.

Сервер баары конфигурацияланган.

менен толукталсын:

Debian 9да LinOTP орнотуу:

Setting:

# 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
түрү = акт
}
уруксат берүү {
алдын ала процесс
жаңыртуу {
&control: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 эки факторлуу аутентификацияны колдойт (WordPres үчүн, LinOTP үчүн атүгүл өзүнүн атайын модулу бар. Github), мисалы, сиз корпоративдик веб-сайтыңызда компаниянын кызматкерлери үчүн корголгон бөлүм ачкыңыз келсе.
МААНИЛҮҮ ФАКТЫ! Google Authenticator колдонуу үчүн "Google autenteficator" кутучасын ТЕКШЕРБЕҢИЗ! Анда QR коду окулбайт... (кызык факт)

Бул макаланы жазуу үчүн төмөнкү макалалардын маалыматы колдонулган:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Авторлорго рахмат.

Source: www.habr.com

Комментарий кошуу