LinOTP two-factor authentication server

LinOTP two-factor authentication server

Karon gusto nakong ipaambit kung giunsa ang pag-set up sa usa ka two-factor authentication server aron mapanalipdan ang usa ka corporate network, site, serbisyo, ssh. Ang server modagan sa mosunod nga kombinasyon: LinOTP + FreeRadius.

Nganong gikinahanglan nato kini?
Kini usa ka hingpit nga libre, kombenyente nga solusyon, sulod sa kaugalingon nga network, nga independente sa mga third-party nga provider.

Kini nga serbisyo sayon ​​​​kaayo, medyo makita, dili sama sa ubang mga open source nga produkto, ug nagsuporta usab sa daghang mga function ug mga palisiya (Pananglitan, login+password+(PIN+OTPToken)). Pinaagi sa API, nag-uban kini sa mga serbisyo sa pagpadala sa sms (LinOTP Config->Provider Config->SMS Provider), nagmugna og mga code alang sa mga mobile application sama sa Google Authentificator ug daghan pa. Sa akong hunahuna kini mas kombenyente kaysa sa serbisyo nga gihisgutan sa artikulo.

Kini nga server hingpit nga nagtrabaho sa Cisco ASA, OpenVPN server, Apache2, ug sa kinatibuk-an sa halos tanan nga nagsuporta sa pag-authenticate pinaagi sa usa ka RADIUS server (Pananglitan, alang sa SSH sa data center).

Gikinahanglan kini:

1) Debian 8 (jessie) - Kinahanglan! (Ang pag-instalar sa pagsulay sa debian 9 gihulagway sa katapusan sa artikulo)

Pagsugod:

Pag-instalar sa Debian 8.

Idugang ang LinOTP repository:

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

Pagdugang mga yawe:

# gpg --search-keys 913DFF12F86258E5

Usahay atol sa usa ka "limpyo" nga pag-instalar, human sa pagpadagan niini nga sugo, ang Debian nagpakita:

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

Kini ang inisyal nga gnupg setup. OK ra. Pagdagan lang pag-usab ang mando.
Sa pangutana ni 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) Выход>

Atong tubagon: 1

Sunod:

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

# apt-get update

I-install ang mysql. Sa teorya, mahimo nimong gamiton ang laing sql server, apan alang sa kayano gamiton ko kini ingon nga girekomenda alang sa LinOTP.

(dugang nga impormasyon, lakip na ang pag-configure sa LinOTP database, makita sa opisyal nga dokumentasyon para sa link. Didto makit-an usab nimo ang mando: dpkg-reconfigure linotp aron usbon ang mga parameter kung na-install na nimo ang mysql).

# apt-get install mysql-server

# apt-get update

(dili kini makadaot sa pagsusi pag-usab sa mga update)
I-install ang LinOTP ug dugang nga mga module:

# apt-get install linotp

Gitubag namo ang mga pangutana sa installer:
Gamita ang Apache2: oo
Paghimo og password alang sa admin Linotp: "Imong Password"
Paghimo sa kaugalingon nga gipirmahan nga sertipiko?: oo
Gamita ang MySQL?: oo
Asa nahimutang ang database: localhost
Paghimo ug LinOTP database (base name) sa server: LinOTP2
Paghimo og bulag nga user para sa database: LinOTP2
Nagbutang kami usa ka password alang sa tiggamit: "Imong Password"
Kinahanglan ba ako maghimo usa ka database karon? (usa ka butang sama sa "Sigurado ka nga gusto nimo ..."): oo
Pagsulod sa MySQL root password nga imong gibuhat sa pag-instalar niini: "YourPassword"
Nahimo.

(opsyonal, dili nimo kinahanglan nga i-install kini)

# apt-get install linotp-adminclient-cli 

(opsyonal, dili nimo kinahanglan nga i-install kini)

# apt-get install libpam-linotp  

Ug busa ang among Linotp web interface anaa na karon sa:

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

Maghisgot ako bahin sa mga setting sa web interface sa ulahi.

Karon, ang labing hinungdanon nga butang! Gipataas namo ang FreeRadius ug gisumpay kini sa Linotp.

I-install ang FreeRadius ug module para sa pagtrabaho kauban ang LinOTP

# apt-get install freeradius linotp-freeradius-perl

backup ang kliyente ug Users radius configs.

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

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

Paghimo og walay sulod nga file sa kliyente:

# touch /etc/freeradius/clients.conf

Pag-edit sa among bag-ong config file (ang gi-back up nga config mahimong gamiton isip pananglitan)

# nano /etc/freeradius/clients.conf

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

Sunod, paghimo usa ka file sa mga tiggamit:

# touch /etc/freeradius/users

Among gi-edit ang file, nagsulti sa radius nga among gamiton ang perl para sa pag-authenticate.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Sunod, usba ang file /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Kinahanglan natong itakda ang dalan sa perl linotp script sa module parameter:

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

... ..
Sunod, maghimo kami usa ka file diin giingon namon kung diin (domain, database o file) kuhaon ang datos.

# 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

Moadto ako sa usa ka gamay nga dugang nga detalye dinhi tungod kay kini hinungdanon:

Ang bug-os nga paghulagway sa file nga adunay mga komento:
#IP sa linOTP server (IP address sa among LinOTP server)
URL=https://172.17.14.103/validate/simplecheck
#Ang among lugar nga among himuon sa LinOTP web interface.)
REALM=rearm1
#Ngalan sa grupo sa tiggamit nga gihimo sa LinOTP web muzzle.
RESCONF=flat_file
#opsyonal: pagkomento kung maayo ang tanan
Debug=Tinuod
#opsyonal: gamita kini, kung ikaw adunay kaugalingon nga gipirmahan nga mga sertipiko, kung dili magkomento (SSL kung maghimo kami kaugalingon nga sertipiko ug gusto nimo nga i-verify kini)
SSL_CHECK=Sayop

Sunod, paghimo sa file /etc/freeradius/sites-available/linotp

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

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

Ug kopyaha ang config niini (dili kinahanglan nga i-edit ang bisan unsa):

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
}

Sunod maghimo kami usa ka link sa SIM:

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

Sa personal, gipatay nako ang mga default nga Radius nga mga site, apan kung kinahanglan nimo kini, mahimo nimong usbon ang ilang config o i-disable kini.

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

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

# service freeradius reload

Karon mobalik kita sa nawong sa web ug tan-awon kini sa gamay nga detalye:
Sa ibabaw nga tuo nga suok i-klik ang LinOTP Config -> UserIdResolvers -> Bag-o
Gipili namo ang among gusto: LDAP (AD win, LDAP samba), o SQL, o lokal nga tiggamit sa Flatfile system.

Pun-a ang gikinahanglan nga mga field.

Sunod naghimo kami REALMS:
Sa ibabaw nga tuo nga suok, i-klik ang LinOTP Config -> Realms -> New.
ug hatagi ug ngalan ang among REALMS, ug i-klik usab ang nabuhat kaniadto nga UserIdResolvers.

Ang FreeRadius nagkinahanglan niining tanan nga datos sa /etc/linotp2/rlm_perl.ini nga payl, sama sa akong gisulat mahitungod sa ibabaw, busa kung wala nimo kini usba, buhata kini karon.

Ang server na-configure tanan.

Pagdugang:

Pag-set up sa LinOTP sa Debian 9:

Pag-instalar:

# 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

(sa default, sa Debian 9 mysql (mariaDB) wala magtanyag nga magbutang usa ka root password, siyempre mahimo nimo kini biyaan nga wala’y sulod, apan kung imong basahon ang balita, kini kanunay nga mosangput sa "epic fails", busa ibutang namon kini. bisan pa)

# 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

Idikit ang kodigo (gipadala ni JuriM, salamat kaniya alang niana!):

server linotp {
paminaw {
ipaddr = *
pantalan = 1812
tipo=auth
}
paminaw {
ipaddr = *
pantalan = 1813
tipo = acct
}
pagtugot {
preprocess
update {
&kontrol:Auth-Type:= Perl
}
}
pamatud-an {
Auth-Type Perl {
perl
}
}
accounting {
unix
}
}

I-edit ang /etc/freeradius/3.0/mods-enabled/perl

perl {
ngalan sa file = /usr/share/linotp/radius_linotp.pm
func_authenticate = pamatud-an
function_authorize = pagtugot
}

Ikasubo, sa Debian 9 ang radius_linotp.pm nga librarya wala ma-install gikan sa mga repositoryo, mao nga among kuhaon kini gikan sa 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

karon atong usbon /etc/freeradius/3.0/clients.conf

kliyente server {
ipaddr = 192.168.188.0/24
sekreto = imong password
}

Karon atong itul-id ang nano /etc/linotp2/rlm_perl.ini

Gi-paste namon ang parehas nga code didto sama sa pag-install sa debian 8 (gihulagway sa ibabaw)

kana tanan sumala sa ideya. (wala pa gisulayan)

Magbilin ko sa ubos sa pipila ka mga link sa pag-set up sa mga sistema nga kasagarang kinahanglang protektahan gamit ang two-factor authentication:
Pag-set up sa two-factor authentication sa Apache2

Pag-setup sa Cisco ASA(Lain nga server sa henerasyon sa token ang gigamit didto, apan ang mga setting sa ASA mismo parehas).

VPN nga adunay two-factor authentication

kausaban duha ka hinungdan nga panghimatuud sa ssh (Ang LinOTP gigamit usab didto) - salamat sa tagsulat. Didto makit-an usab nimo ang makapaikag nga mga butang bahin sa pag-set up sa mga palisiya sa LiOTP.

Usab, ang cms sa daghang mga site nagsuporta sa duha ka hinungdan nga panghimatuud (Alang sa WordPress, ang LinOTP bisan adunay kaugalingon nga espesyal nga module alang sa github), pananglitan, kung gusto nimo maghimo ug protektadong seksyon sa imong corporate website para sa mga empleyado sa kompanya.
IMPORTANTE NGA KAMATUORAN! AYAW susiha ang kahon nga “Google autenteficator” aron magamit ang Google Authenticator! Ang QR code dili mabasa unya ... (katingad-an nga kamatuoran)

Sa pagsulat niini nga artikulo, ang impormasyon gikan sa mosunod nga mga artikulo gigamit:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Salamat sa mga tagsulat.

Source: www.habr.com

Idugang sa usa ka comment