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
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
# 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
axuste
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
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:
Grazas aos autores.
Fonte: www.habr.com