Pêşkêşkara rastkirina du-faktorê LinOTP

Pêşkêşkara rastkirina du-faktorê LinOTP

Îro ez dixwazim parve bikim ka meriv çawa serverek pejirandina du-faktorî saz dike da ku tora pargîdanî, malper, karûbar, ssh biparêze. Pêşkêşkar dê kombînasyona jêrîn bimeşîne: LinOTP + FreeRadius.

Çima em hewce ne?
Ev çareseriyek bi tevahî belaş, hêsan e, di nav tora xwe de, ji pêşkêşkerên sêyemîn serbixwe.

Ev karûbar pir hêsan e, pir dîtbar e, berevajî hilberên din ên çavkaniya vekirî ye, û di heman demê de hejmareke mezin ji fonksiyon û polîtîkayan jî piştgirî dike (Mînakî, têketin + şîfre + (PIN + OTPToken)). Bi navgîniya API-ê, ew bi karûbarên şandina sms-ê (LinOTP Config->Pêşkêşkera Pêşkêşkar->Pêşkêşkera SMS-ê) re dike yek, ji bo serîlêdanên mobîl ên wekî Google Authentificator û hêj bêtir kodan çêdike. Ez difikirim ku ew ji karûbarê ku tê de hatî nîqaş kirin hêsantir e gotara.

Ev server bi Cisco ASA, servera OpenVPN, Apache2, û bi gelemperî bi hema hema her tiştê ku piştrastkirina bi navgîniya serverek RADIUS re piştgirî dike (Mînakî, ji bo SSH di navenda daneyê de) re bêkêmasî dixebite.

Pêdivî ye:

1) Debian 8 (jessie) - Necessarily! (sazkirina ceribandinê ya li ser debian 9 di dawiya gotarê de tête diyar kirin)

Destpêkirin:

Sazkirina Debian 8.

Depoya LinOTP zêde bikin:

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

Zêdekirina keys:

# gpg --search-keys 913DFF12F86258E5

Carinan di dema sazkirina "paqij" de, piştî xebitandina vê fermanê, Debian nîşan dide:

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

Ev sazkirina gnupg ya destpêkê ye. Başe. Tenê fermanê dîsa bimeşînin.
Ji bo pirsa 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) Выход>

Em bersiv didin: 1

Next:

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

# apt-get update

Mysql saz bikin. Di teoriyê de, hûn dikarin serverek din a sql bikar bînin, lê ji bo sadebûnê ez ê wekî ku ji bo LinOTP tê pêşniyar kirin bikar bînim.

(agahiyên zêde, tevî veavakirina databasa LinOTP, dikare di belgeya fermî de were dîtin ji bo link. Li wir hûn dikarin fermanê jî bibînin: dpkg-linotp ji nû ve mîheng bike ku heke we berê mysql saz kiriye, parametreyan biguhezîne.

# apt-get install mysql-server

# apt-get update

(Zêra nabe ku hûn nûvekirinan dîsa kontrol bikin)
LinOTP û modulên din saz bikin:

# apt-get install linotp

Em bersiva pirsên sazkerê didin:
Apache2 bikar bînin: erê
Ji bo rêveberê Linotp şîfreyek çêbikin: "Şîfreya we"
Sertîfîkaya xwe-îmzakirî biafirîne?: erê
MySQL bikar bînin?: erê
Database li ku ye: localhost
Li ser serverê databasek LinOTP (navê bingehîn) biafirînin: LinOTP2
Ji bo databasê bikarhênerek cuda biafirînin: LinOTP2
Me şîfreyek ji bikarhêner re destnîşan kir: "Şîfreya we"
Ma ez niha databasek biafirînim? (tiştek mîna "Ma hûn guman dikin ku hûn dixwazin ..."): erê
Şîfreya root ya MySQL ya ku we dema sazkirina wê afirandiye binivîse: "Password"
Çêbû.

(vebijarkî, hûn ne hewce ne ku wê saz bikin)

# apt-get install linotp-adminclient-cli 

(vebijarkî, hûn ne hewce ne ku wê saz bikin)

# apt-get install libpam-linotp  

Ji ber vê yekê navbeynkariya weba me Linotp naha li vir heye:

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

Ez ê hinekî paşê li ser mîhengên di navgîniya malperê de biaxivim.

Niha, ya herî girîng! Em FreeRadius bilind dikin û wê bi Linotp ve girêdidin.

Ji bo xebata bi LinOTP re FreeRadius û modul saz bikin

# apt-get install freeradius linotp-freeradius-perl

veavakirina xerîdar û radiusa Bikarhêner hilanînê.

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

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

Pelê xerîdarek vala biafirînin:

# touch /etc/freeradius/clients.conf

Guhertina pelê mîhengê meya nû (veavakirina piştgir dikare wekî mînak were bikar anîn)

# nano /etc/freeradius/clients.conf

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

Piştre, pelê bikarhênerek çêbikin:

# touch /etc/freeradius/users

Em pelê diguherînin, ji radiusê re dibêjin ku em ê perl ji bo pejirandinê bikar bînin.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Piştre, pelê biguherînin /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Pêdivî ye ku em di pîvana modulê de riya bernivîsa perl linotp diyar bikin:

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

... ..
Dûv re, em pelek diafirînin ku tê de em dibêjin (domîn, databas an pel) daneyan ji kîjanê bigirin.

# 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

Ez ê li vir hinekî hûrgulî biçim ji ber ku girîng e:

Danasîna tevahî ya pelê bi şîroveyan:
#IP-ya servera linOTP (navnîşa IP-ya servera meya LinOTP)
URL=https://172.17.14.103/validate/simplecheck
#Herêma me ya ku em ê di navgîniya webê ya LinOTP de biafirînin.)
REALM=piştgir1
#Navê grûpa bikarhêner a ku di pelika tevna LinOTP de hatî çêkirin.
RESCONF=pel_flat
#vebijarkî: heke her tişt baş xuya dike şîrove bike
Debug=Rast
#vebijarkî: vê yekê bikar bînin, heke we sertîfîkayên xwe-îmzakirî hene, wekî din şîrove bikin (SSL heke em sertîfîkaya xwe biafirînin û bixwazin wê verast bikin)
SSL_CHECK=Derew

Piştre, pelê /etc/freeradius/sites-available/linotp biafirînin

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

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

Û konfigurasyonê li wê kopî bikin (ne hewce ye ku tiştek biguherînin):

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
}

Piştre em ê girêdanek SIM-ê çêbikin:

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

Bi kesane, ez malperên Radiusê yên xwerû dikujim, lê heke hûn hewceyê wan bin, hûn dikarin konfigurasyona wan biguherînin an wan neçalak bikin.

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

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

# service freeradius reload

Naha em vegerin ser rûyê webê û bi hûrgulî lê binihêrin:
Li goşeya rastê ya jorîn bikirtînin LinOTP Config -> UserIdResolvers -> Nû
Em tiştê ku em dixwazin hilbijêrin: LDAP (serkeftina AD, samba LDAP), an SQL, an bikarhênerên herêmî yên pergala Flatfile.

Zeviyên pêwîst dagirin.

Piştre em REALMS ava dikin:
Li quncika jorîn a rastê, bikirtînin LinOTP Config -> Realms -> Nû.
û navek bidin REALMSên me, û her weha li ser UserIdResolvers-ên ku berê hatine afirandin bikirtînin.

FreeRadius hewceyê van hemî daneyan di pelê /etc/linotp2/rlm_perl.ini de ye, wekî ku min li jor nivîsand, ji ber vê yekê heke we wê hingê weguhast nekir, nuha bikin.

Pêşkêşkar hemî mîheng kirin.

Addition:

Li Debian 9-ê LinOTP saz kirin:

Installation:

# 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

(bi xwerû, di Debian 9 de mysql (mariaDB) pêşkêşî danîna şîfreyek root nake, bê guman hûn dikarin wê vala bihêlin, lê heke hûn nûçeyan bixwînin, ev pir caran dibe sedema "serkeftina epîk", ji ber vê yekê em ê saz bikin. herçi jî)

# 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

Kodê bişînin (ji hêla JuriM ve hatî şandin, spas ji bo wî!):

server linotp {
guhdarî bike {
ipaddr = *
port = 1812
type=auth
}
guhdarî bike {
ipaddr = *
port = 1813
cure = acct
}
destûr kirin {
pêşdibistanê
nûvekirin {
&control:Auth-Type := Perl
}
}
rastkirin {
Auth-Type Perl {
perl
}
}
hesabkirin {
unix
}
}

Biguherîne /etc/freeradius/3.0/mods-enabled/perl

perl {
navê pelê = /usr/share/linotp/radius_linotp.pm
func_authenticate = verastkirin
func_autorize = destûr
}

Mixabin, di Debian 9 de pirtûkxaneya radius_linotp.pm ji depoyan nehatiye saz kirin, ji ber vê yekê em ê wê ji github bistînin.

# 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

niha em /etc/freeradius/3.0/clients.conf biguherînin

pêşkêşkerên xerîdar {
ipaddr = 192.168.188.0/24
veşartî = şîfreya te
}

Naha em nano /etc/linotp2/rlm_perl.ini rast bikin

Em heman kodê li wir wekî gava ku li ser debian 8 saz dikin (li jor hatî diyar kirin) vedişêrin

ev hemû li gorî ramanê ye. (hîn nehatiye ceribandin)

Ez ê li jêr çend lînkan li ser sazkirina pergalên ku pir caran hewce ne ku bi piştrastkirina du-faktorî werin parastin bihêlim:
Sazkirina erêkirina du-faktorî tê de Apache2

Sazkirina bi Cisco ASA(serverek nifşek nîşanek cûda li wir tê bikar anîn, lê mîhengên ASA bixwe yek in).

VPN bi erêkirina du-faktorî

ligorî piştrastkirina du faktoran di ssh de (LinOTP jî li wir tê bikaranîn) - spas ji nivîskar re. Li wir hûn dikarin di derbarê sazkirina polîtîkayên LiOTP de tiştên balkêş jî bibînin.

Di heman demê de, cms-ya gelek malperan piştgirî dide rastkirina du-faktorî (Ji bo WordPress, LinOTP tewra modula xweya taybetî heye ji bo github), Mînakî, heke hûn dixwazin li ser malpera pargîdaniya xwe ji bo karmendên pargîdaniyê beşek parastî çêbikin.
RASTIYA GIRÎNG! Ji bo ku Google Authenticator bikar bînin qutiya "Google autenteficator" kontrol nekin! Wê hingê koda QR nayê xwendin ... (rastiyek ecêb)

Ji bo nivîsandina vê gotarê, agahdariya ji gotarên jêrîn hatine bikar anîn:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Spas ji bo nivîskaran.

Source: www.habr.com

Add a comment