Limita il certificato client OpenVPN a VPN specifiche con catena CA condivisa

0

Ho creato una struttura pki x509 privata con openssl costituita da una CA root autofirmata, una CA intermedia e due CA di firma. Le CA di firma vengono utilizzate per separare la firma dei certificati per server e client OpenVPN come suggerito nella parte inferiore di Sezione delle note sulla sicurezza di OpenVPN HOWTO .

Sign server certificates with one CA and client certificates with a different CA. The client configuration ca directive should reference the server-signing CA file, while the server configuration ca directive should reference the client-signing CA file.

Questo è tutto configurato e funziona correttamente funzionando correttamente. Tuttavia, ho due server OpenVPN separati per i quali mi piacerebbe avere una separazione di accesso. Al momento un certificato client che ho rilasciato per un server funzionerà per accedere all'altro server poiché vengono entrambi convalidati attraverso la stessa catena di certificazione della CA.

Come faccio a separare l'utilizzo dei certificati client senza creare una CA di firma separata per ogni server VPN?

    
posta Arronical 07.09.2018 - 11:43
fonte

1 risposta

1

Uso degli hook

Su ogni server, configura un hook client-connect :

client-connect /etc/openvpn/hooks/client-connect

Nello script client-connect , controlla se il nome comune dell'utente è in un elenco di nome comune dedicato per questa istanza del server:

 #!/usr/bin/python3

from sys import exit
from os improt environ

# Load the list of allowed common-names from file.
# One common name per line.
with open("/etc/openvpn/allowed", "rt") as f:
  allowed = f.read().split("\n")

# Allow if the common name is in the list:     
if environ["common_name"] in allowed:
  exit(0)
else:
  exit(1)

Puoi escogitare qualsiasi altro schema per decidere se un utente è autorizzato su un determinato server (denominare la funzione, cercarlo in un database postgres che sta cercando in alto in un LDAP, ecc.)

Utilizzo del CCD

In alternativa, questo elenco può essere definito senza hook through con client-config-dir:

ccd-exclusive
client-config-dir  /etc/openvpn/ccd

Dovresti solo toccare un file per ogni nome comune consentito:

# Add a user to this service:
touch /etc/openvpn/ccd/john.doe
    
risposta data 23.09.2018 - 00:54
fonte