LinOTP-tweefaktor-verifikasiebediener

LinOTP-tweefaktor-verifikasiebediener

Vandag wil ek deel hoe om 'n twee-faktor-verifikasiebediener op te stel om die korporatiewe netwerk, werwe, dienste, ssh te beskerm. Die skakel sal op die bediener werk: LinOTP + FreeRadius.

Hoekom het hy ons nodig?
Dit is 'n heeltemal gratis, gerieflike oplossing binne jou netwerk, onafhanklik van derdeparty-verskaffers.

Hierdie diens is baie gerieflik, redelik visueel, anders as ander oopbronprodukte, en ondersteun ook 'n groot aantal funksies en beleide (Byvoorbeeld, login+wagwoord+(PIN+OTPToken)). Deur die API integreer dit met sms-stuurdienste (LinOTP Config->Provider Config->SMS Provider), genereer kodes vir mobiele toepassings soos Google Autentificator en nog baie meer. Ek dink dit is geriefliker as die diens wat in ag geneem word Artikel.

Hierdie bediener werk goed met Cisco ASA, OpenVPN-bediener, Apache2, en inderdaad met byna alles wat stawing via 'n RADIUS-bediener ondersteun (Byvoorbeeld vir SSH na die datasentrum).

vereis:

1) Debian 8 (jessie) - Nodig! (proefinstallasie op debian 9 word aan die einde van die artikel beskryf)

Tuis:

Installeer Debian 8.

Voeg die LinOTP-bewaarplek by:

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

Voeg sleutels by:

# gpg --search-keys 913DFF12F86258E5

Soms op 'n skoon installasie, nadat hierdie opdrag uitgevoer is, gee Debian probleme:

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

Dit is die aanvanklike gnupg-opstelling. Dit is OK. Voer net die opdrag weer uit.
Op Debian se vraag:

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

antwoord: 1

Volgende:

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

# apt-get update

Installeer mysql. In teorie kan jy 'n ander sql-bediener gebruik, maar vir eenvoud sal ek dit gebruik soos aanbeveel vir LinOTP.

(Bykomende inligting, insluitend die herkonfigurasie van die LinOTP-databasis, kan gevind word in die amptelike dokumentasie vir skakel. Op dieselfde plek kan u die opdrag vind: dpkg-reconfigure linotp om die instellings te verander as u mysql reeds geïnstalleer het).

# apt-get install mysql-server

# apt-get update

(Dit maak nie seer om weer vir opdaterings te kyk nie)
Installeer LinOTP en bykomende modules:

# apt-get install linotp

Ons beantwoord die vrae van die installeerder:
Gebruik Apache2: ja
Skep 'n wagwoord vir admin Linotp: "YourPassword"
Genereer self-ondertekende sertifikaat?: ja
Gebruik MySQL?: ja
Waar is die databasis geleë: localhost
Skep 'n LinOTP-databasis (basisnaam) op die bediener: LinOTP2
Skep 'n aparte gebruiker vir die databasis: LinOTP2
Stel die wagwoord vir die gebruiker: "YourPassword"
Moet ek nou 'n basis skep? (iets soos “Is jy seker jy wil...”): ja
Voer die MySQL-wortelwagwoord in wat jy tydens installasie geskep het: "YourPassword"
Gedoen.

(opsioneel, jy kan nie plaas nie)

# apt-get install linotp-adminclient-cli 

(opsioneel, jy kan nie plaas nie)

# apt-get install libpam-linotp  

En dus is ons Linotp-webkoppelvlak nou beskikbaar by:

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

Ek sal 'n bietjie later oor die instellings in die webkoppelvlak praat.

Nou, die belangrikste ding! Verhoog FreeRadius en koppel dit aan Linotp.

Installeer FreeRadius en die LinOTP-module

# apt-get install freeradius linotp-freeradius-perl

rugsteun die kliënt- en gebruikerskonfigurasies van die radius.

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

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

Skep 'n leë kliëntlêer:

# touch /etc/freeradius/clients.conf

Redigeer ons nuwe konfigurasielêer (gerugsteunde konfigurasie kan as voorbeeld gebruik word)

# nano /etc/freeradius/clients.conf

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

Skep dan die gebruikerslêer:

# touch /etc/freeradius/users

Ons wysig die lêer en vertel die radius dat ons perl sal gebruik vir verifikasie.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Redigeer dan die lêer /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Ons moet die pad na die linotp perl script in die module parameter stel:

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

... ..
Vervolgens skep ons 'n lêer waarin ons sê van watter (domein, databasis of lêer) om data te neem.

# 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

Hier sal ek 'n bietjie meer stilstaan, want dit is belangrik:

Volledige beskrywing van die lêer met opmerkings:
#IP van die linotp-bediener (IP-adres van ons LinOTP-bediener)
URL=https://172.17.14.103/validate/simplecheck
#Ons area wat ons in die LinOTP-webkoppelvlak sal skep.)
REALM=herarm1
#Naam van die gebruikersgroep wat in die LinOTP-webmord geskep is.
RESCONF=plat_lêer
#opsioneel: lewer kommentaar as alles goed lyk
Debug=Waar
#opsioneel: gebruik dit as jy selfgetekende sertifikate het, andersins maak kommentaar (SSL as ons ons eie sertifikaat skep en dit wil verifieer)
SSL_CHECK=Onwaar

Skep dan die lêer /etc/freeradius/sites-available/linotp

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

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

En kopieer die konfigurasie daarin (niks hoef geredigeer te word nie):

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
}

Vervolgens sal ons 'n sim-skakel maak:

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

Persoonlik maak ek die verstek radius-webwerwe dood, maar as jy dit nodig het, kan jy óf hul konfigurasie wysig óf hulle deaktiveer.

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

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

# service freeradius reload

Kom ons gaan nou terug na die websnuit en kyk in 'n bietjie meer detail daarna:
Klik in die regter boonste hoek LinOTP Config -> UserIdResolvers -> New
Ons kies wat ons wil hê: LDAP (AD win, LDAP samba), of SQL, of plaaslike gebruikers van die Flatfile-stelsel.

Vul die vereiste velde in.

Vervolgens skep ons REALMS:
Klik in die regter boonste hoek LinOTP Config -> Realms -> New.
en gee 'n naam aan ons REALMS, en klik ook op die UserIdResolvers wat vroeër geskep is.

Al hierdie data word benodig deur freeRadius in die /etc/linotp2/rlm_perl.ini-lêer, waaroor ek hierbo geskryf het, so as jy dit nie toe gewysig het nie, doen dit nou.

Alle bedieners is gekonfigureer.

vul:

Die opstel van LinOTP op Debian 9:

Kader:

# 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

(by verstek, in Debian 9 bied mysql (mariaDB) nie aan om 'n root wagwoord te stel nie, natuurlik kan jy dit leeg laat, maar as jy die nuus lees, lei dit dikwels tot "epiese mislukkings", so ons sal dit steeds stel )

# 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

Plak die kode (gestuur deur JuriM, dankie daarvoor!):

bediener linotp {
luister {
ipaddr=*
poort = 1812
tipe = auth
}
luister {
ipaddr=*
poort = 1813
tipe = acct
}
magtig {
voorverwerk
Opdateer {
&control:Auth-Type := Perl
}
}
staaf {
Auth-Type Perl {
perl
}
}
Rekeningkunde {
unix
}
}

Wysig /etc/freeradius/3.0/mods-enabled/perl

perl {
lêernaam = /usr/share/linotp/radius_linotp.pm
func_authenticate = verifieer
func_authorize = magtig
}

Ongelukkig, in debian 9, is die radius_linotp.pm-biblioteek nie vanaf die bewaarplekke geïnstalleer nie, so ons sal dit vanaf github neem.

# 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

kom ons maak nou /etc/freeradius/3.0/clients.conf reg

kliënt bedieners {
ipaddr = 192.168.188.0/24
geheim = jou wagwoord
}

kom ons maak nou nano /etc/linotp2/rlm_perl.ini reg

Ons plak dieselfde kode daar as wanneer ons op debian 8 installeer (hierbo beskryf)

op die idee van alles. (nog nie getoets nie)

Ek sal hieronder 'n paar skakels laat om stelsels op te stel wat meestal deur tweefaktormagtiging beskerm moet word:
Stel twee-faktor-verifikasie op in Apache2

Konfigurasie met Cisco ASA(dit gebruik 'n ander tekengenerasiebediener, maar die instellings van die ASA self is dieselfde).

VPN met twee-faktor-verifikasie

aanpassing twee faktor verifikasie in ssh (LinOTP word ook daar gebruik) - te danke aan die skrywer. Daar kan u ook interessante dinge vind oor die opstel van LiOTP-beleide.

Ook, cms van baie werwe ondersteun twee-faktor-verifikasie (Vir WordPress het LinOTP selfs sy eie spesiale module op Github), byvoorbeeld, as jy 'n veilige afdeling vir maatskappywerknemers op jou korporatiewe webwerf wil maak.
BELANGRIKE FEIT! MOENIE die "Google Authenticator"-blokkie merk om Google Authenticator te gebruik nie! Die QR-kode is dan nie leesbaar nie ... (vreemde feit)

Inligting uit die volgende artikels is gebruik om die artikel te skryf:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Dankie aan die skrywers.

Bron: will.com

Voeg 'n opmerking