Não. Claro que você não pode fazer isso. Isso derrotaria o próprio objetivo do 2FA. Seu servidor deve ter uma maneira de verificar as credenciais do usuário, e essas informações não devem ser enviadas pela rede (por exemplo, você não pode usar apenas o arquivo client.ovpn).
Embora você não precise necessariamente criar usuários unix, você deve permitir que eles instalem seus códigos de verificação no servidor. Você pode usar o sftp com usuários virtuais usando o certificado já emitido, https com autorização (mútua) do cliente, CIFS (samba) ou ftp antigo com extensão TLS ou qualquer outra maneira que permita ao servidor conhecer os códigos de verificação criados pelos usuários . O canal de comunicação deve ser seguro (criptografado || local).
Naturalmente, se seus usuários fizerem upload de seus próprios arquivos, você não poderá usar as credenciais baseadas em arquivo agregadas usadas pelo openvpn-otp. Felizmente, temos outra opção (e muito melhor) usando o excelente módulo de segurança linux pam.
Primeiro, você deve coletar os arquivos de usuário criados pelo google-authenticator em um diretório por um dos métodos mencionados acima. No nosso caso, será / etc / google-auth.
Você deve aplicar um único ID de usuário a todos os arquivos aqui, porque você não possui usuários reais. Que seja openvpn . As permissões devem ser 0400 (-r --------). Pam não gosta de credenciais legíveis por mundo / grupo (certamente). Você pode facilmente aplicar isso com samba, apache, ftp ou, na pior das hipóteses, usando uma guia cron (não recomendado).
Para fins de teste, faça o seguinte:
mkdir /etc/google-auth
apt-get install libpam-google-authenticator
google-authenticator
# set up as you wish, save image and/or codes
mv ~/.google_authenticator /etc/google-auth/some_username
chown -R openvpn /etc/google-auth
Depois disso, você pede ao openvpn para se autenticar na libpam, que possui seu próprio módulo de autenticação do google. Anexe isso ao seu arquivo de servidor openvpn:
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
Isso diz que usaremos o método de autenticação pam com o pam auth id openvpn .
Agora, crie a configuração do pam para o openvpn. Edite /etc/pam.d/openvpn:
auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn
account required pam_permit.so
Aqui dizemos que, sem uma autenticação bem-sucedida do Google, falhamos imediatamente (requisito), estamos usando um arquivo secreto especial em vez do padrão $ HOME / .google_authenticator (secret =) e acessamos os arquivos como usuário openvpn, pois não há um ID de usuário real associado com nossos usuários. Na próxima linha, apenas dizemos que permitimos que todos se conectem após uma autenticação bem-sucedida. É claro que você deve implementar sua própria política de permissão aqui. Você pode controlar usuários permitidos por arquivo, mysql db ou ldap com os respectivos módulos pam.
Anexe isso ao seu arquivo de cliente openvpn
auth-user-pass
auth-nocache
reneg-sec 0
Usamos auth-user-pass para permitir que o cliente openvpn solicite nome de usuário e senha. Não gostamos de cache (a "senha" está mudando) e a renegociação periódica é ruim para nós pelo mesmo motivo.
Depois disso, você poderá se conectar sem o openvpn-otp. Por favor, considere que este é um método muito mais flexível, pois você pode implementar regras muito complexas nos arquivos de controle do pam, se desejar. Você pode ativar / desativar usuários com base no seu diretório mysql ou ldap sem tocar nesses certificados, por exemplo.