Autenticação de dois fatores no OpenVPN com bot do Telegram

Este artigo descreve a configuração do servidor OpenVPN para habilitar a autenticação de dois fatores com um bot do Telegram, que enviará um pedido de confirmação ao conectar.

OpenVPN é um servidor VPN de código aberto amplamente conhecido e gratuito, que é utilizado para proporcionar acesso seguro aos recursos internos da organização pelos funcionários.

Como método de autenticação para a conexão ao servidor VPN, geralmente é utilizada uma combinação de chave e login/senha do usuário. Nesse caso, a senha armazenada no cliente torna o conjunto em um único fator, não garantindo o nível adequado de segurança. Um invasor que obtiver acesso ao computador do cliente também terá acesso ao servidor VPN. Isso é especialmente relevante para conexões a partir de máquinas com Windows.

O uso de um segundo fator reduz em 99% o risco de acesso não autorizado e não complica o processo de conexão para os usuários.

Desde já, aviso que para a implementação será necessário conectar-se a um servidor de autenticação externo multifactor.ru, no qual você pode usar um plano gratuito para suas necessidades.

Princípio de funcionamento

  1. OpenVPN utiliza o plugin openvpn-plugin-auth-pam para autenticação.
  2. O plugin verifica a senha do usuário no servidor e solicita o segundo fator através do protocolo RADIUS no serviço Multifator.
  3. O Multifator envia uma mensagem ao usuário via bot do Telegram, pedindo a confirmação de acesso.
  4. O usuário confirma o pedido de acesso no chat do Telegram e se conecta ao VPN.

Instalação do servidor OpenVPN.

Na internet, há muitos artigos que descrevem o processo de instalação e configuração do OpenVPN, por isso não iremos duplicá-los. Se você precisar de ajuda, no final do artigo há alguns links para materiais de treinamento.

Configuração do Multifator.

Acesse o sistema de gerenciamento do Multifator., vá para a seção "Recursos" e crie um novo VPN.
Após a criação, você terá acesso a dois parâmetros: NAS-Identifier e Shared Secret, eles serão necessários para a configuração posterior.

Autenticação de dois fatores no OpenVPN com bot do Telegram

Na seção "Grupos", acesse os parâmetros do grupo "Todos os usuários" e desmarque a opção "Todos os recursos", para que apenas usuários de um grupo específico possam se conectar ao servidor VPN.

Crie um novo grupo "VPN users", desative todos os métodos de autenticação, exceto o Telegram, e indique que os usuários têm acesso ao recurso VPN criado.

Autenticação de dois fatores no OpenVPN com bot do Telegram

Na seção "Usuários", crie usuários que terão acesso ao VPN, adicione-os ao grupo "VPN users" e envie-lhes um link para configurar o segundo fator de autenticação. O login do usuário deve coincidir com o login no servidor VPN.

Autenticação de dois fatores no OpenVPN com bot do Telegram

Configuração do servidor OpenVPN

Abra o arquivo /etc/openvpn/server.conf e adicione o plugin para autenticação usando o módulo PAM

plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn

O plugin pode estar no diretório /usr/lib/openvpn/plugins/ ou /usr/lib64/openvpn/plugins/ dependendo do seu sistema.

Em seguida, você precisa instalar o módulo pam_radius_auth

$ sudo yum install pam_radius

Abra o arquivo para edição /etc/pam_radius.conf e especifique o endereço do servidor RADIUS Multifatorial

radius.multifactor.ru shared_secret 40

onde:

  • radius.multifactor.ru — endereço do servidor
  • shared_secret — copie do parâmetro correspondente nas configurações do VPN
  • 40 segundos — tempo limite para aguardar a solicitação com uma margem ampla

Os outros servidores devem ser removidos ou comentados (adicione um ponto e vírgula no início)

Em seguida, crie um arquivo para o tipo de serviço openvpn

$ sudo vi /etc/pam.d/openvpn

e insira o seguinte

auth required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth substack password-auth
account substack password-auth

A primeira linha conecta o módulo PAM pam_radius_auth com os parâmetros:

  • skip_passwd — desativa o envio da senha do usuário ao servidor RADIUS Multifatorial (não é necessário que ele a conheça).
  • client_id — substitua por [NAS-Identifier] o parâmetro correspondente das configurações do recurso VPN.
    Todos os parâmetros possíveis estão descritos na documentação do módulo.

A segunda e terceira linhas incluem a verificação do login, senha e direitos do usuário no seu servidor junto com o segundo fator de autenticação.

Reinicie o OpenVPN

$ sudo systemctl restart openvpn@server

Configuração do Cliente

Ative no arquivo de configuração do cliente a solicitação de login e senha do usuário

auth-user-pass

Verificação

Inicie o cliente para OpenVPN, conecte-se ao servidor, forneça o login e a senha. Um pedido de acesso será enviado pelo bot do Telegram com dois botões

Autenticação de dois fatores no OpenVPN com bot do Telegram

Um botão permite o acesso, o outro bloqueia.

Agora você pode salvar a senha no cliente, o segundo fator protegerá seu servidor OpenVPN de acesso não autorizado.

Se algo não funcionar

Verifique passo a passo se você não esqueceu nada:

  • No servidor com OpenVPN, há um usuário com senha definida
  • O acesso ao servidor está aberto pela porta UDP 1812 no endereço radius.multifactor.ru
  • Os parâmetros NAS-Identifier e Shared Secret estão corretos
  • Na sistema Multifactor, foi cadastrado um usuário com o mesmo login e ele foi concedido acesso ao grupo de usuários VPN
  • O usuário configurou o método de autenticação através do Telegram

Se você ainda não configurou o OpenVPN, leia o artigo detalhado.

A instrução foi elaborada com exemplos para CentOS 7.

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