LinOTP-dufaktora aŭtentikigservilo

LinOTP-dufaktora aŭtentikigservilo

Hodiaŭ mi volas dividi kiel agordi dufaktoran aŭtentikigservilon por protekti kompanian reton, retejojn, servojn, ssh. La servilo funkcios la sekvan kombinaĵon: LinOTP + FreeRadius.

Kial ni bezonas ĝin?
Ĉi tio estas tute senpaga, oportuna solvo, ene de sia propra reto, sendependa de triaj provizantoj.

Ĉi tiu servo estas tre oportuna, sufiĉe vida, male al aliaj malfermkodaj produktoj, kaj ankaŭ subtenas grandegan nombron da funkcioj kaj politikoj (Ekzemple, ensaluto+pasvorto+(PIN+OTPToken)). Per la API, ĝi integriĝas kun sms-sendservoj (LinOTP Config->Provider Config->SMS Provider), generas kodojn por moveblaj aplikoj kiel Google Authentificator kaj multe pli. Mi pensas, ke ĝi estas pli oportuna ol la priparolata servo en artikolo.

Ĉi tiu servilo funkcias perfekte kun Cisco ASA, OpenVPN-servilo, Apache2, kaj ĝenerale kun preskaŭ ĉio, kio subtenas aŭtentikigon per RADIUS-servilo (Ekzemple por SSH en la datumcentro).

Bezonata:

1) Debian 8 (jessie) - Necese! (prova instalado sur debian 9 estas priskribita ĉe la fino de la artikolo)

Komenco:

Instalante Debian 8.

Aldonu la deponejon LinOTP:

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

Aldonante ŝlosilojn:

# gpg --search-keys 913DFF12F86258E5

Foje dum "pura" instalado, post rulado de ĉi tiu komando, Debian montras:

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

Ĉi tio estas la komenca agordo de gnupg. Estas bone. Nur rulu la komandon denove.
Al la demando de 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) Выход>

Ni respondas: 1

Sekva:

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

# apt-get update

Instalu mysql. En teorio, vi povas uzi alian sql-servilon, sed por simpleco mi uzos ĝin kiel rekomendite por LinOTP.

(pliaj informoj, inkluzive de reagordo de la datumbazo LinOTP, troveblas en la oficiala dokumentaro por ligilo. Tie vi ankaŭ povas trovi la komandon: dpkg-reconfigure linotp por ŝanĝi parametrojn se vi jam instalis mysql).

# apt-get install mysql-server

# apt-get update

(Ne malutilus kontroli la ĝisdatigojn denove)
Instalu LinOTP kaj kromajn modulojn:

# apt-get install linotp

Ni respondas la demandojn de la instalilo:
Uzu Apache2: jes
Kreu pasvorton por administranto Linotp: "Via Pasvorto"
Ĉu krei memsubskribitan atestilon?: jes
Ĉu uzi MySQL?: jes
Kie troviĝas la datumbazo: localhost
Kreu LinOTP-datumbazon (baza nomo) sur la servilo: LinOTP2
Kreu apartan uzanton por la datumbazo: LinOTP2
Ni fiksas pasvorton por la uzanto: "Via Pasvorto"
Ĉu mi nun kreu datumbazon? (io kiel “Ĉu vi certe volas...”): jes
Enigu la radikan pasvorton de MySQL, kiun vi kreis dum ĝi instalis: "YourPassword"
Farita.

(laŭvola, vi ne devas instali ĝin)

# apt-get install linotp-adminclient-cli 

(laŭvola, vi ne devas instali ĝin)

# apt-get install libpam-linotp  

Kaj do nia Linotp-interfaco nun haveblas ĉe:

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

Pri la agordoj en la retinterfaco mi parolos iom poste.

Nun, la plej grava afero! Ni levas FreeRadius kaj ligas ĝin kun Linotp.

Instalu FreeRadius kaj modulon por labori kun LinOTP

# apt-get install freeradius linotp-freeradius-perl

rezerva la kliento kaj Uzantoj radius agordojn.

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

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

Kreu malplenan klientdosieron:

# touch /etc/freeradius/clients.conf

Redaktante nian novan agordosieron (la subtenita agordo povas esti uzata kiel ekzemplo)

# nano /etc/freeradius/clients.conf

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

Poste, kreu uzantdosieron:

# touch /etc/freeradius/users

Ni redaktas la dosieron, dirante al radius, ke ni uzos perl por aŭtentigo.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Poste, redaktu la dosieron /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Ni devas specifi la vojon al la perl linotp-skripto en la modula parametro:

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

... ..
Poste ni kreas dosieron, en kiu ni diras de kiu (domajno, datumbazo aŭ dosiero) preni la datumojn.

# 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

Mi eniros iom pli da detaloj ĉi tie ĉar ĝi estas grava:

Plena priskribo de la dosiero kun komentoj:
#IP de la linOTP-servilo (IP-adreso de nia LinOTP-servilo)
URL=https://172.17.14.103/validate/simplecheck
#Nia areo, kiun ni kreos en la interfaco LinOTP.)
REALM=rearmi1
#Nomo de la uzantgrupo, kiu estas kreita en la TTT-muzelo LinOTP.
RESCONF=plata_dosiero
#laŭvola: komentu se ĉio ŝajnas funkcii bone
Sencimigi=Vere
#laŭvola: uzu ĉi tion, se vi havas memsubskribitajn atestilojn, alie komentu (SSL se ni kreas nian propran atestilon kaj volas kontroli ĝin)
SSL_CHECK=Malvera

Poste, kreu la dosieron /etc/freeradius/sites-available/linotp

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

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

Kaj kopiu la agordon en ĝi (ne bezonas redakti ion):

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
}

Poste ni kreos SIM-ligon:

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

Persone, mi mortigas defaŭltajn Radius-ejojn, sed se vi bezonas ilin, vi povas aŭ redakti ilian agordon aŭ malŝalti ilin.

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

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

# service freeradius reload

Nun ni revenu al la retejo kaj rigardu ĝin iom pli detale:
En la supra dekstra angulo alklaku LinOTP Config -> UserIdResolvers -> Nova
Ni elektas kion ni volas: LDAP (AD win, LDAP samba), aŭ SQL, aŭ lokaj uzantoj de la Flatfile-sistemo.

Plenigu la postulatajn kampojn.

Poste ni kreas REALMS:
En la supra dekstra angulo, alklaku LinOTP Config -> Realms -> New.
kaj donu nomon al niaj REALMS, kaj ankaŭ alklaku la antaŭe kreitajn UserIdResolvers.

FreeRadius bezonas ĉiujn ĉi tiujn datumojn en la dosiero /etc/linotp2/rlm_perl.ini, kiel mi skribis supre, do se vi ne redaktis ĝin tiam, faru ĝin nun.

La servilo estas tute agordita.

Aldono:

Agordante LinOTP sur Debian 9:

Instalado:

# 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

(defaŭlte, en Debian 9 mysql (mariaDB) ne proponas agordi radikan pasvorton, kompreneble vi povas lasi ĝin malplena, sed se vi legas la novaĵojn, tio tre ofte kondukas al "epopeaj malsukcesoj", do ni starigos ĝin. ĉiuokaze)

# 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

Algluu la kodon (senditan de JuriM, dankon al li pro tio!):

servilo linotp {
aŭskultu {
ipaddr = *
haveno = 1812
tipo=aŭth
}
aŭskultu {
ipaddr = *
haveno = 1813
tipo = akt
}
permesi {
antaŭprocezo
ĝisdatigi {
&control:Auth-Type := Perl
}
}
aŭtentikigi {
Aŭtotipa Perl {
perl
}
}
kontado {
unikso
}
}

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

perl {
dosiernomo = /usr/share/linotp/radius_linotp.pm
func_authenticate = aŭtentikigi
func_authorize = rajtigi
}

Bedaŭrinde, en Debian 9 la biblioteko radius_linotp.pm ne estas instalita de la deponejoj, do ni prenos ĝin de 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

nun ni redaktu /etc/freeradius/3.0/clients.conf

klientserviloj {
ipaddr = 192.168.188.0/24
sekreta = via pasvorto
}

Nun ni korektu nano /etc/linotp2/rlm_perl.ini

Ni algluas la saman kodon tie kiel kiam oni instalas sur debian 8 (priskribita supre)

tio estas ĉio laŭ la ideo. (ne testita ankoraŭ)

Mi lasos ĉi-sube kelkajn ligilojn pri agordo de sistemoj, kiuj plej ofte devas esti protektitaj per dufaktora aŭtentigo:
Agordi dufaktoran aŭtentikigon en Apache2

Agordu kun Cisco ASA(Tie estas uzata malsama ĵetono-genera servilo, sed la agordoj de la ASA mem estas la samaj).

VPN kun dufaktora aŭtentigo

alĝustigo dufaktora aŭtentigo en ssh (LinOTP estas uzata tie ankaŭ) - dankon al la aŭtoro. Tie vi ankaŭ povas trovi interesajn aferojn pri agordo de LiOTP-politikoj.

Ankaŭ, la cms de multaj retejoj subtenas dufaktoran aŭtentikigon (Por WordPress, LinOTP eĉ havas sian propran specialan modulon por GitHub), ekzemple, se vi volas fari protektitan sekcion en via kompania retejo por firmaaj dungitoj.
GRAVA FAKTO! NE marku la skatolon "Google autenteficator" por uzi Google Authenticator! La QR-kodo tiam ne estas legebla... (stranga fakto)

Por verki ĉi tiun artikolon, informoj de la sekvaj artikoloj estis uzataj:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Dankon al la aŭtoroj.

fonto: www.habr.com

Aldoni komenton