LinOTP хоёр хүчин зүйлийн баталгаажуулалтын сервер

LinOTP хоёр хүчин зүйлийн баталгаажуулалтын сервер

Өнөөдөр би корпорацийн сүлжээ, сайт, үйлчилгээ, ssh-ийг хамгаалахын тулд хоёр хүчин зүйлийн баталгаажуулалтын серверийг хэрхэн тохируулах талаар хуваалцахыг хүсч байна. Сервер нь дараах хослолыг ажиллуулна: LinOTP + FreeRadius.

Бидэнд яагаад хэрэгтэй байна вэ?
Энэ бол гуравдагч талын үйлчилгээ үзүүлэгчээс хамааралгүй өөрийн сүлжээн дэх бүрэн үнэ төлбөргүй, тохиромжтой шийдэл юм.

Энэхүү үйлчилгээ нь бусад нээлттэй эхийн бүтээгдэхүүнээс ялгаатай нь маш тохиромжтой, нэлээд харагдахуйц бөгөөд маш олон тооны функц, бодлогыг дэмждэг (Жишээ нь, нэвтрэх+нууц үг+(PIN+OTPToken)). API-ээр дамжуулан энэ нь SMS илгээх үйлчилгээтэй (LinOTP Config->Provider Config->SMS Provider) нэгтгэгдэж, Google Authentificator гэх мэт гар утасны програмуудад код үүсгэдэг. Энэ нь дээр дурдсан үйлчилгээнээс илүү тохиромжтой гэж би бодож байна нийтлэл.

Энэ сервер нь Cisco ASA, OpenVPN сервер, Apache2, ерөнхийдөө RADIUS серверээр дамжуулан баталгаажуулалтыг дэмждэг бараг бүх зүйлтэй төгс ажилладаг (Жишээ нь, өгөгдлийн төв дэх SSH).

Шаардлагатай бол:

1) Дебиан 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-тэй холбодог.

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

Энэ нь чухал учраас би энд бага зэрэг дэлгэрэнгүй ярих болно:

Сэтгэгдэл бүхий файлын бүрэн тайлбар:
linOTP серверийн #IP (манай LinOTP серверийн IP хаяг)
URL=https://172.17.14.103/validate/simplecheck
#Бидний LinOTP вэб интерфэйс дээр бий болгох хэсэг.)
REALM=rearm1
#LinOTP вэб хошуунд үүсгэсэн хэрэглэгчийн бүлгийн нэр.
RESCONF=хавтгай_файл
#заавал биш: бүх зүйл хэвийн байгаа бол сэтгэгдэл бичээрэй
Дебаг=Үнэн
#заавал биш: Хэрэв танд өөрөө гарын үсэг зурсан гэрчилгээ байгаа бол үүнийг ашиглана уу, эс бөгөөс тайлбар бичээрэй (хэрэв бид өөрийн гэрчилгээг үүсгэж, баталгаажуулахыг хүсвэл 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-г тохируулж байна:

Суурилуулах:

# 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
төрөл=auth
}
сонсох {
ipaddr = *
порт = 1813
төрөл = акт
}
зөвшөөрөх {
урьдчилсан боловсруулалт
шинэчлэх {
&хяналт: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 autenteficator" нүдийг бүү шалгаарай! Тэгвэл QR кодыг унших боломжгүй... (хачирхалтай баримт)

Энэ нийтлэлийг бичихийн тулд дараах нийтлэлүүдийн мэдээллийг ашигласан болно.
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Зохиогчиддоо баярлалаа.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх