
Hoje, quero compartilhar como configurar um servidor de autenticação de dois fatores para proteger a rede corporativa, sites, serviços e ssh. O servidor trabalhará com o pacote configurável: LinOTP + FreeRadius.
Por que precisamos disso?
Esta é uma solução totalmente gratuita e conveniente, dentro de sua rede, independente de fornecedores terceirizados.
Este serviço é muito conveniente, bastante visual, diferente de outros produtos de código aberto, e também suporta um grande número de funções e políticas (por exemplo, login + senha + (PIN + OTPToken)). Por meio da API, ele se integra aos serviços de envio de sms (LinOTP Config-> Provider Config-> SMS Provider), gera códigos para aplicativos móveis, como o Google Autentificator e muito mais. Eu acho que é mais conveniente do que o serviço considerado no
artigo .
Este servidor funciona bem com o Cisco ASA, servidor OpenVPN, Apache2 e, de fato, com quase tudo que suporta autenticação através de um servidor RADIUS (por exemplo, para SSH no datacenter).
É necessário:
1) Debian 8 (jessie) -
obrigatório! (a instalação de avaliação no debian 9 é descrita no final do artigo)
Início:
Instalando Debian 8.
Adicione o repositório LinOTP:
Adicione chaves:
Às vezes, com uma instalação “limpa”, após executar este comando, o Debian emite:
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 configuração inicial do gnupg. Nada para se preocupar. Basta executar o comando novamente.
Perguntado por Debiana:
gpg: "913DFF12F86258E5" hkp keys.gnupg.net (1) LSE LinOTP2 Packaging <linotp2@lsexperts.de> 2048 bit RSA key F86258E5, : 2010-05-10 Keys 1-1 of 1 for "913DFF12F86258E5". , N) Q) >
Resposta: 1
Seguinte:
Instale o mysql. Em teoria, você pode usar um servidor sql diferente, mas por simplicidade eu o usarei, conforme recomendado para o LinOTP.
(informações adicionais, incluindo a reconfiguração do banco de dados LinOTP, podem ser encontradas na documentação oficial no
link . No mesmo local, você pode encontrar o comando: dpkg-reconfigure linotp para alterar as configurações, se você já instalou o mysql).
(Verificar atualizações novamente não fará mal)
Instale o LinOTP e os módulos complementares:
Respondemos às perguntas do instalador:
Use Apache2: sim
Crie uma senha para o administrador Linotp: "YourPassword"
Gerar certificado autoassinado?: Sim
Use o MySQL?: Sim
Onde está o banco de dados: localhost
Crie o banco de dados LinOTP (nome do banco de dados) no servidor: LinOTP2
Crie um usuário separado para o banco de dados: LinOTP2
Definimos a senha para o usuário: "YourPassword"
Devo criar uma base agora? (algo como "Tem certeza de que deseja ..."): sim
Digite a senha root do MySQL que foi criada durante sua instalação: “YourPassword”
Feito.
(opcional, você não pode definir)
(opcional, você não pode definir)
E assim nossa interface da web Linotp está agora disponível em:
"<b>https</b>: //IP_/manage"
Falarei sobre as configurações na interface da web um pouco mais tarde.
Agora, a coisa mais importante! Aumente o FreeRadius e vincule-o ao Linotp.
Instale o FreeRadius e o módulo LinOTP
cliente de backup e configurações de raio de usuários.
Crie um arquivo de cliente vazio:
Editamos nosso novo arquivo de configuração (uma configuração de backup pode ser usada como exemplo)
client 192.168.188.0/24 { secret = passwd # }
Em seguida, crie o arquivo de usuários:
Editamos o arquivo, informando o raio em que usaremos o perl para autenticação.
DEFAULT Auth-type := perl
Em seguida, edite o arquivo / etc / freeradius / modules / perl
Precisamos escrever o caminho para o script perl linotp no parâmetro module:
Perl { ....... ......... <source lang="bash">module = /usr/lib/linotp/radius_linotp.pm
.....
Em seguida, criamos um arquivo no qual dizemos a partir de qual (domínio, banco de dados ou arquivo) coletar dados.
URL=https://IP__LinOTP_(192.168.XX)/validate/simplecheck REALM=webusers1c RESCONF=LocalUser Debug=True SSL_CHECK=False
Aqui vou morar um pouco mais, pois isso é importante:
Descrição completa do arquivo com comentários:
#IP do servidor linotp (endereço IP do nosso servidor LinOTP)
URL = https: //172.17.14.103/validate/simplecheck
# Nossa área que criaremos na interface da web LinOTP.)
REALM = rearm1
# O nome do grupo juzverej criado no webmord LinOTP.
RESCONF = flat_file
#optional: comente se tudo parece funcionar bem
Debug = True
#optional: use isso, se você tiver certificados autoassinados, caso contrário, comente (SSL, se criarmos nosso certificado e queremos verificá-lo)
SSL_CHECK = False
Em seguida, crie o arquivo / etc / freeradius / sites-available / linotp
E copie a configuração para ele (não edite nada de forma inadequada):
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 USER\REALM 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 }
Em seguida, faça um link sim:
Pessoalmente, eu mato os sites de raio padrão, mas se você precisar deles, você pode editar sua configuração ou desativá-los.
Agora, de volta ao rosto da web e considere-o com mais detalhes:
No canto superior direito, clique em LinOTP Config -> UserIdResolvers -> Novo
Escolha o que queremos: usuários LDAP (AD win, LDAP samba) ou SQL ou Flatfile local.
Preencha os campos obrigatórios.
Em seguida, crie REALMS:
No canto superior direito, clique em LinOTP Config -> Domínios -> Novo.
e dê um nome aos nossos REALMS, bem como clique nos UserIdResolvers criados anteriormente.
Todos esses dados são necessários pelo freeRadius no arquivo /etc/linotp2/rlm_perl.ini, como escrevi acima, portanto, se você não os editou, faça-o agora.
Todo o servidor está configurado.
Adição:
Configurando o LinOTP no Debian 9 (Graças a
prikhodkov )
# Adicione o repositório LinOTP ao /etc/apt/sources.list.d/linotp.list e atualize os nabos:
echo "deb
linotp.org/apt/debian stretch linotp"> /etc/apt/sources.list.d/linotp.list
atualização apt-get
apt-get install dirmngr
apt-key adv --recv-keys 913DFF12F86258E5
# Instale e configure o servidor mysql basicamente:
apt-get install mysql-server
# Instalar pacotes linotp e freeradius
O apt-get install linotp linotp-adminclient-cli python-ldap freeradius python-passlib python-bcrypt git libio-all-lwp-perl libconfig-arquivo-perl libtry-tiny-perl
# Crie links simbólicos para arquivos de configuração do freeradius
ln -s /etc/freeradius/3.0/sites-available / etc / freeradius / sites-available
ln -s /etc/freeradius/3.0/sites-enabled / etc / freeradius / sites-enabled
ln -s /etc/freeradius/3.0/clients.conf /etc/freeradius/clients.conf
ln -s /etc/freeradius/3.0/users / etc / freeradius / users
# Instale o módulo linotp-auth-freeradius-perl
git clone
github.com/LinOTP/linotp-auth-freeradius-perlcd linotp-auth-freeradius-perl /
cp radius_linotp.pm /usr/share/linotp/radius_linotp.pm
# Trazemos o arquivo de configuração freeradius para linotp para este formulário
cat / etc / freeradius / sites-enabled / linotp
linotp do servidor {
ouça {
ipaddr = *
port = 1812
type = auth
}
ouça {
ipaddr = *
port = 1813
type = acct
}
autorizar {
pré-processo
atualização {
& controle: Tipo de autenticação: = Perl
}
}
autenticar {
Tipo de autenticação Perl {
perl
}
}
contabilidade {
unix
}
}
# Nos sites habilitados para freeradius, deixamos apenas linotp
ls / etc / freeradius / sites-enabled
linotp
# Adicione hosts a partir dos quais permitimos conexões no freeradius
cat /etc/freeradius/clients.conf
host1 do cliente {
ipaddr = IP_1
netmask = 32
secret = 'SECRET_1'
}
cliente host2 {
ipaddr = IP_2
netmask = 32
secret = 'SECRET_2'
}
# Como base de usuários, usamos o conector perl
cat / etc / freeradius / users
PADRÃO Tipo de autenticação: = perl
}
cat /etc/freeradius/3.0/mods-available/perl
perl {
filename = /usr/share/linotp/radius_linotp.pm
func_authenticate = authenticate
func_authorize = autorizar
}
# No diretório mods-enabled, faça links simbólicos no diretório mods-available para o módulo perl e remova o eap
ln -s /etc/freeradius/3.0/mods-available/perl /etc/freeradius/3.0/mods-enabled/perl
rm /etc/freeradius/3.0/mods-enabled/eap
# Crie auditkey para executar linotp
linotp-create-auditkeys -f linotp.ini
# Criamos uma configuração do conector para verificar o DD que chega ao raio
cat /etc/linotp2/rlm_perl.ini
URL = https: // IP_LINOTP_SRV / validate / simplecheck
REALM = realm
RESCONF = LocalUser
Debug = True
SSL_CHECK = False
Deixarei abaixo alguns links para configurar sistemas, que geralmente precisam ser protegidos por autenticação de dois fatores:
Configurando a autenticação de dois fatores no
Apache2Instalação com o Cisco ASA (outro servidor de geração de token é usado lá, mas as configurações do próprio ASA são as mesmas).
VPN com autenticação de dois fatoresConfigurando a
autenticação de dois fatores no ssh (o LinOTP também é usado aqui) - graças ao autor. Você também pode encontrar coisas interessantes sobre a configuração de políticas LiOTP lá.
Além disso, cms de muitos sites suportam autenticação de dois fatores (para Wordpress, o LinOTP ainda possui seu próprio módulo especial no
github ), por exemplo, se você deseja criar uma seção segura para os funcionários da empresa em seu site corporativo.
FATO IMPORTANTE! NÃO marque a caixa "Google autenteficator" para usar o Google Authenticator! O código QR não pode ser lido então ... (fato estranho)
Para escrever o artigo, foram usadas informações dos seguintes artigos:
itnan.ru/post.php?c=1&p=270571www.digitalbears.net/?p=469Graças aos autores.