GNU/Linux >> Linux Esercitazione >  >> Panels >> OpenVPN

Installa OpenVPN Server su Debian 11/Debian 10

In questa guida impareremo come installare OpenVPN Server su Debian 11/Debian 10.

Installa OpenVPN Server su Debian 11/Debian 10

Esegui l'aggiornamento del sistema

apt update

Installa OpenVPN su Debian 11/Debian 10

Il pacchetto OpenVPN è disponibile sui repository Debian 11/Debian 10 predefiniti.

apt install openvpn -y

Crea un'infrastruttura a chiave pubblica OpenVPN

Inizializza la PKI OpenVPN. La PKI è composta da:

  • una chiave pubblica e una chiave privata per il server e ogni client
  • un certificato e una chiave dell'autorità di certificazione (CA) master utilizzati per firmare ciascuno dei certificati server e client.

Pertanto, copia la directory di configurazione di easy-rsa in una posizione diversa per assicurarti che i futuri aggiornamenti del pacchetto OpenVPN non sovrascrivano le tue modifiche.

cp -r /usr/share/easy-rsa /etc/

Quindi, inizializza la PKI.

cd /etc/easy-rsa/
./easyrsa init-pki

Esempio di output del comando;

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/easy-rsa/pki

Crea il certificato e la chiave dell'autorità di certificazione (CA)

Quindi, genera il certificato CA e la chiave per la firma dei certificati client e server OpenVPN.

cd /etc/easy-rsa/
./easyrsa build-ca

Verrà richiesta la passphrase della chiave CA e il nome comune del server.

Using SSL: openssl OpenSSL 1.1.1d  10 Sep 2019

Enter New CA Key Passphrase: 
Re-Enter New CA Key Passphrase: 
Generating RSA private key, 2048 bit long modulus (2 primes)
.............................................+++++
...................................+++++
e is 65537 (0x010001)
Can't load /etc/easy-rsa/pki/.rnd into RNG
139670192284800:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/etc/easy-rsa/pki/.rnd
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:Kifarunix-demo CA

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/easy-rsa/pki/ca.crt

Il certificato CA viene generato e archiviato in /etc/easy-rsa/pki/ca.crt .

Genera parametri Diffie Hellman

Genera chiavi Diffie-Hellman utilizzate per lo scambio di chiavi durante l'handshake TLS tra il server OpenVPN e i client di connessione. Questo comando è stato eseguito all'interno della directory Easy-RSA;

./easyrsa gen-dh

I parametri DH di dimensione 2048 verranno creati in /etc/easy-rsa/pki/dh.pem .

Genera certificato e chiave server OpenVPN

Per generare un certificato e una chiave privata per il server OpenVPN, esegui il comando seguente;

cd /etc/easy-rsa
./easyrsa build-server-full server nopass

Immettere la passphrase della chiave CA creata sopra per generare i certificati e le chiavi.

nopass disabilita l'uso della passphrase.

Output di esempio;

Using SSL: openssl OpenSSL 1.1.1d  10 Sep 2019
Generating a RSA private key
........................................+++++
.......................................+++++
writing new private key to '/etc/easy-rsa/pki/private/server.key.MMFHTTtpKD'
-----
Using configuration from /etc/easy-rsa/pki/safessl-easyrsa.cnf
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server'
Certificate is to be certified until Oct 10 18:23:08 2024 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated

Genera chiave HMAC (Message Authentication Code) basata su hash

La chiave di autenticazione precondivisa TLS/SSL viene utilizzata come firma HMAC aggiuntiva su tutti i pacchetti di handshake SSL/TLS per evitare attacchi DoS e inondazioni delle porte UDP. Questo può essere generato usando il comando;

openvpn --genkey secret /etc/easy-rsa/pki/ta.key

Genera certificato di revoca OpenVPN

Per invalidare un certificato firmato in precedenza, è necessario generare un certificato di revoca.

Esegui lo script all'interno della directory Easy-RSA;

./easyrsa gen-crl

Il certificato di revoca viene generato e archiviato in /etc/easy-rsa/pki/crl.pem .

Output di esempio;

Using SSL: openssl OpenSSL 1.1.1d  10 Sep 2019
Using configuration from /etc/easy-rsa/pki/safessl-easyrsa.cnf
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key:

An updated CRL has been created.
CRL file: /etc/easy-rsa/pki/crl.pem

Copia i certificati e le chiavi del server nella directory di configurazione del server

Copia tutti i certificati/chiavi del server generati nella directory di configurazione del server OpenVPN.

cp -rp /etc/easy-rsa/pki/{ca.crt,dh.pem,ta.key,crl.pem,issued,private} /etc/openvpn/server/

Genera certificati e chiavi client OpenVPN

I certificati dei client OpenVPN e le chiavi private possono essere generati come segue

cd /etc/easy-rsa
./easyrsa build-client-full koromicha nopass
  • dove koromicha è il nome del client per il quale vengono generati il ​​certificato e le chiavi.
  • Utilizza sempre un nome comune univoco per ogni client per cui stai generando il certificato e le chiavi.

Esempio di output del comando;

Using SSL: openssl OpenSSL 1.1.1d  10 Sep 2019
Generating a RSA private key
...........................+++++
...........................................................................................................................+++++
writing new private key to '/etc/easy-rsa/pki/private/koromicha.key.saAaE6L0tX'
-----
Using configuration from /etc/easy-rsa/pki/safessl-easyrsa.cnf
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'koromicha'
Certificate is to be certified until Oct 10 18:25:37 2024 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated

Per generare per il secondo client,

./easyrsa build-client-full janedoe nopass

Puoi vedere come utilizzare easyrsa comando con ./easyrsa --help .

Copia certificati e chiavi client nella directory client

Crea directory client OpenVPN. Ad esempio, abbiamo generato certificati e file chiave per due client, koromicha e janedoe, quindi creiamo directory come;

mkdir /etc/openvpn/client/{koromicha,janedoe}

Successivamente, copia i certificati/le chiavi generati dal client e il certificato CA del server nella directory di configurazione del client OpenVPN. Puoi

cp -rp /etc/easy-rsa/pki/{ca.crt,issued/koromicha.crt,private/koromicha.key} /etc/openvpn/client/koromicha
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/janedoe.crt,private/janedoe.key} /etc/openvpn/client/janedoe/

Configura il server OpenVPN su Debian 11/Debian 10

Il prossimo passo è configurare il server OpenVPN. Copia la configurazione del server OpenVPN di esempio in /etc/openvpn/server directory come mostrato di seguito;

Su Debian 10;

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/

Estrai la configurazione.

cd /etc/openvpn/server/
gunzip server.conf.gz

Su Debian 11;

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/

Modifica il file di configurazione, server.conf , per soddisfare le vostre esigenze;

Ecco come appaiono le nostre configurazioni senza commenti.

cp /etc/openvpn/server/server.conf{,.bak}
cat > /etc/openvpn/server/server.conf << 'EOL'
port 1194
proto udp
dev tun
ca ca.crt
cert issued/server.crt
key private/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 208.67.222.222"
push "dhcp-option DNS 8.8.8.8"
client-to-client
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append  /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1
auth SHA512
EOL

Salva ed esci dalla configurazione una volta terminata la modifica.

Configura l'inoltro IP OpenVPN

Per garantire che il traffico dal client venga instradato attraverso l'indirizzo IP del server OpenVPN (aiuta a mascherare l'indirizzo IP del client), è necessario abilitare l'inoltro IP sul server OpenVPN.

Decommenta la riga, net.ipv4.ip_forward=1 , su /etc/sysctl.conf per abilitare l'inoltro dei pacchetti per IPv4

sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf

Applica le modifiche senza riavviare il server.

sysctl -p

Consenti la porta del servizio OpenVPN attraverso il firewall;

ufw allow 1194/udp

Configura IP Masquerading su UFW

Trova la tua interfaccia predefinita attraverso la quale vengono inviati i tuoi pacchetti.

ip route get 8.8.8.8
8.8.8.8 via 10.0.2.2 dev enp0s3 src 10.0.2.15 uid 0

Quindi, aggiorna le regole UFW;

vim /etc/ufw/before.rules

Aggiungi le seguenti righe evidenziate appena prima del *filter impostazioni della tabella. Nota che l'interfaccia utilizzata deve corrispondere al nome dell'interfaccia sopra.

...
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8 -o enp0s3 -j MASQUERADE
COMMIT
# Don't delete these required lines, otherwise there will be errors
*filter
...

Salva ed esci dalla configurazione.

Abilita inoltro pacchetti UFW;

sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/' /etc/default/ufw

Ricarica UFW;

ufw reload

Eseguire OpenVPN Server su Debian 11/Debian 10

Avvia e abilita il server OpenVPN per l'esecuzione all'avvio del sistema;

systemctl enable --now [email protected]

Verifica dello stato;

systemctl status [email protected]
[email protected] - OpenVPN service for server
   Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2021-10-26 15:06:18 EDT; 9s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
 Main PID: 1595 (openvpn)
   Status: "Initialization Sequence Completed"
    Tasks: 1 (limit: 2359)
   Memory: 2.4M
   CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected]
           └─1595 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf

Oct 26 15:06:18 debian systemd[1]: Starting OpenVPN service for server...
Oct 26 15:06:18 debian systemd[1]: Started OpenVPN service for server.

Quando il servizio OpenVPN viene eseguito, creerà un'interfaccia di tunneling, tun0;

ip add s
...
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::bf6a:bdf4:58e1:ec24/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Inoltre, assicurati di controllare i log;

tail /var/log/openvpn/openvpn.log
/sbin/ip link set dev tun0 up mtu 1500
/sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255
Could not determine IPv4/IPv6 protocol. Using AF_INET
Socket Buffers: R=[212992->212992] S=[212992->212992]
UDPv4 link local (bound): [AF_INET][undef]:1194
UDPv4 link remote: [AF_UNSPEC]
MULTI: multi_init called, r=256 v=256
IFCONFIG POOL: base=10.8.0.2 size=252, ipv6=0
IFCONFIG POOL LIST
Initialization Sequence Completed

Il server OpenVPN è ora pronto per accettare e instradare le connessioni dai client.

Questo segna la fine della nostra guida su come installare OpenVPN Server su Debian 11/Debian 10.

Ora puoi configurare i tuoi clienti di conseguenza.

Esercitazioni correlate

Installa e configura il client OpenVPN su CentOS 8/Ubuntu 18.04

Configura l'autenticazione basata su LDAP OpenVPN

Configura IPSEC VPN usando StrongSwan su Ubuntu 18.04

OpenVPN
  1. Come installare e configurare OpenVPN Server su Debian 10

  2. Come installare Redis Server su Debian 11

  3. Come installare MySQL 8.0 / 5.7 su Debian 11 / Debian 10

  4. Installa il server Wireguard su Debian 10/11

  5. Come installare ProFTPD su Debian 8

Come installare FastPanel su Debian 11

Installa un server Redis su Debian 11

Come installare I2P su Debian Server:

Installa Firefox Sync Server su Debian 11

Come installare OpenVPN su Debian 9 Stretch

Come installare il server OpenVPN su Debian 11