usando métodos alternativos de autenticação

OpenVPN 2.0 e mais tarde incluir uma característica que permite ao servidor OpenVPN obter de forma segura um nome de usuário e senha de um cliente de conexão, e usar essa informação como base para autenticar o cliente.

para usar este método de autenticação, primeiro adicione a diretiva auth-user-pass à configuração do cliente. Ele irá direcionar o cliente OpenVPN para consultar o Usuário para obter um nome de usuário/senha, passando-o para o servidor através do canal TLS seguro.

em seguida, configure o servidor para usar um plugin de autenticação, que pode ser um script, objeto compartilhado, ou DLL. O servidor OpenVPN irá ligar para o plugin sempre que um cliente de VPN tentar ligar-se, passando-lhe o nome de utilizador/senha introduzida no cliente. O plugin de autenticação pode controlar se o servidor OpenVPN permite que o cliente se conecte retornando um valor de falha (1) ou sucesso (0).

Usando ‘Plugins’ de Script

os ‘plugins’ de Script podem ser usados adicionando a diretriz auth-user-pass-verify ao arquivo de configuração do servidor. Por exemplo:

auth-user-pass-verify auth-pam.pl via-file

usará o auth-pam.pl programa perl para autenticar o nome de utilizador/Senha dos clientes de ligação. Veja a descrição de auth-user-pass-verify na página de manual para mais informações.

a auth-pam.pl script está incluído na distribuição de arquivo de código OpenVPN no sample-scriptssubdirectory. Ele irá autenticar os usuários em um servidor Linux usando um módulo de autenticação PAM, que por sua vez poderia implementar a senha sombra, rádio ou autenticação LDAP. auth-pam.pl destina-se principalmente a fins de demonstração. Para a autenticação PAM no mundo real, use o ‘plugin’ de objectos openvpn-auth-pamshared descrito em baixo.

Using Shared Object or DLL Plugins

Shared object or DLL plugins are usually compiled C modules which are loaded by the OpenVPN server at run time. Por exemplo, se você estiver usando um pacote OpenVPN baseado em RPM no Linux, o plugin openvpn-auth-pam já deve ser construído. Para o usar, adicione isto ao ficheiro de configuração do lado do servidor:

plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login

isto irá dizer ao servidor OpenVPN para validar o utilizador/Senha introduzidos pelos clientes, usando o módulo loginPAM.

para o uso da produção no mundo real, é melhor usar o plugin openvpn-auth-pam, porque tem várias vantagens sobre o auth-pam.pl programa:

  • o plugin OpenVPN-auth-pam de objeto compartilhado usa um modelo de execução split-privilege para uma melhor segurança. Isto significa que o servidor OpenVPN pode executar com privilégios reduzidos usando as diretivas user nobody, group nobody, e chroot, e ainda será capaz de autenticar-se contra o arquivo de senha de root-legível-somente sombra.
  • OpenVPN pode passar o nome de usuário/senha para um plugin através de memória virtual, em vez de através de um arquivo ou do ambiente, o que é melhor para a segurança local na máquina do servidor.
  • módulos de plugins compilados em C geralmente correm mais rápido do que scripts.

se desejar mais informações sobre o desenvolvimento dos seus próprios ‘plugins’ para usar com o OpenVPN, veja os ficheiros README na sub-pasta de ‘plugins’ da distribuição de código OpenVPN.

para criar o plugin openvpn-auth-pam no Linux, cd para o directório plugin/auth-pam na distribuição de código OpenVPN e executar make.

usando o nome de utilizador/Senha de autenticação como a única forma de autenticação do cliente

por omissão, usando auth-user-pass-verify ou um plugin de verificação de nome de utilizador/Senha no servidor irá permitir a dupla autenticação, exigindo que tanto o certificado de cliente como o utilizador/Senha de autenticação tenham sucesso para que o cliente seja autenticado.

embora seja desencorajado de uma perspectiva de segurança, também é possível desativar o uso de certificados de cliente, e forçar apenas a autenticação de nome de usuário/senha. No servidor:

client-cert-not-required

Essas configurações geralmente deve também definir:

username-as-common-name

o que vai dizer ao servidor para usar o nome de utilizador para fins de indexação, como seria usar o Nome Comum de um cliente que foi de autenticação através de um certificado de cliente.

Note que Cliente-cert-não-requerido não irá obviar a necessidade de um certificado de servidor, de modo que um cliente conectando-se a um servidor que usa cliente-cert-não-necessário pode remover as diretivas cert e chave do arquivo de configuração do cliente, mas não a diretiva AC, porque é necessário para o cliente Verificar o certificado do servidor.



+