Servidor de autenticación de dous factores LinOTP

Servidor de autenticación de dous factores LinOTP

Hoxe quero compartir como configurar un servidor de autenticación de dous factores para protexer unha rede corporativa, sitios, servizos, ssh. O servidor executará a seguinte combinación: LinOTP + FreeRadius.

Por que o necesitamos?
Esta é unha solución totalmente gratuíta e cómoda, dentro da súa propia rede, independente de provedores de terceiros.

Este servizo é moi cómodo, bastante visual, a diferenza doutros produtos de código aberto, e tamén admite un gran número de funcións e políticas (por exemplo, inicio de sesión+contrasinal+(PIN+OTPToken)). A través da API, intégrase cos servizos de envío de sms (LinOTP Config->Provider Config->SMS Provider), xera códigos para aplicacións móbiles como Google Authentificator e moito máis. Creo que é máis cómodo que o servizo comentado Artigo.

Este servidor funciona perfectamente con Cisco ASA, servidor OpenVPN, Apache2 e, en xeral, con case todo o que admite a autenticación a través dun servidor RADIUS (Por exemplo, para SSH no centro de datos).

Necesario:

1) Debian 8 (jessie) - Sempre! (a instalación de proba en Debian 9 descríbese ao final do artigo)

Inicio:

Instalación de Debian 8.

Engade o repositorio LinOTP:

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

Engadindo claves:

# gpg --search-keys 913DFF12F86258E5

Ás veces, durante unha instalación "limpa", despois de executar este comando, Debian mostra:

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

Esta é a configuración inicial de gnupg. Está ben. Só ten que executar o comando de novo.
Á 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) Выход>

Respondemos: 1

Seguinte:

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

# apt-get update

Instalar mysql. En teoría, podes usar outro servidor sql, pero por simplicidade usarei como recomendado para LinOTP.

(Información adicional, incluída a reconfiguración da base de datos LinOTP, pódese atopar na documentación oficial para Ligazón. Alí tamén podes atopar o comando: dpkg-reconfigure linotp para cambiar os parámetros se xa instalou mysql).

# apt-get install mysql-server

# apt-get update

(non estaría de máis comprobar as actualizacións de novo)
Instale LinOTP e módulos adicionais:

# apt-get install linotp

Respondemos ás preguntas do instalador:
Use Apache2: si
Crear un contrasinal para o administrador Linotp: "O teu contrasinal"
Xerar certificado autoasinado?: si
Usa MySQL?: si
Onde está a base de datos: localhost
Crea unha base de datos LinOTP (nome base) no servidor: LinOTP2
Cree un usuario separado para a base de datos: LinOTP2
Establecemos un contrasinal para o usuario: "O teu contrasinal"
Debo crear unha base de datos agora? (algo así como “Estás seguro de que queres...”): si
Introduza o contrasinal de root de MySQL que creaches ao instalalo: "YourPassword"
Feito.

(opcional, non tes que instalalo)

# apt-get install linotp-adminclient-cli 

(opcional, non tes que instalalo)

# apt-get install libpam-linotp  

Así, a nosa interface web de Linotp xa está dispoñible en:

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

Sobre a configuración da interface web falarei un pouco máis tarde.

Agora, o máis importante! Levantamos FreeRadius e vinculalo con Linotp.

Instala FreeRadius e o módulo para traballar con LinOTP

# apt-get install freeradius linotp-freeradius-perl

Fai unha copia de seguridade das configuracións do raio do cliente e dos usuarios.

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

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

Crea un ficheiro de cliente baleiro:

# touch /etc/freeradius/clients.conf

Editando o noso novo ficheiro de configuración (pódese usar a configuración coa copia de seguranza como exemplo)

# nano /etc/freeradius/clients.conf

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

A continuación, cree un ficheiro de usuarios:

# touch /etc/freeradius/users

Editamos o ficheiro, dicíndolle a radius que usaremos Perl para a autenticación.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

A continuación, edite o ficheiro /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Necesitamos especificar o camiño ao script perl linotp no parámetro módulo:

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

... ..
A continuación, creamos un ficheiro no que dicimos de cal (dominio, base de datos ou ficheiro) tomar os datos.

# 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

Vou entrar un pouco máis en detalle aquí porque é importante:

Descrición completa do ficheiro con comentarios:
#IP do servidor linOTP (enderezo IP do noso servidor LinOTP)
URL=https://172.17.14.103/validate/simplecheck
#A nosa área que crearemos na interface web LinOTP.)
REINO=rearmar1
#Nome do grupo de usuarios que se crea no fociño web LinOTP.
RESCONF=ficheiro_plano
#opcional: comenta se todo parece funcionar ben
Depurar=Verdadero
#opcional: usa isto, se tes certificados autofirmados, se non, comenta (SSL se creamos o noso propio certificado e queremos verificalo)
SSL_CHECK=Falso

A continuación, cree o ficheiro /etc/freeradius/sites-available/linotp

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

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

E copia a configuración nela (non hai que editar nada):

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ón, crearemos unha ligazón SIM:

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

Persoalmente, mato os sitios predeterminados de Radius, pero se os necesitas, podes editar a súa configuración ou desactivalos.

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

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

# service freeradius reload

Agora volvamos á cara web e vexamos un pouco máis en detalle:
Na esquina superior dereita fai clic en LinOTP Config -> UserIdResolvers -> Novo
Escollemos o que queremos: LDAP (AD win, LDAP samba), ou SQL, ou usuarios locais do sistema Flatfile.

Encha os campos obrigatorios.

A continuación creamos REALMS:
Na esquina superior dereita, faga clic en LinOTP Config -> Realms -> New.
e darlle un nome aos nosos REALMS, e tamén premer nos UserIdResolvers creados previamente.

FreeRadius necesita todos estes datos no ficheiro /etc/linotp2/rlm_perl.ini, como escribín anteriormente, así que se non o editaches entón, faino agora.

O servidor está todo configurado.

Adición:

Configurando LinOTP en 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

(por defecto, en Debian 9 mysql (mariaDB) non ofrece establecer un contrasinal de root, por suposto que podes deixalo baleiro, pero se le as noticias, isto leva moi a miúdo a "epic fails", así que o estableceremos de todos os xeitos)

# 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

Pega o código (enviado por JuriM, grazas a el por iso!):

servidor linotp {
escoitar {
ipaddr = *
porto = 1812
tipo=auth
}
escoitar {
ipaddr = *
porto = 1813
tipo = conta
}
autorizar {
preproceso
actualizar {
&control:Tipo de autenticación:= Perl
}
}
autenticar {
Tipo de autenticación Perl {
perla
}
}
contabilidade {
Unix
}
}

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

perl {
nome do ficheiro = /usr/share/linotp/radius_linotp.pm
func_authenticate = autenticar
func_authorize = autorizar
}

Desafortunadamente, en Debian 9 a biblioteca radius_linotp.pm non está instalada desde os repositorios, polo que tomarémola 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

agora imos editar /etc/freeradius/3.0/clients.conf

servidores cliente {
ipaddr = 192.168.188.0/24
segredo = o teu contrasinal
}

Agora imos corrixir nano /etc/linotp2/rlm_perl.ini

Pegamos alí o mesmo código que ao instalar en Debian 8 (descrito anteriormente)

iso é todo segundo a idea. (aínda non se probou)

Deixarei a continuación algunhas ligazóns sobre a configuración de sistemas que a maioría das veces necesitan ser protexidos con autenticación de dous factores:
Configurando a autenticación de dous factores en Apache2

Configurar con Cisco ASA(Alí úsase un servidor de xeración de tokens diferente, pero a configuración do propio ASA é a mesma).

VPN con autenticación de dous factores

axuste autenticación de dous factores en ssh (LinOTP tamén se usa alí) - grazas ao autor. Alí tamén podes atopar cousas interesantes sobre a configuración de políticas LiOTP.

Ademais, os cms de moitos sitios admiten a autenticación de dous factores (para WordPress, LinOTP incluso ten o seu propio módulo especial para GitHub), por exemplo, se queres facer unha sección protexida no teu sitio web corporativo para os empregados da empresa.
DATO IMPORTANTE! NON marque a caixa "Google autenteficator" para usar Google Authenticator! O código QR non se pode leer entón... (feito estraño)

Para escribir este artigo utilizouse a información dos seguintes artigos:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Grazas aos autores.

Fonte: www.habr.com

Engadir un comentario