LinOTP server auténtikasi dua-faktor

LinOTP server auténtikasi dua-faktor

Dinten abdi hoyong bagikeun kumaha nyetél server auténtikasi dua-faktor ngajaga jaringan perusahaan, situs, jasa, ssh. Server bakal ngajalankeun kombinasi ieu: LinOTP + FreeRadius.

Naha urang peryogi eta?
Ieu leyuran lengkep gratis, merenah, dina jaringan sorangan, bebas tina panyadia pihak katilu.

Ladenan ieu pohara merenah, cukup visual, teu kawas produk open source séjén, sarta ogé ngarojong sajumlah badag fungsi jeung kawijakan (Contona, login + sandi + (PIN + OTPToken)). Ngaliwatan API, éta integrates jeung jasa ngirim sms (LinOTP Config->Panyadia Config->SMS Provider), dibangkitkeun kode pikeun aplikasi mobile kayaning Google Authentificator jeung leuwih. Jigana éta leuwih merenah ti jasa dibahas dina artikel.

server Ieu jalan sampurna kalawan Cisco ASA, OpenVPN server, Apache2, sarta sacara umum kalawan ampir sagalana nu ngarojong auténtikasi via server RADIUS (Contona, pikeun SSH di puseur data).

Dikeukeun pisan:

1) Debian 8 (jessie) - kuduna! (instalasi percobaan dina debian 9 dijelaskeun dina tungtung tulisan)

Mimitian:

Pasang Debian 8.

Tambahkeun gudang LinOTP:

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

Nambihan konci:

# gpg --search-keys 913DFF12F86258E5

Kadang-kadang nalika pamasangan "bersih", saatos ngajalankeun paréntah ieu, Debian nunjukkeun:

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

Ieu mangrupikeun setélan gnupg awal. Henteu kunanaon. Ngan ngajalankeun paréntah deui.
Pikeun patarosan 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) Выход>

Urang ngajawab: 1

salajengna:

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

# apt-get update

Pasang mysql. Dina tiori, anjeun tiasa nganggo sql server sejen, tapi pikeun kesederhanaan kuring bakal make eta sakumaha dianjurkeun pikeun LinOTP.

(inpormasi tambahan, kalebet konfigurasi ulang pangkalan data LinOTP, tiasa dipendakan dina dokuméntasi resmi pikeun link. Aya anjeun ogé tiasa mendakan paréntah: dpkg-reconfigure linotp pikeun ngarobih parameter upami anjeun parantos dipasang MySQL).

# apt-get install mysql-server

# apt-get update

(moal aya salahna pikeun pariksa apdet deui)
Pasang LinOTP sareng modul tambahan:

# apt-get install linotp

Urang ngajawab patarosan installer urang:
Paké Apache2: enya
Jieun kecap akses pikeun admin Linotp: "Sandi anjeun"
Ngahasilkeun sertipikat ditandatanganan sorangan?: enya
Paké MySQL?: enya
Dimana lokasina database: localhost
Jieun database LinOTP (ngaran dasar) dina server: LinOTP2
Jieun pamaké misah pikeun database: LinOTP2
Kami nyetél kecap konci pikeun pangguna: "Sandi anjeun"
Naha kuring kudu nyieun database ayeuna? (hal kawas "Naha anjeun yakin rék ..."): enya
Lebetkeun kecap akses root MySQL anu anjeun damel nalika masang: "YourPassword"
Rengse.

(opsional, anjeun henteu kedah pasang)

# apt-get install linotp-adminclient-cli 

(opsional, anjeun henteu kedah pasang)

# apt-get install libpam-linotp  

Janten antarmuka wéb Linotp kami ayeuna sayogi di:

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

Kuring gé ngobrol ngeunaan setélan dina panganteur web saeutik engké.

Ayeuna, anu paling penting! Kami ngangkat FreeRadius sareng ngaitkeun sareng Linotp.

Pasang FreeRadius sareng modul pikeun damel sareng LinOTP

# apt-get install freeradius linotp-freeradius-perl

nyadangkeun konfigurasi radius klien sareng Pamaké.

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

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

Jieun file klien kosong:

# touch /etc/freeradius/clients.conf

Ngédit file konfigurasi anyar kami (konfigurasi anu dicadangkeun tiasa dianggo salaku conto)

# nano /etc/freeradius/clients.conf

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

Salajengna, jieun file pamaké:

# touch /etc/freeradius/users

Kami ngédit file, nyarioskeun radius yén kami bakal nganggo perl pikeun auténtikasi.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Salajengna, edit file /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Urang kedah netepkeun jalur ka skrip perl linotp dina parameter modul:

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

... ..
Salajengna, urang nyieun file nu urang nyebutkeun mana (domain, database atawa file) pikeun nyokot data ti.

# 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

Abdi badé langkung rinci di dieu sabab éta penting:

Katerangan lengkep ngeunaan file kalayan koméntar:
#IP tina server linOTP (alamat IP tina server LinOTP kami)
URL = https://172.17.14.103/validate/simplecheck
#Wewengkon kami anu bakal urang jieun dina antarmuka wéb LinOTP.)
REALM = rearm1
#Nami grup pangguna anu didamel dina muzzle wéb LinOTP.
RESCONF = file_datar
#opsional: mairan kaluar lamun sagalana sigana dianggo rupa
Debug = Leres
#opsional: anggo ieu, upami anjeun gaduh sertipikat anu ditandatanganan nyalira, upami henteu mairan (SSL upami urang nyiptakeun sertipikat sorangan sareng hoyong pariksa éta)
SSL_CHECK=Palsu

Salajengna, jieun file /etc/freeradius/sites-available/linotp

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

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

Sareng salin config ka dinya (teu kedah ngédit nanaon):

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
}

Salajengna urang bakal nyieun link SIM:

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

Pribadi, kuring maéhan situs Radius standar, tapi upami anjeun peryogina, anjeun tiasa ngédit konfigurasina atanapi nganonaktipkeunana.

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

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

# service freeradius reload

Ayeuna hayu urang balik deui ka raray wéb sareng tingali dina langkung rinci:
Di pojok katuhu luhur klik LinOTP Config -> UserIdResolvers -> New
Urang milih naon anu dipikahoyong: LDAP (AD win, LDAP samba), atanapi SQL, atanapi pangguna lokal tina sistem Flatfile.

Eusian widang nu diperlukeun.

Salajengna urang nyieun REALMS:
Di pojok katuhu luhur, klik LinOTP Config -> Realms -> New.
sarta méré ngaran ka REALMS kami, sarta ogé klik dina UserIdResolvers dijieun saméméhna.

FreeRadius peryogi sadaya data ieu dina file /etc/linotp2/rlm_perl.ini, sakumaha anu kuring nyerat di luhur, janten upami anjeun henteu ngédit éta, lakukeun ayeuna.

server ieu sadayana ngonpigurasi.

Bubuhan:

Nyetél LinOTP dina Debian 9:

Pamasangan:

# 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

(sacara standar, dina Debian 9 mysql (mariaDB) henteu nawiskeun nyetél kecap konci akar, tangtosna anjeun tiasa ngantepkeun kosong, tapi upami anjeun maca warta, ieu sering nyababkeun "epik gagal", janten kami bakal nyetél éta. atoh)

# 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

Témpélkeun kodeu (dikirim ku JuriM, hatur nuhun pikeun anjeunna!):

server linotp {
ngadangukeun {
ipaddr = *
palabuhan = 1812
tipe=auth
}
ngadangukeun {
ipaddr = *
palabuhan = 1813
tipe = acct
}
otorisasi {
praprosés
update {
& kontrol:Auth-Tipe: = Perl
}
}
ngaoténtikasi {
Auth-Type Perl {
perl
}
}
akuntansi {
Unix
}
}

Édit /etc/freeradius/3.0/mods-enabled/perl

perl {
Ngaran koropak = /usr/share/linotp/radius_linotp.pm
func_authenticate = ngabuktoskeun kaaslianana
func_authorize = ngawenangkeun
}

Hanjakalna, dina Debian 9 perpustakaan radius_linotp.pm henteu dipasang tina repositori, janten kami bakal nyandak tina 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

ayeuna hayu urang ngédit /etc/freeradius/3.0/clients.conf

server klien {
ipaddr = 192.168.188.0/24
rusiah = sandi anjeun
}

Ayeuna hayu urang ngabenerkeun nano /etc/linotp2/rlm_perl.ini

Kami nempelkeun kodeu anu sami sareng nalika masang debian 8 (dijelaskeun di luhur)

éta sadayana nurutkeun pamanggih. (teu acan diuji)

Kuring bakal ngantepkeun sababaraha tautan di handap pikeun nyetél sistem anu paling sering kedah dijagi ku auténtikasi dua faktor:
Nyetel auténtikasi dua-faktor di Apache2

Setup kalawan Cisco ASA(Server generasi token béda dipaké aya, tapi setélan ASA sorangan sarua).

VPN sareng auténtikasi dua faktor

carana ngatur auténtikasi dua faktor di ssh (LinOTP ogé dianggo di dinya) - hatur nuhun ka panulis. Aya anjeun ogé tiasa mendakan hal anu pikaresepeun ngeunaan nyetél kawijakan LiOTP.

Ogé, cms tina seueur situs ngadukung auténtikasi dua faktor (Pikeun WordPress, LinOTP bahkan gaduh modul khusus sorangan pikeun github), contona, upami anjeun hoyong ngadamel bagian anu ditangtayungan dina halaman wéb perusahaan anjeun pikeun karyawan perusahaan.
FAKTA PENTING! ULAH mariksa kotak "Google autenteficator" pikeun ngagunakeun Google Authenticator! QR codena teu bisa dibaca... (fakta aneh)

Pikeun nulis artikel ieu, informasi tina artikel di handap ieu dipaké:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Hatur nuhun ka pangarang.

sumber: www.habr.com

Tambahkeun komentar