LinOTP ikki faktorli autentifikatsiya serveri

LinOTP ikki faktorli autentifikatsiya serveri

Bugun men korporativ tarmoqni, saytlarni, xizmatlarni, ssh-ni himoya qilish uchun ikki faktorli autentifikatsiya serverini qanday sozlashni baham ko'rmoqchiman. Server quyidagi kombinatsiyani ishga tushiradi: LinOTP + FreeRadius.

Nega bizga kerak?
Bu uchinchi tomon provayderlaridan mustaqil ravishda o'z tarmog'ida mutlaqo bepul, qulay echimdir.

Ushbu xizmat boshqa ochiq kodli mahsulotlardan farqli o'laroq juda qulay, juda ingl va juda ko'p funksiya va siyosatlarni qo'llab-quvvatlaydi (masalan, login+parol+(PIN+OTPToken)). API orqali u sms yuborish xizmatlari (LinOTP Config->Provider Config->SMS Provider) bilan birlashadi, Google Authentificator kabi mobil ilovalar uchun kodlar ishlab chiqaradi va boshqa ko'p narsalar. Menimcha, bu muhokama qilingan xizmatdan ko'ra qulayroq maqola.

Ushbu server Cisco ASA, OpenVPN serveri, Apache2 va umuman RADIUS serveri orqali autentifikatsiyani qo'llab-quvvatlaydigan deyarli hamma narsa bilan mukammal ishlaydi (masalan, ma'lumotlar markazida SSH uchun).

Majburiy:

1) Debian 8 (Jessi) - Kerakli! (Debian 9-da sinov o'rnatilishi maqolaning oxirida tasvirlangan)

Boshlash:

Debian 8 o'rnatilmoqda.

LinOTP omborini qo'shing:

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

Kalitlarni qo'shish:

# gpg --search-keys 913DFF12F86258E5

Ba'zan "toza" o'rnatish paytida, ushbu buyruqni ishga tushirgandan so'ng, Debian quyidagilarni ko'rsatadi:

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

Bu dastlabki gnupg sozlamalari. Hammasi joyida; shu bo'ladi. Faqat buyruqni qayta ishga tushiring.
Debianning savoliga:

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) Выход>

Javob beramiz: 1

Keyingi:

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

# apt-get update

mysql-ni o'rnating. Nazariy jihatdan, siz boshqa sql serveridan foydalanishingiz mumkin, ammo soddaligi uchun men uni LinOTP uchun tavsiya qilinganidek ishlataman.

(qo'shimcha ma'lumotlarni, shu jumladan LinOTP ma'lumotlar bazasini qayta sozlashni rasmiy hujjatlarda topish mumkin aloqa. U erda siz buyruqni topishingiz mumkin: dpkg-reconfigure linotp parametrlarini o'zgartirish uchun agar siz allaqachon MySQL-ni o'rnatgan bo'lsangiz).

# apt-get install mysql-server

# apt-get update

(yangilanishlarni qayta tekshirish zarar qilmaydi)
LinOTP va qo'shimcha modullarni o'rnating:

# apt-get install linotp

Biz o'rnatuvchining savollariga javob beramiz:
Apache2 dan foydalaning: ha
Linotp administratori uchun parol yarating: "Parolingiz"
O'z-o'zidan imzolangan sertifikat yaratilsinmi?: ha
MySQL-dan foydalaning?: ha
Ma'lumotlar bazasi qayerda joylashgan: localhost
Serverda LinOTP ma'lumotlar bazasini (asosiy nom) yarating: LinOTP2
Ma'lumotlar bazasi uchun alohida foydalanuvchi yarating: LinOTP2
Biz foydalanuvchi uchun parol o'rnatdik: "Sizning parolingiz"
Endi ma'lumotlar bazasini yaratishim kerakmi? ("Siz xohlayotganingizga ishonchingiz komilmi ..." kabi bir narsa): ha
Uni o'rnatishda yaratgan MySQL ildiz parolini kiriting: "YourPassword"
Bajarildi.

(ixtiyoriy, uni o'rnatishingiz shart emas)

# apt-get install linotp-adminclient-cli 

(ixtiyoriy, uni o'rnatishingiz shart emas)

# apt-get install libpam-linotp  

Shunday qilib, bizning Linotp veb-interfeysimiz endi quyidagi manzilda mavjud:

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

Men veb-interfeysdagi sozlamalar haqida biroz keyinroq gaplashaman.

Endi, eng muhimi! Biz FreeRadiusni ko'taramiz va uni Linotp bilan bog'laymiz.

LinOTP bilan ishlash uchun FreeRadius va modulni o'rnating

# apt-get install freeradius linotp-freeradius-perl

mijoz va foydalanuvchilar radiusi konfiguratsiyasini zaxiralang.

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

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

Bo'sh mijoz faylini yarating:

# touch /etc/freeradius/clients.conf

Yangi konfiguratsiya faylimizni tahrirlash (zaxiralangan konfiguratsiyadan misol sifatida foydalanish mumkin)

# nano /etc/freeradius/clients.conf

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

Keyin foydalanuvchilar faylini yarating:

# touch /etc/freeradius/users

Biz radiusga autentifikatsiya qilish uchun Perl dan foydalanishimizni aytib, faylni tahrirlaymiz.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Keyin /etc/freeradius/modules/perl faylini tahrirlang

# nano /etc/freeradius/modules/perl

Biz modul parametrida perl linotp skriptiga yo'lni ko'rsatishimiz kerak:

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

... ..
Keyin biz faylni yaratamiz, unda biz ma'lumotlarni qaysi (domen, ma'lumotlar bazasi yoki fayl) dan olishni aytamiz.

# 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

Men bu erda bir oz ko'proq ma'lumot beraman, chunki bu muhim:

Izohlar bilan faylning to'liq tavsifi:
linOTP serverining #IP (bizning LinOTP serverimizning IP manzili)
URL=https://172.17.14.103/validate/simplecheck
#Bizning hududimiz LinOTP veb-interfeysida yaratiladi.)
REALM=rearm1
#LinOTP veb tumshug'ida yaratilgan foydalanuvchilar guruhining nomi.
RESCONF=flat_fayl
#ixtiyoriy: agar hamma narsa yaxshi ishlayotgan bo'lsa, sharh qoldiring
Debug=To'g'ri
#ixtiyoriy: agar sizda oʻzingiz imzolagan sertifikatlaringiz boʻlsa, bundan foydalaning, aks holda sharh qoldiring (agar biz oʻz sertifikatimizni yaratsak va uni tasdiqlamoqchi boʻlsak SSL)
SSL_CHECK=Noto'g'ri

Keyin /etc/freeradius/sites-available/linotp faylini yarating

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

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

Va unga konfiguratsiyani nusxa ko'chiring (hech narsani tahrirlash shart emas):

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
}

Keyin biz SIM-karta havolasini yaratamiz:

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

Shaxsan men standart Radius saytlarini o'ldiraman, lekin agar sizga kerak bo'lsa, siz ularning konfiguratsiyasini tahrirlashingiz yoki ularni o'chirib qo'yishingiz mumkin.

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

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

# service freeradius reload

Endi veb-sahifaga qaytaylik va uni biroz batafsilroq ko'rib chiqamiz:
Yuqori o'ng burchakda LinOTP Config -> UserIdResolvers -> Yangi ni bosing
Biz xohlagan narsani tanlaymiz: LDAP (AD win, LDAP samba) yoki SQL yoki Flatfile tizimining mahalliy foydalanuvchilari.

Kerakli maydonlarni to'ldiring.

Keyin biz REALMS ni yaratamiz:
Yuqori o'ng burchakda LinOTP Config -> Realms -> New-ni bosing.
va REALMSimizga nom bering, shuningdek, avval yaratilgan UserIdResolvers-ni bosing.

FreeRadius ushbu ma'lumotlarning barchasi /etc/linotp2/rlm_perl.ini faylida kerak, men yuqorida yozganimdek, agar siz uni o'shanda tahrir qilmagan bo'lsangiz, hozir qiling.

Server hammasi sozlangan.

Qo'shimcha:

Debian 9 da LinOTP o'rnatilmoqda:

O'rnatish:

# 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

(sukut bo'yicha, Debian 9 mysql (mariaDB) da root parolni o'rnatishni taklif qilmaydi, albatta siz uni bo'sh qoldirishingiz mumkin, lekin agar siz yangiliklarni o'qisangiz, bu ko'pincha "epik muvaffaqiyatsizlikka" olib keladi, shuning uchun biz uni o'rnatamiz. nima bo'lganda ham)

# 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

Kodni joylashtiring (JuriM tomonidan yuborilgan, buning uchun unga rahmat!):

server linotp {
tinglash {
ipaddr = *
port = 1812
type=auth
}
tinglash {
ipaddr = *
port = 1813
turi = hisob
}
ruxsat berish {
oldindan ishlov berish
yangilash {
&nazorat:Auth-Type:= Perl
}
}
autentifikatsiya qilish {
Auth-Type Perl {
Perl
}
}
buxgalteriya {
Unix
}
}

/etc/freeradius/3.0/mods-enabled/perl-ni tahrirlang

perl {
fayl nomi = /usr/share/linotp/radius_linotp.pm
func_authenticate = autentifikatsiya
func_authorize = avtorizatsiya qilish
}

Afsuski, Debian 9 da radius_linotp.pm kutubxonasi omborlardan o'rnatilmagan, shuning uchun biz uni github'dan olamiz.

# 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

endi /etc/freeradius/3.0/clients.conf ni tahrirlaymiz

mijoz serverlari {
ipaddr = 192.168.188.0/24
maxfiy = parolingiz
}

Endi nano /etc/linotp2/rlm_perl.ini tuzatamiz

Debian 8 ga o'rnatishda bo'lgani kabi bir xil kodni joylashtiramiz (yuqorida tasvirlangan)

hammasi fikrga ko'ra. (hali sinovdan o'tmagan)

Quyida men ikki faktorli autentifikatsiya bilan himoyalanishi kerak bo'lgan tizimlarni sozlash bo'yicha bir nechta havolalarni qoldiraman:
Ikki faktorli autentifikatsiyani sozlash Apache2

Cisco ASA bilan sozlash(u erda boshqa token yaratish serveri ishlatiladi, ammo ASA sozlamalari bir xil).

Ikki faktorli autentifikatsiya bilan VPN

moslashish ssh-da ikki faktorli autentifikatsiya (U erda LinOTP ham qo'llaniladi) - muallifga rahmat. U erda siz LiOTP siyosatini o'rnatish haqida qiziqarli narsalarni ham topishingiz mumkin.

Bundan tashqari, ko'pgina saytlarning sms ikki faktorli autentifikatsiyani qo'llab-quvvatlaydi (WordPress uchun LinOTP hatto o'zining maxsus moduliga ega. Github), masalan, korporativ veb-saytingizda kompaniya xodimlari uchun himoyalangan bo'lim yaratmoqchi bo'lsangiz.
MUHIM FAKT! Google Authenticator-dan foydalanish uchun “Google autenteficator” katagiga belgi qo'ymang! QR kodni o'qib bo'lmaydi... (g'alati fakt)

Ushbu maqolani yozish uchun quyidagi maqolalardagi ma'lumotlardan foydalanilgan:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Mualliflarga rahmat.

Manba: www.habr.com

a Izoh qo'shish