Ir para 2FA (Autenticação de Dois Fatores para ASA SSL VPN)

A necessidade de fornecer acesso remoto ao ambiente corporativo está se tornando cada vez mais comum, independentemente de serem usuários internos ou parceiros que precisam acessar um ou outro servidor em sua organização.

Para esses fins, a maioria das empresas utiliza a tecnologia VPN, que se estabeleceu como uma maneira confiável de acessar recursos locais da organização.

Minha empresa não é uma exceção, e assim como muitas outras, utilizamos essa tecnologia. E, como muitas outras, usamos o Cisco ASA 55xx como nosso gateway de acesso remoto.

Com o aumento do número de usuários remotos, surge a necessidade de simplificar o processo de emissão de credenciais. Mas, ao mesmo tempo, isso deve ser feito sem comprometer a segurança.

Encontramos a solução na implementação de autenticação em duas etapas para a conexão via Cisco SSL, VPNusando senhas de uso único. E esta publicação explicará como organizar uma solução semelhante com o mínimo de tempo e nenhum custo com o software necessário (com a condição de que o Cisco ASA já esteja presente em sua infraestrutura).

O mercado está repleto de soluções prontas para a geração de senhas de uso único, oferecendo várias opções de recebimento, seja através do envio da senha por SMS ou o uso de tokens, tanto físicos quanto software (como no telefone móvel). No entanto, a busca por economia e o desejo de economizar dinheiro para o empregador, em tempos de crise, me levaram a encontrar uma forma gratuita de implementar um serviço de geração de senhas de uso único, que, apesar de ser gratuito, não fica a dever em relação às soluções comerciais (vale ressaltar que esse produto tem uma versão comercial, mas concordamos que nossos custos em dinheiro serão zero).

Assim, precisaremos de:

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

Não entrarei em detalhes sobre a implantação da imagem. No final, você terá o Debian Linux já com multiOTP e FreeRADIUS instalados, configurados para trabalhar em conjunto e uma interface web para administração de OTP.

Passo 1. Iniciamos o sistema e configuramos para sua rede
Por padrão, o sistema vem com as credenciais root root. Acho que todos perceberam que seria bom mudar a senha do usuário root após o primeiro login. Também é necessário alterar as configurações de rede (o padrão é ‘192.168.1.44’ com gateway ‘192.168.1.1’). Em seguida, você pode reiniciar o sistema.

No Active Directory, criaremos um usuário otp, com a senha MySuperPassword.

Passo 2. Configuramos a conexão e importamos os usuários do Active Directory
Para isso, precisaremos de acesso ao console e, diretamente, do arquivo multiotp.php, utilizando-o para configurarmos os parâmetros de conexão ao Active Directory.

Navegue até o diretório /usr/local/bin/multiotp/ e executamos as seguintes comandos em ordem:

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

Define se é necessário um PIN adicional (fixo) ao inserir um PIN de uso único (0 ou 1)

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

Define se deve ser insercida a senha do domínio ao digitar um PIN de uso único (0 ou 1)

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

Especifica o tipo de servidor LDAP (0 = servidor LDAP normal, neste caso 1 = Active Directory)

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

Indica em qual formato representar o nome de usuário (este valor exibirá apenas o nome, sem o domínio)

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

O mesmo, apenas para grupos

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

Indica o método de determinação da filiação do usuário ao grupo

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

Usar conexão segura com o servidor LDAP (claro que sim!)

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

Porta para conexão ao servidor LDAP

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

Endereço do seu servidor Active Directory

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

Indica de onde começar a busca por usuários no domínio

./multiotp.php -config ldap-bind-dn="otp@domain.local"

Indica o usuário que tem permissão para buscar no Active Directory

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

Indica a senha do usuário para conectar ao Active Directory

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

Define o tempo limite para conexão com o Active Directory

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

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

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

Ativamos a configuração de conexão com o Active Directory

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

Realizamos a importação de usuários do Active Directory

Passo 3. Geramos o QR-Code para o token
Aqui é tudo muito simples. Abrimos a interface web do servidor OTP no navegador, fazemos login (não esqueça de trocar a senha do admin que está definida como padrão!) e clicamos no botão ‘Print’:

Ir para 2FA (Autenticação de Dois Fatores para ASA SSL VPN)
O resultado dessa ação será uma página contendo dois QR-Codes. Ignoramos o primeiro (apesar da atraente legenda Google Authenticator / Authenticator / 2 Steps Authenticator) e escaneamos o segundo código no token de software no telefone:

Ir para 2FA (Autenticação de Dois Fatores para ASA SSL VPN)
(sim, eu estraguei intencionalmente o QR-Code para torná-lo ilegível).

Após esta ação, no seu aplicativo, a cada trinta segundos, começará a ser gerada uma senha de seis dígitos.

Para ter certeza, podemos realizar um teste na mesma interface:

Ir para 2FA (Autenticação de Dois Fatores para ASA SSL VPN)
Digite o nome de usuário e a senha de uso único do aplicativo no telefone. Obteve uma resposta positiva? Então seguimos em frente.

Passo 4. Ajustamos e testamos o funcionamento do FreeRADIUS
Como mencionei anteriormente — o multiOTP já está configurado para trabalhar com FreeRADIUS, agora resta realizar testes e inserir no arquivo de configuração do FreeRADIUS as informações sobre nosso gateway VPN.

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

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

Incluindo assim um registro mais detalhado.

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

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

— para teste

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

— para o nosso gateway VPN.

Reiniciamos o FreeRADIUS e tentamos autenticar:

radtest username 100110 localhost 1812 testing321

onde nome de usuário = nome de usuário, 100110 = senha 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 desse comando será uma saída semelhante ao seguinte conteúdo:

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

Agora precisamos garantir que o usuário foi autenticado com sucesso. Para isso, vamos dar uma olhada no log do multiotp:

tail /var/log/multiotp/multiotp.log

E se a última entrada for:

2016-09-01 08:58:17     notice  username  User    OK: Usuário username logado com sucesso a partir de 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token aceito de 127.0.0.1

Então tudo ocorreu com sucesso e podemos prosseguir com

Etapa 5. Configuração do Cisco ASA
Vamos supor que já temos um grupo configurado e políticas de acesso para SSL VPN, configuradas em conjunto com o Active Directory, e precisamos adicionar a autenticação de dois fatores para este perfil.

1. Adicionando um novo grupo servidores AAA:

Ir para 2FA (Autenticação de Dois Fatores para ASA SSL VPN)
2. Adicionamos o nosso servidor multiOTP ao grupo:

Ir para 2FA (Autenticação de Dois Fatores para ASA SSL VPN)
3. Editamos o perfil de conexão, definindo como servidor de autenticação principal o grupo de servidores do Active Directory:

Ir para 2FA (Autenticação de Dois Fatores para ASA SSL VPN)
4. Na aba Avançado -> Autenticação também escolhemos o grupo de servidores do Active Directory:

Ir para 2FA (Autenticação de Dois Fatores para ASA SSL VPN)
5. Na aba Avançado -> Secundário na autenticação escolhemos o grupo de servidores criado, onde consta o servidor multiOTP. Observamos que o nome de sessão é herdado do grupo primário de servidores AAA:

Ir para 2FA (Autenticação de Dois Fatores para ASA SSL VPN)
Aplicamos as configurações e

Etapa 6, que é a última
Verificamos se a autenticação de dois fatores está funcionando para a SSL VPN:

Ir para 2FA (Autenticação de Dois Fatores para ASA SSL VPN)
Voilà! Ao conectar através do cliente Cisco AnyConnect VPN, também será solicitado o segundo código, que é um PIN único.

Espero que este artigo ajude alguém e que traga alguma reflexão sobre como usar este gratuita servidor OTP para outras tarefas. Compartilhe nos comentários se tiver vontade.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster