Vá para 2FA (autenticação de dois fatores para VPN SSL ASA)

A necessidade de fornecer acesso remoto a um ambiente corporativo surge cada vez com mais frequência, não importa se são seus usuários ou parceiros que precisam de acesso a um servidor específico em sua organização.

Para estes fins, a maioria das empresas utiliza a tecnologia VPN, que provou ser uma forma confiável e protegida de fornecer acesso aos recursos locais da organização.

Minha empresa não foi exceção e nós, como muitas outras, usamos essa tecnologia. E, como muitos outros, usamos o Cisco ASA 55xx como gateway de acesso remoto.

À medida que aumenta o número de utilizadores remotos, surge a necessidade de simplificar o procedimento de emissão de credenciais. Mas, ao mesmo tempo, isto deve ser feito sem comprometer a segurança.

Para nós, encontramos uma solução usando autenticação de dois fatores para conexão via Cisco SSL VPN, usando senhas de uso único. E esta publicação vai te ensinar como organizar tal solução com o mínimo de tempo e custo zero para o software necessário (desde que você já tenha Cisco ASA em sua infraestrutura).

O mercado está repleto de soluções in a box para geração de senhas de uso único, mas oferece diversas opções para obtê-las, seja enviando a senha via SMS ou utilizando tokens, tanto de hardware quanto de software (por exemplo, no celular). Mas o desejo de economizar dinheiro e o desejo de economizar dinheiro para meu empregador, na crise atual, me obrigou a encontrar uma forma gratuita de implementar um serviço de geração de senhas de uso único. Que, embora gratuito, não é muito inferior às soluções comerciais (aqui devemos fazer uma reserva, lembrando que este produto também tem uma versão comercial, mas concordamos que os nossos custos, em dinheiro, serão zero).

Então, vamos precisar de:

- Uma imagem Linux com um conjunto integrado de ferramentas - multiOTP, FreeRADIUS e nginx, para acesso ao servidor via web (http://download.multiotp.net/ - usei uma imagem pronta para VMware)
— Servidor Active Directory
— O próprio Cisco ASA (por conveniência, eu uso ASDM)
— Qualquer token de software que suporte o mecanismo TOTP (eu, por exemplo, uso o Google Authenticator, mas o mesmo FreeOTP serve)

Não entrarei em detalhes de como a imagem se desenrola. Como resultado, você receberá o Debian Linux com multiOTP e FreeRADIUS já instalados, configurados para trabalharem juntos e uma interface web para administração OTP.

Passo 1. Iniciamos o sistema e configuramos para sua rede
Por padrão, o sistema vem com credenciais root root. Acho que todos adivinharam que seria uma boa ideia alterar a senha do usuário root após o primeiro login. Você também precisa alterar as configurações de rede (por padrão é '192.168.1.44' com o gateway '192.168.1.1'). Depois você pode reiniciar o sistema.

Vamos criar um usuário no Active Directory otp, com senha MinhaSuperSenha.

Etapa 2. Configure a conexão e importe usuários do Active Directory
Para fazer isso, precisamos de acesso ao console e diretamente ao arquivo multiotp.php, com o qual definiremos as configurações de conexão com o Active Directory.

Ir para o diretório /usr/local/bin/multiotp/ e execute os seguintes comandos por sua vez:

./multiotp.php -config default-request-prefix-pin=0

Determina se um pino adicional (permanente) é necessário ao inserir um pino único (0 ou 1)

./multiotp.php -config default-request-ldap-pwd=0

Determina se uma senha de domínio é necessária ao inserir um PIN único (0 ou 1)

./multiotp.php -config ldap-server-type=1

O tipo de servidor LDAP é indicado (0 = servidor LDAP normal, no nosso caso 1 = Active Directory)

./multiotp.php -config ldap-cn-identifier="sAMAccountName"

Especifica o formato no qual será apresentado o nome de usuário (este valor exibirá apenas o nome, sem o domínio)

./multiotp.php -config ldap-group-cn-identifier="sAMAccountName"

A mesma coisa, apenas para um grupo

./multiotp.php -config ldap-group-attribute="memberOf"

Especifica um método para determinar se um usuário pertence a um grupo

./multiotp.php -config ldap-ssl=1

Devo usar uma conexão segura com o servidor LDAP (claro, sim!)

./multiotp.php -config ldap-port=636

Porta para conexão ao servidor LDAP

./multiotp.php -config ldap-domain-controllers=adSRV.domain.local

O endereço do seu servidor Active Directory

./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"

Indicamos por onde começar a procurar usuários no domínio

./multiotp.php -config ldap-bind-dn="[email protected]"

Especifique um usuário que tenha direitos de pesquisa no Active Directory

./multiotp.php -config ldap-server-password="MySuperPassword"

Especifique a senha do usuário para se conectar ao Active Directory

./multiotp.php -config ldap-network-timeout=10

Configurando o tempo limite para conexão ao Active Directory

./multiotp.php -config ldap-time-limit=30

Definimos um limite de tempo para a operação de importação de usuários

./multiotp.php -config ldap-activated=1

Ativando a configuração de conexão do Active Directory

./multiotp.php -debug -display-log -ldap-users-sync

Importamos usuários do Active Directory

Passo 3. Gere um código QR para o token
Tudo aqui é extremamente simples. Abra a interface web do servidor OTP no navegador, faça login (não esqueça de alterar a senha padrão do admin!) e clique no botão “Imprimir”:

Vá para 2FA (autenticação de dois fatores para VPN SSL ASA)
O resultado desta ação será uma página que contém dois códigos QR. Ignoramos corajosamente o primeiro deles (apesar da atraente inscrição Google Authenticator / Authenticator / 2 Steps Authenticator) e, novamente, corajosamente digitalizamos o segundo código em um token de software no telefone:

Vá para 2FA (autenticação de dois fatores para VPN SSL ASA)
(sim, estraguei deliberadamente o código QR para torná-lo ilegível).

Após concluir essas ações, uma senha de seis dígitos começará a ser gerada em seu aplicativo a cada trinta segundos.

Para ter certeza, você pode verificar na mesma interface:

Vá para 2FA (autenticação de dois fatores para VPN SSL ASA)
Digitando seu nome de usuário e senha de uso único no aplicativo do seu telefone. Você recebeu uma resposta positiva? Então vamos em frente.

Etapa 4. Configuração adicional e teste de operação do FreeRADIUS
Como mencionei acima, o multiOTP já está configurado para funcionar com FreeRADIUS, falta apenas fazer testes e adicionar informações sobre nosso gateway VPN ao arquivo de configuração do FreeRADIUS.

Voltamos ao console do servidor, ao diretório /usr/local/bin/multiotp/, digitar:

./multiotp.php -config debug=1
./multiotp.php -config display-log=1

Incluindo registros mais detalhados.

No arquivo de configuração dos clientes FreeRADIUS (/etc/freeradius/clinets.conf) comente todas as linhas relacionadas a localhost e adicione duas entradas:

client localhost {
        ipaddr = 127.0.0.1
        secret          = testing321
        require_message_authenticator = no
}

- para teste

client 192.168.1.254/32 {
        shortname =     CiscoASA
        secret =        ConnectToRADIUSSecret
}

— para nosso gateway VPN.

Reinicie o FreeRADIUS e tente fazer login:

radtest username 100110 localhost 1812 testing321

onde nome de usuário = nome de usuário, 100110 = senha que nos foi fornecida pelo aplicativo no telefone, localhost = endereço do servidor RADIUS, 1812 — Porta do servidor RADIUS, testing321 — Senha do cliente do servidor RADIUS (que especificamos na configuração).

O resultado deste comando será gerado aproximadamente da seguinte forma:

Sending Access-Request of id 44 to 127.0.0.1 port 1812
        User-Name = "username"
        User-Password = "100110"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=44, length=20

Agora precisamos ter certeza de que o usuário foi autenticado com sucesso. Para fazer isso, veremos o próprio log do multiotp:

tail /var/log/multiotp/multiotp.log

E se a última entrada houver:

2016-09-01 08:58:17     notice  username  User    OK: User username successfully logged in from 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token accepted from 127.0.0.1

Então tudo correu bem e podemos concluir

Etapa 5: Configurar Cisco ASA
Vamos combinar que já temos um grupo configurado e políticas de acesso via SLL VPN, configuradas em conjunto com o Active Directory, e precisamos adicionar autenticação de dois fatores para este perfil.

1. Adicione um novo grupo de servidores AAA:

Vá para 2FA (autenticação de dois fatores para VPN SSL ASA)
2. Adicione nosso servidor multiOTP ao grupo:

Vá para 2FA (autenticação de dois fatores para VPN SSL ASA)
3. Nós editamos perfil de conexão, definindo o grupo de servidores do Active Directory como o servidor de autenticação principal:

Vá para 2FA (autenticação de dois fatores para VPN SSL ASA)
4. aba Avançado -> Autenticação Também selecionamos o grupo de servidores Active Directory:

Vá para 2FA (autenticação de dois fatores para VPN SSL ASA)
5. aba Avançado -> Secundário autenticação, selecione o grupo de servidores criado no qual o servidor multiOTP está registrado. Observe que o nome de usuário da sessão é herdado do grupo de servidores AAA primário:

Vá para 2FA (autenticação de dois fatores para VPN SSL ASA)
Aplique as configurações e

Etapa 6, também conhecida como a última
Vamos verificar se a autenticação de dois fatores funciona para VPN SLL:

Vá para 2FA (autenticação de dois fatores para VPN SSL ASA)
Voilá! Ao conectar-se por meio do Cisco AnyConnect VPN Client, também será solicitada uma segunda senha de uso único.

Espero que este artigo ajude alguém e dê a alguém o que pensar sobre como usar isso, livre Servidor OTP, para outras tarefas. Compartilhe nos comentários se desejar.

Fonte: habr.com

Adicionar um comentário