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
- OpenVPN utiliza o plugin openvpn-plugin-auth-pam para autenticação.
- O plugin verifica a senha do usuário no servidor e solicita o segundo fator através do protocolo RADIUS no serviço Multifator.
- O Multifator envia uma mensagem ao usuário via bot do Telegram, pedindo a confirmação de acesso.
- 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 , 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.

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.

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.

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 openvpnO 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_radiusAbra o arquivo para edição /etc/pam_radius.conf e especifique o endereço do servidor RADIUS Multifatorial
radius.multifactor.ru shared_secret 40onde:
- 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/openvpne insira o seguinte
auth required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth substack password-auth
account substack password-authA 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 .
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@serverConfiguração do Cliente
Ative no arquivo de configuração do cliente a solicitação de login e senha do usuário
auth-user-passVerificaçã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

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 .
A instrução foi elaborada com exemplos para CentOS 7.
Fonte: habr.com
