Servidor d'autenticació de dos factors LinOTP

Servidor d'autenticació de dos factors LinOTP

Avui vull compartir com configurar un servidor d'autenticació de dos factors per protegir la xarxa corporativa, llocs, serveis, ssh. L'enllaç funcionarà al servidor: LinOTP + FreeRadius.

Per què ens necessita?
Aquesta és una solució totalment gratuïta i còmoda, dins de la vostra xarxa, independent de proveïdors de tercers.

Aquest servei és molt còmode, força visual, a diferència d'altres productes de codi obert, i també admet un gran nombre de funcions i polítiques (per exemple, inici de sessió+contrasenya+(PIN+OTPToken)). Mitjançant l'API, s'integra amb serveis d'enviament de sms (LinOTP Config->Provider Config->SMS Provider), genera codis per a aplicacions mòbils com Google Autentificator i molt més. Crec que és més convenient que el servei considerat article.

Aquest servidor funciona bé amb Cisco ASA, servidor OpenVPN, Apache2 i, de fet, amb gairebé tot el que admet l'autenticació mitjançant un servidor RADIUS (per exemple, per SSH al centre de dades).

Es requereix:

1) Debian 8 (jessie) - Sempre! (La instal·lació de prova a Debian 9 es descriu al final de l'article)

Començar:

Instal·leu Debian 8.

Afegiu el repositori LinOTP:

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

Afegint claus:

# gpg --search-keys 913DFF12F86258E5

De vegades, en una instal·lació neta, després d'executar aquesta ordre, Debian emet:

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

Aquesta és la configuració inicial de gnupg. Està bé. Només cal que torneu a executar l'ordre.
A la pregunta 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) Выход>

Resposta: 1

Següent:

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

# apt-get update

Instal·leu mysql. En teoria, podeu utilitzar un altre servidor sql, però per senzillesa el faré servir tal com es recomana per a LinOTP.

(Es pot trobar informació addicional, inclosa la reconfiguració de la base de dades LinOTP, a la documentació oficial de enllaç. Al mateix lloc, podeu trobar l'ordre: dpkg-reconfigure linotp per canviar la configuració si ja heu instal·lat mysql).

# apt-get install mysql-server

# apt-get update

(No fa mal tornar a comprovar si hi ha actualitzacions)
Instal·leu LinOTP i mòduls addicionals:

# apt-get install linotp

Responem les preguntes de l'instal·lador:
Utilitzeu Apache2: sí
Creeu una contrasenya per a l'administrador Linotp: "YourPassword"
Generar certificat autofirmat?: sí
Utilitzeu MySQL?: sí
On es troba la base de dades: localhost
Creeu una base de dades LinOTP (nom base) al servidor: LinOTP2
Creeu un usuari independent per a la base de dades: LinOTP2
Establiu la contrasenya per a l'usuari: "YourPassword"
He de crear una base ara? (alguna cosa com "Estàs segur que vols..."): sí
Introduïu la contrasenya root de MySQL que vau crear durant la instal·lació: "YourPassword"
Fet.

(opcional, no es pot posar)

# apt-get install linotp-adminclient-cli 

(opcional, no es pot posar)

# apt-get install libpam-linotp  

La nostra interfície web de Linotp ja està disponible a:

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

De la configuració de la interfície web parlaré una mica més endavant.

Ara, el més important! Aixeca FreeRadius i enllaça'l a Linotp.

Instal·leu FreeRadius i el mòdul LinOTP

# apt-get install freeradius linotp-freeradius-perl

Feu una còpia de seguretat de les configuracions del client i dels usuaris del radi.

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

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

Creeu un fitxer de client buit:

# touch /etc/freeradius/clients.conf

Editant el nostre nou fitxer de configuració (la configuració de la còpia de seguretat es pot utilitzar com a exemple)

# nano /etc/freeradius/clients.conf

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

A continuació, creeu el fitxer d'usuaris:

# touch /etc/freeradius/users

Editem el fitxer, dient al radi que utilitzarem perl per a l'autenticació.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

A continuació, editeu el fitxer /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Hem d'establir el camí a l'script perl linotp al paràmetre del mòdul:

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

... ..
A continuació, creem un fitxer en el qual diem de quin (domini, base de dades o fitxer) prendre les dades.

# 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

Aquí m'atendré una mica més, perquè és important:

Descripció completa del fitxer amb comentaris:
#IP del servidor linotp (adreça IP del nostre servidor LinOTP)
URL=https://172.17.14.103/validate/simplecheck
#La nostra àrea que crearem a la interfície web de LinOTP.)
REALM=rearma1
#Nom del grup d'usuaris que es crea al webmord LinOTP.
RESCONF=fitxer_pla
#opcional: comenta si tot sembla funcionar bé
Depuració=Veritat
#opcional: utilitzeu això, si teniu certificats autofirmats, en cas contrari, feu un comentari (SSL si creem el nostre propi certificat i volem verificar-lo)
SSL_CHECK=Fals

A continuació, creeu el fitxer /etc/freeradius/sites-available/linotp

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

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

I copieu-hi la configuració (no cal editar res):

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
}

A continuació, farem un enllaç sim:

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

Personalment, mato els llocs de radi predeterminats, però si els necessiteu, podeu editar-ne la configuració o desactivar-los.

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

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

# service freeradius reload

Ara tornem al morrió web i mirem-ho amb una mica més de detall:
A la cantonada superior dreta, feu clic a LinOTP Config -> UserIdResolvers -> Nou
Triem el que volem: LDAP (AD win, LDAP samba), o SQL, o usuaris locals del sistema Flatfile.

Ompliu els camps obligatoris.

A continuació, creem REALMS:
A la cantonada superior dreta, feu clic a LinOTP Config -> Realms -> New.
i doneu un nom als nostres REALMS, i també feu clic als UserIdResolvers creats anteriorment.

FreeRadius necessita totes aquestes dades al fitxer /etc/linotp2/rlm_perl.ini, sobre el qual he escrit més amunt, així que si no l'heu editat aleshores, feu-ho ara.

Tot el servidor està configurat.

Suplement:

Configuració de LinOTP a Debian 9:

Установка:

# 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 defecte, a Debian 9 mysql (mariaDB) no ofereix establir una contrasenya d'arrel, per descomptat, podeu deixar-la en blanc, però si llegiu la notícia, sovint porta a "errors èpics", així que encara la configurarem )

# 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

Enganxeu el codi (enviat per JuriM, gràcies a ell per això!):

servidor linotp {
escolta {
ipaddr=*
port=1812
tipus = auth
}
escolta {
ipaddr=*
port=1813
tipus = compte
}
autoritzar {
preprocés
actualitzar {
&control:Auth-Type:= Perl
}
}
autenticar {
Perl de tipus d'autenticació {
perl
}
}
comptabilitat {
unix
}
}

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

perl {
nom de fitxer = /usr/share/linotp/radius_linotp.pm
func_authenticate = autenticar
func_authorize = autoritzar
}

Malauradament, a debian 9, la biblioteca radius_linotp.pm no s'instal·la des dels dipòsits, així que la prendrem 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

ara arreglem /etc/freeradius/3.0/clients.conf

servidors clients {
ipaddr = 192.168.188.0/24
secret = la teva contrasenya
}

ara arreglem nano /etc/linotp2/rlm_perl.ini

Enganxem allà el mateix codi que quan instal·lem a Debian 8 (descrit més amunt)

en la idea de tot. (encara no provat)

A continuació, deixaré uns quants enllaços per configurar sistemes que sovint s'han de protegir amb una autorització de dos factors:
Configuració de l'autenticació de dos factors Apache2

Configuració amb Cisco ASA(utilitza un servidor de generació de testimonis diferent, però la configuració de l'ASA en si és la mateixa).

VPN amb autenticació de dos factors

ajust autenticació de dos factors en ssh (LinOTP també s'utilitza allà) - gràcies a l'autor. Allà també podeu trobar coses interessants sobre la configuració de polítiques LiOTP.

A més, els cms de molts llocs admeten l'autenticació de dos factors (per a WordPress, LinOTP fins i tot té el seu propi mòdul especial sobre GitHub), per exemple, si voleu fer una secció segura per als empleats de l'empresa al vostre lloc web corporatiu.
FET IMPORTANT! NO marqueu la casella "Google Authenticator" per utilitzar Google Authenticator! Aleshores, el codi QR no es pot llegir... (fet estrany)

La informació dels articles següents s'ha utilitzat per escriure l'article:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Gràcies als autors.

Font: www.habr.com

Afegeix comentari