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
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
# 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
aanpassing
Ook, cms van baie werwe ondersteun twee-faktor-verifikasie (Vir WordPress het LinOTP selfs sy eie spesiale module op
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:
Dankie aan die skrywers.
Bron: will.com