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

O artigo descreve a configuração de um servidor OpenVPN para permitir a autenticação de dois fatores com um bot do Telegram que enviará uma solicitação de confirmação durante a conexão.

OpenVPN é um servidor VPN bem conhecido, gratuito e de código aberto, amplamente usado para organizar o acesso seguro dos funcionários aos recursos organizacionais internos.

Como autenticação para conexão a um servidor VPN, geralmente é usada uma combinação de chave e login/senha de usuário. Ao mesmo tempo, a senha armazenada no cliente transforma todo o conjunto em um único fator que não oferece o nível de segurança adequado. Um invasor, ao obter acesso ao computador cliente, também obtém acesso ao servidor VPN. Isto é especialmente verdadeiro para conexões de máquinas que executam o Windows.

O uso do segundo fator reduz o risco de acesso não autorizado em 99% e não complica em nada o processo de conexão dos usuários.

Deixe-me fazer uma reserva imediatamente: para implementação você precisará conectar um servidor de autenticação de terceiros multifactor.ru, no qual poderá utilizar uma tarifa gratuita para suas necessidades.

Como funciona

  1. OpenVPN usa 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 via protocolo RADIUS no serviço Multifator
  3. Multifactor envia mensagem ao usuário via bot do Telegram confirmando o acesso
  4. O usuário confirma a solicitação de acesso no chat do Telegram e se conecta à VPN

Instalando um servidor OpenVPN

Existem muitos artigos na Internet que descrevem o processo de instalação e configuração do OpenVPN, por isso não os duplicaremos. Se precisar de ajuda, há vários links para tutoriais no final do artigo.

Configurando o Multifator

Vamos para Sistema de controle multifatorial, vá para a seção "Recursos" e crie uma nova VPN.
Depois de criado, você terá duas opções disponíveis: Identificador NAS и Segredo partilhado, eles serão necessários para configuração subsequente.

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

Na seção "Grupos", vá para as configurações do grupo "Todos os usuários" e remova o sinalizador "Todos os recursos" para que apenas os usuários de um determinado grupo possam se conectar ao servidor VPN.

Crie um novo grupo “Usuários VPN”, desative todos os métodos de autenticação exceto 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 os usuários que terão acesso à VPN, adicione-os ao grupo “Usuários VPN” e envie-lhes um link para configurar o segundo fator de autenticação. O login do usuário deve corresponder ao login no servidor VPN.

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

Configurando um servidor OpenVPN

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

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

O plugin pode estar localizado 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 do Multifactor

radius.multifactor.ru   shared_secret   40

em que:

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

Os servidores restantes devem ser excluídos ou comentados (colocar ponto e vírgula no início)

A seguir, crie um arquivo para o tipo de serviço openvpn

$ sudo vi /etc/pam.d/openvpn

e escreva-o

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 - desabilita a transmissão da senha do usuário para o servidor RADIUS Multifactor (ele não precisa saber disso).
  • client_id — substitua [NAS-Identifier] pelo parâmetro correspondente das configurações de recurso VPN.
    Todos os parâmetros possíveis estão descritos em documentação do módulo.

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

Reinicie o OpenVPN

$ sudo systemctl restart openvpn@server

Configuração do cliente

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

auth-user-pass

Проверка

Inicie o cliente OpenVPN, conecte-se ao servidor, digite seu nome de usuário e senha. O bot do Telegram enviará uma solicitação de acesso com dois botões

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

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

Agora você pode salvar sua senha com segurança no cliente; o segundo fator protegerá de forma confiável seu servidor OpenVPN contra acesso não autorizado.

Se algo não funcionar

Verifique sequencialmente se você não perdeu nada:

  • Há um usuário no servidor com OpenVPN com uma senha definida
  • O servidor tem acesso via porta UDP 1812 ao endereço radius.multifactor.ru
  • Os parâmetros NAS-Identifier e Shared Secret estão especificados corretamente
  • Um usuário com o mesmo login foi criado no sistema Multifactor e recebeu acesso ao grupo de usuários VPN
  • O usuário configurou o método de autenticação via Telegram

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

As instruções são feitas com exemplos no CentOS 7.

Fonte: habr.com

Adicionar um comentário