Configurei um serviço OpenVPN em meu servidor com autenticação de nome de usuário e senha e nenhum certificado de cliente é necessário.
Eu defini o nome de usuário e a senha em /etc/passwd e /etc/shadow. agora, não há problema em conectar-se com um usuário específico para OpenVPN (que é client1 ), mas tentei root (um usuário linux), também é possível conectar-se.
A questão é: existe alguma maneira de armazenar esses usuários para OpenVPN em vez de passwd? É muito perigoso, eu acho, ou outro grupo (crie um grupo em /etc/gourp para OpenVPN) para limitá-los?
server.conf
port 20487
proto udp
dev tun
;dev-node MyTap
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh.pem
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.0.0.1"
push "dhcp-option DNS 1.1.1.1"
duplicate-cn
keepalive 10 120
tls-crypt ta.key 0 # This file is secret
data-ciphers AES-256-GCM
data-ciphers-fallback AES-256-GCM
max-clients 24
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 5
explicit-exit-notify 1
plugin openvpn-plugin-auth-pam.so login
verify-client-cert none
username-as-common-name
script-security 2
cliente.ovpn
client
dev tun
proto udp
remote [destnation] 20487
auth-user-pass
#verify-client-cert none
#username-as-common-name
data-ciphers-fallback AES-256-GCM
data-ciphers AES-256-GCM
<ca>
-----BEGIN CERTIFICATE-----
ca.crt
-----END CERTIFICATE-----
</ca>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
ta.key
-----END OpenVPN Static key V1-----
</tls-crypt>
/etc/passwd
root:x:0:0:root:/root:/bin/bash
***
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
***
client1:x:1001:65534::/nonexistent:/usr/sbin/nologin
/etc/shadow
root:$y$*:19532:0:99999:7:::
***
nobody:*:19172:0:99999:7:::
***
client1:$y$j9T$K0ubESGFtXD2Imra5pMVJ/$ZUM2HNYn.0X9smrtKEAdgjIclQIdcURbI4xxlTU6tHB:19532:0:99999:7:::
Não use a
login
pilha PAM; copie-o e crie o seu próprio. Por exemplo,/etc/pam.d/openvpn
. Depois de separar uma pilha PAM da configuração de login do sistema, você pode personalizá-la de várias maneiras:por exemplo, você pode inserir um
pam_succeed_if.so
para evitar tentativas de autenticação se o usuário não estiver em um grupo especificado;você pode substituir
pam_unix.so
(o módulo /etc/shadow check) pelopam_pwdfile.so
qual pode de fato ler um arquivo de hash de senha separado; (observe que pam_pwdfile é um módulo instalado separadamente)você pode manter a parte de autenticação como está, mas modificar a parte de autorização
account
, ou seja, o grupo, para que ela rejeite usuários que não estão em um grupo especificado.(A
auth
pilha verifica a exatidão das credenciais fornecidas, aaccount
pilha verifica a validade da conta e as permissões para acessar o serviço.)Por exemplo: