Servitore di autentificazione à dui fattori LinOTP

Servitore di autentificazione à dui fattori LinOTP

Oghje vogliu sparte cumu stabilisce un servitore di autentificazione di dui fattori per prutege a reta corporativa, siti, servizii, ssh. U ligame hà da travaglià nantu à u servitore: LinOTP + FreeRadius.

Perchè hà bisognu di noi ?
Questa hè una soluzione cumplettamente gratuita, cunvene, in a vostra reta, indipendente da i fornitori di terzu.

Stu serviziu hè assai còmuda, abbastanza visuale, à u cuntrariu di l'altri prudutti open source, è sustene ancu un gran numaru di funzioni è pulitiche (Per esempiu, login+password+(PIN+OTPToken)). Per mezu di l'API, si integra cù i servizii di mandatu di sms (LinOTP Config->Provider Config->SMS Provider), genera codici per l'applicazioni mobili cum'è Google Autentificator è assai di più. Pensu chì hè più cunvene chè u serviziu cunsideratu in articulu.

Stu servitore funziona bè cù Cisco ASA, u servitore OpenVPN, Apache2, è veramente cù quasi tuttu ciò chì sustene l'autentificazione via un servitore RADIUS (Per esempiu, per SSH à u centru di dati).

Ubligatoriu:

1) Debian 8 (jessie) - Ubligatoriu! (L'installazione di prova nantu à Debian 9 hè descritta à a fine di l'articulu)

Principià:

Installa Debian 8.

Aghjunghjite u repository LinOTP:

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

Aghjunghjendu chjave:

# gpg --search-keys 913DFF12F86258E5

A volte nantu à una installazione pulita, dopu avè eseguitu stu cumandimu, Debian emette:

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

Questa hè a cunfigurazione iniziale di gnupg. Va bè. Just run u cumandamentu di novu.
À a quistione di 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) Выход>

Risposta: 1

Next:

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

# apt-get update

Installa mysql. In teoria, pudete aduprà un altru servitore sql, ma per simplicità l'aghju da aduprà cum'è ricumandatu per LinOTP.

(Informazioni supplementari, cumprese a ricunfigurazione di a basa di dati LinOTP, ponu esse truvate in a documentazione ufficiale per a lea. In u stessu locu, pudete truvà u cumandimu: dpkg-reconfigure linotp per cambià i paràmetri si avete digià stallatu mysql).

# apt-get install mysql-server

# apt-get update

(Ùn hè micca male per verificà di novu per l'aghjurnamenti)
Installa LinOTP è moduli supplementari:

# apt-get install linotp

Rispondemu à e dumande di l'installatore:
Utilizà Apache2: iè
Crea una password per l'amministratore Linotp: "YourPassword"
Generate certificatu autofirmatu ?: iè
Aduprate MySQL?: iè
Induve si trova a basa di dati: localhost
Crea una basa di dati LinOTP (nome di basa) nantu à u servitore: LinOTP2
Crea un utilizatore separatu per a basa di dati: LinOTP2
Stabilite a password per l'utilizatore: "YourPassword"
Deve creà una basa avà? (qualcosa cum'è "Sì sicuru chì vulete ..."): iè
Inserite a password root MySQL chì avete creatu durante a stallazione: "YourPassword"
Fattu.

(opcional, ùn pudete micca mette)

# apt-get install linotp-adminclient-cli 

(opcional, ùn pudete micca mette)

# apt-get install libpam-linotp  

È cusì a nostra interfaccia web Linotp hè avà dispunibule à:

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

Parlaraghju di i paràmetri in l'interfaccia web un pocu dopu.

Avà, u più impurtante! Raise FreeRadius è ligate à Linotp.

Installa FreeRadius è u modulu LinOTP

# apt-get install freeradius linotp-freeradius-perl

back up u cliente è Users configs di u raghju.

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

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

Crea un schedariu di cliente viotu:

# touch /etc/freeradius/clients.conf

Edità u nostru novu schedariu di cunfigurazione (configurazione salvata pò esse usata cum'è esempiu)

# nano /etc/freeradius/clients.conf

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

Dopu, crea u schedariu di l'utilizatori:

# touch /etc/freeradius/users

Editemu u schedariu, dicendu à u raghju chì useremu perl per l'autentificazione.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Dopu, edità u schedariu /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Avemu bisognu di stabilisce u percorsu à u script linotp perl in u paràmetru di u modulu:

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

... ..
In seguitu, creamu un schedariu in quale dicemu da quale (dominu, basa di dati o schedariu) piglià dati.

# 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

Quì aghju aspittà un pocu di più, perchè hè impurtante:

Descrizzione completa di u schedariu cù cumenti:
#IP di u servitore linotp (indirizzu IP di u nostru servitore LinOTP)
URL=https://172.17.14.103/validate/simplecheck
#A nostra zona chì creeremu in l'interfaccia web LinOTP.)
REALM = riarme1
#Nome di u gruppu d'utilizatori chì hè creatu in u webmord LinOTP.
RESCONF=file_flat
#optional: cummentate se tuttu pare funziona bè
Debug = True
#optional: aduprate questu, se avete certificati autofirmati, altrimenti cummentate (SSL se creemu u nostru propiu certificatu è vulemu verificà)
SSL_CHECK=False

Dopu, crea u schedariu /etc/freeradius/sites-available/linotp

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

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

È copiate a cunfigurazione in questu (nunda deve esse editatu):

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
}

Dopu, faremu un ligame sim:

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

In modu persunale, uccidu i siti di radiu predeterminatu, ma se ne avete bisognu, pudete edità a so cunfigurazione o disattivà.

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

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

# service freeradius reload

Avà tornemu à a faccia di u web è fighjemu in un pocu più di dettu:
In l'angulu superiore dirittu, cliccate LinOTP Config -> UserIdResolvers -> New
Avemu sceltu ciò chì vulemu: LDAP (AD win, LDAP samba), o SQL, o utilizatori lucali di u sistema Flatfile.

Riempite i campi richiesti.

Dopu, creemu REALMS:
In l'angulu superiore destra, cliccate LinOTP Config -> Realms -> New.
è dà un nome à i nostri REALMS, è ancu cliccate nant'à u UserIdResolvers creatu prima.

Tutti questi dati sò necessarii da freeRadius in u schedariu /etc/linotp2/rlm_perl.ini, chì aghju scrittu sopra sopra, perchè s'ellu ùn avete micca editatu allora, fate avà.

Tuttu u servitore hè cunfiguratu.

Addizione:

Configurazione di LinOTP in Debian 9:

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

(per difettu, in Debian 9 mysql (mariaDB) ùn prupone micca di stabilisce una password di root, di sicuru, pudete lascià in biancu, ma se leghjite a nutizia, spessu porta à "epic fails", cusì avemu sempre stabilitu. )

# 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

Incolla u codice (mannatu da JuriM, grazie à ellu per quessa !):

servitore linotp {
ascolta {
ipaddr=*
portu = 1812
tipu = auth
}
ascolta {
ipaddr=*
portu = 1813
tipu = acct
}
autorizzà {
preprocessu
aghjurnà {
&control:Auth-Type := Perl
}
}
autenticà {
Auth-Type Perl {
perl
}
}
contabilità {
Unix
}
}

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

perl {
filename = /usr/share/linotp/radius_linotp.pm
func_authenticate = authenticate
func_authorize = autorizà
}

Sfurtunatamente, in debian 9, a libreria radius_linotp.pm ùn hè micca stallata da i repositori, cusì a piglià da 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

avà correggemu /etc/freeradius/3.0/clients.conf

servitori di cliente {
ipaddr = 192.168.188.0/24
sicretu = a vostra password
}

avà correggemu nano /etc/linotp2/rlm_perl.ini

Incollamu u listessu codice quì cum'è quandu si stalla in Debian 8 (discrittu sopra)

nantu à l'idea di tuttu. (micca pruvatu ancu)

Lasciaraghju quì sottu uni pochi di ligami per installà sistemi chì u più spessu deve esse prutetti da l'autorizazione à dui fattori:
Configurazione di l'autentificazione à dui fatturi Apache2

Configurazione cù Cisco ASA(utilice un servitore di generazione di token differente, ma i paràmetri di l'ASA stessu sò listessi).

VPN cù autentificazione à dui fattori

cutter autentificazione à dui fattori in ssh (LinOTP hè ancu usatu quì) - grazie à l'autore. Ci pudete ancu truvà cose interessanti nantu à a creazione di pulitiche LiOTP.

Inoltre, cms di parechji siti supportanu l'autentificazione à dui fattori (Per WordPress, LinOTP hà ancu u so propiu modulu speciale nantu à github), per esempiu, sè vo vulete fà una sezione sicura per l'impiegati di a cumpagnia in u vostru situ web corporativu.
FATTU IMPORTANTE! Ùn verificate micca a casella "Google Authenticator" per aduprà Google Authenticator! U codice QR ùn hè micca leggibile allora ... (fattu stranu)

L'infurmazioni da i seguenti articuli sò stati utilizati per scrive l'articulu:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Grazie à l'autori.

Source: www.habr.com

Add a comment