LinOTP iki faktorlu autentifikasiya serveri

LinOTP iki faktorlu autentifikasiya serveri

Bu gün mən korporativ şəbəkəni, saytları, xidmətləri, ssh-ni qorumaq üçün iki faktorlu autentifikasiya serverinin necə qurulacağını bölüşmək istəyirəm. Server aşağıdakı kombinasiyanı işlədəcək: LinOTP + FreeRadius.

Niyə bizə lazımdır?
Bu, üçüncü tərəf provayderlərindən asılı olmayaraq, öz şəbəkəsi daxilində tamamilə pulsuz, rahat bir həlldir.

Bu xidmət digər açıq mənbə məhsullarından fərqli olaraq çox rahat, kifayət qədər vizualdır, həmçinin çoxlu sayda funksiya və siyasəti dəstəkləyir (Məsələn, giriş+parol+(PIN+OTPToken)). API vasitəsilə o, sms göndərmə xidmətləri ilə inteqrasiya edir (LinOTP Config->Provider Config->SMS Provider), Google Authentificator kimi mobil proqramlar üçün kodlar yaradır və daha çox. Hesab edirəm ki, bu, müzakirə olunan xidmətdən daha əlverişlidir məqalə.

Bu server Cisco ASA, OpenVPN server, Apache2 və ümumiyyətlə RADIUS server vasitəsilə autentifikasiyanı dəstəkləyən demək olar ki, hər şeylə mükəmməl işləyir (Məsələn, məlumat mərkəzində SSH üçün).

Lazım:

1) Debian 8 (jessie) - Tələb! (Debian 9-da sınaq quraşdırılması məqalənin sonunda təsvir edilmişdir)

Ana səhifə:

Debian 8 quraşdırılması.

LinOTP deposunu əlavə edin:

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

Açarların əlavə edilməsi:

# gpg --search-keys 913DFF12F86258E5

Bəzən “təmiz” quraşdırma zamanı bu əmri yerinə yetirdikdən sonra Debian aşağıdakıları göstərir:

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, ilkin gnupg quraşdırmasıdır. Hər şey qaydasındadır. Sadəcə əmri yenidən işə salın.
Debianın sualına:

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

Cavab veririk: 1

Növbəti:

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

# apt-get update

mysql quraşdırın. Nəzəri olaraq, başqa bir sql serverindən istifadə edə bilərsiniz, lakin sadəlik üçün onu LinOTP üçün tövsiyə edildiyi kimi istifadə edəcəyəm.

(Əlavə məlumat, o cümlədən LinOTP verilənlər bazasının yenidən konfiqurasiyası üçün rəsmi sənədlərdə tapıla bilər əlaqə. Orada həmçinin əmri tapa bilərsiniz: dpkg-reconfigure linotp parametrləri dəyişdirmək üçün əgər siz artıq mysql quraşdırmısınızsa).

# apt-get install mysql-server

# apt-get update

(yenidən yeniləmələri yoxlamaq zərər verməz)
LinOTP və əlavə modulları quraşdırın:

# apt-get install linotp

Quraşdırıcının suallarına cavab veririk:
Apache2 istifadə edin: bəli
Admin Linotp üçün parol yaradın: "Şifrəniz"
Öz-özünə imzalanmış sertifikat yaradın?: bəli
MySQL istifadə edin?: bəli
Verilənlər bazası harada yerləşir: localhost
Serverdə LinOTP verilənlər bazası (əsas ad) yaradın: LinOTP2
Verilənlər bazası üçün ayrıca istifadəçi yaradın: LinOTP2
İstifadəçi üçün parol təyin etdik: "Şifrəniz"
İndi verilənlər bazası yaratmalıyam? ("İstədiyinizə əminsinizmi..." kimi bir şey): bəli
Quraşdırarkən yaratdığınız MySQL kök parolunu daxil edin: “YourPassword”
Done.

(isteğe bağlı, onu quraşdırmaq lazım deyil)

# apt-get install linotp-adminclient-cli 

(isteğe bağlı, onu quraşdırmaq lazım deyil)

# apt-get install libpam-linotp  

Beləliklə, Linotp veb interfeysimiz indi burada mövcuddur:

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

Veb interfeysindəki parametrlər haqqında bir az sonra danışacağam.

İndi ən vacib şey! Biz FreeRadius-u qaldırırıq və onu Linotp ilə əlaqələndiririk.

LinOTP ilə işləmək üçün FreeRadius və modulu quraşdırın

# apt-get install freeradius linotp-freeradius-perl

müştəri və İstifadəçilər radius konfiqurasiyalarının ehtiyat nüsxəsini çıxarın.

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

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

Boş müştəri faylı yaradın:

# touch /etc/freeradius/clients.conf

Yeni konfiqurasiya faylımızı redaktə edirik (yedeklənmiş konfiqurasiya nümunə kimi istifadə edilə bilər)

# nano /etc/freeradius/clients.conf

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

Sonra, bir istifadəçi faylı yaradın:

# touch /etc/freeradius/users

Biz autentifikasiya üçün Perl istifadə edəcəyimizi radiusa bildirərək faylı redaktə edirik.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Sonra, /etc/freeradius/modules/perl faylını redaktə edin

# nano /etc/freeradius/modules/perl

Perl linotp skriptinə gedən yolu modul parametrində göstərməliyik:

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

... ..
Sonra, hansı (domen, verilənlər bazası və ya fayl) məlumatları götürəcəyimizi söylədiyimiz bir fayl yaradırıq.

# 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

Burada bir az daha ətraflı danışacağam, çünki vacibdir:

Şərhlərlə faylın tam təsviri:
linOTP serverinin #IP (LinOTP serverimizin IP ünvanı)
URL=https://172.17.14.103/validate/simplecheck
#LinOTP veb interfeysində yaradacağımız sahəmiz.)
REALM=rearm1
#LinOTP veb ağzında yaradılmış istifadəçi qrupunun adı.
RESCONF=düz_fayl
#optional: hər şey qaydasındadırsa şərh bildirin
Debug=Doğrudur
#optional: bunu istifadə edin, əgər özünüz imzalamış sertifikatlarınız varsa, əks halda şərh bildirin (öz sertifikatımızı yaratsaq və onu yoxlamaq istəsək SSL)
SSL_CHECK=Yanlış

Sonra, /etc/freeradius/sites-available/linotp faylını yaradın

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

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

Və konfiqurasiyanı ona kopyalayın (heç nəyi redaktə etməyə ehtiyac yoxdur):

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
}

Sonra SİM əlaqə yaradacağıq:

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

Şəxsən mən standart radius saytlarını öldürürəm, lakin onlara ehtiyacınız varsa, onların konfiqurasiyasını redaktə edə və ya onları söndürə bilərsiniz.

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

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

# service freeradius reload

İndi veb üzünə qayıdaq və ona bir az daha ətraflı baxaq:
Yuxarı sağ küncdə LinOTP Config -> UserIdResolvers -> Yeni seçiminə klikləyin
İstədiyimizi seçirik: LDAP (AD win, LDAP samba) və ya SQL və ya Flatfile sisteminin yerli istifadəçiləri.

Tələb olunan sahələri doldurun.

Sonra REALMS yaradırıq:
Yuxarı sağ küncdə LinOTP Config -> Realms -> New düyməsini klikləyin.
və ƏLAQƏLƏRİMİZƏ ad verin, həmçinin əvvəllər yaradılmış UserIdResolvers-ə klikləyin.

FreeRadius-un bütün bu məlumatlara /etc/linotp2/rlm_perl.ini faylında ehtiyacı var, yuxarıda yazdığım kimi, ona görə də siz onu redaktə etməmisinizsə, indi edin.

Server hamısı konfiqurasiya olunub.

Əlavə:

Debian 9-da LinOTP-nin qurulması:

Quraşdırma:

# 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

(standart olaraq, Debian 9 mysql-də (mariaDB) kök parol təyin etməyi təklif etmir, əlbəttə ki, onu boş qoya bilərsiniz, amma xəbərləri oxusanız, bu, çox vaxt "epik uğursuzluğa" səbəb olur, ona görə də biz onu təyin edəcəyik. hər halda)

# 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

Kodu yapışdırın (JuriM tərəfindən göndərilib, buna görə ona təşəkkür edirik!):

server linotp {
dinləmək {
ipaddr = *
port = 1812
type=auth
}
dinləmək {
ipaddr = *
port = 1813
növü = hesab
}
icazə vermək {
qabaqcadan emal
yeniləmə {
&nəzarət:Auth-Type := Perl
}
}
autentifikasiya {
Doğrulama Tipi Perl {
perl
}
}
mühasibatlıq {
Unix
}
}

/etc/freeradius/3.0/mods-enabled/perl-i redaktə edin

perl {
fayl adı = /usr/share/linotp/radius_linotp.pm
func_authenticate = autentifikasiya
func_authorize = icazə verin
}

Təəssüf ki, Debian 9-da radius_linotp.pm kitabxanası depolardan quraşdırılmayıb, ona görə də biz onu github-dan götürəcəyik.

# 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

indi /etc/freeradius/3.0/clients.conf-u redaktə edək

müştəri serverləri {
ipaddr = 192.168.188.0/24
gizli = parolunuz
}

İndi nano /etc/linotp2/rlm_perl.ini düzəltməyə çalışaq

Debian 8-də quraşdırarkən olduğu kimi eyni kodu ora yapışdırırıq (yuxarıda təsvir edilmişdir)

hamısı ideyaya görədir. (hələ sınaqdan keçirilməyib)

Aşağıda iki faktorlu autentifikasiya ilə qorunmalı olan sistemlərin qurulması ilə bağlı bir neçə keçid buraxacağam:
İki faktorlu autentifikasiyanın qurulması Apache2

Cisco ASA ilə quraşdırma(orada fərqli bir token generasiya serverindən istifadə olunur, lakin ASA-nın özünün parametrləri eynidir).

İki faktorlu autentifikasiya ilə VPN

nizamlama ssh-də iki faktorlu autentifikasiya (LinOTP də orada istifadə olunur) - müəllifə təşəkkürlər. Orada LiOTP siyasətlərinin qurulması ilə bağlı maraqlı şeylər də tapa bilərsiniz.

Həmçinin, bir çox saytların cms-ləri iki faktorlu autentifikasiyanı dəstəkləyir (WordPress üçün LinOTP hətta öz xüsusi moduluna malikdir. GitHub), məsələn, korporativ vebsaytınızda şirkət işçiləri üçün qorunan bölmə yaratmaq istəyirsinizsə.
Vacib FAKT! Google Authenticator istifadə etmək üçün “Google autenteficator” qutusunu YOXLAMAYIN! QR kodu o zaman oxunmur... (qəribə fakt)

Bu məqaləni yazmaq üçün aşağıdakı məqalələrdən məlumat istifadə edilmişdir:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Müəlliflərə təşəkkürlər.

Mənbə: www.habr.com

Добавить комментарий