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

OpenVPN - Proteggi l'amministrazione del tuo server con una connessione VPN multipiattaforma

OpenVPN è una VPN SSL completa che implementa l'estensione di rete sicura di livello 2 o 3 OSI utilizzando il protocollo SSL/TLS standard del settore. Supporta metodi di autenticazione client flessibili basati su certificati, smart card e/o credenziali nome utente/password e consente criteri di controllo dell'accesso specifici per utenti o gruppi utilizzando regole firewall applicate all'interfaccia virtuale VPN. OpenVPN non è un proxy per applicazioni web e non funziona tramite un browser web.

Preparazione del server

Per questo tutorial, utilizzeremo un server Debian o Ubuntu. Puoi utilizzare qualsiasi server che hai già in produzione.

Installazione OpenVPN

Tutte le distribuzioni conosciute di server Linux e UNIX hanno OpenVPN nel loro repository. L'installazione è semplice come eseguire:

apt-get install openvpn

Configurazione firewall

La porta di ascolto predefinita per OpenVPN è 1194. È sicuro utilizzare la porta predefinita. OpenVPN utilizza il protocollo UDP per impostazione predefinita. C'è una semplice ragione per questo:

OpenVPN utilizza i livelli 2 e 3

  • Il livello 2 è il livello Data Link che fornisce il trasferimento senza errori di frame di dati sul livello fisico, il che significa che utilizza il proprio dispositivo di rete TUN/TAP.
  • Il livello 3 è il livello di rete che fornisce il routing.

e questo significa che il livello 4 (livello di trasporto che garantisce la consegna dei pacchetti) è gestito dal sistema operativo e dall'applicazione stessa. Detto semplicemente, qualsiasi controllo del traffico e della consegna dei pacchetti viene effettuato dal sistema operativo, quindi non è necessario farlo due volte dallo stesso OpenVPN. Naturalmente, c'è un'opzione per utilizzare TCP per OpenVPN, il che significa che si sprecano più risorse, ma in caso di ambienti speciali, potrebbe essere utile.

Per riassumere, è sufficiente aprire la porta 1194 per UDP per consentire la connessione VPN. Non è necessario alcun filtro poiché OpenVPN ha implementato la propria verifica e controllo (vedi in una sezione successiva). Aggiungi la seguente istruzione nella configurazione del firewall.

-A INPUT -p udp -m udp --dport 1194 -j ACCEPT

Configurazione del server

Dopo aver installato con successo OpenVPN, puoi trovare tutti i file di configurazione di OpenVPN nella cartella /etc/openvpn. Apriamo il file server.conf nel nostro editor e lo modifichiamo.

nano /etc/openvpn/server.conf

Controlla e modifica le seguenti sezioni:

# SSL/TLS root certificate (ca), certificate
# (cert), and private key (key).

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key # This file should be kept secret

# Diffie hellman parameters.
dh /etc/openvpn/easy-rsa/keys/dh2048.pem

# Configure server mode and supply a VPN subnet
server 10.9.8.0 255.255.255.0

# Push routes to the client
push "route 10.9.8.0 255.255.255.0"

# For extra security beyond that provided
# by SSL/TLS, create an "HMAC firewall"
# to help block DoS attacks and UDP port flooding.
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 # This file is secret

# Select a cryptographic cipher.
cipher AES-128-CBC # AES

# Enable compression on the VPN link.
comp-lzo

# It's a good idea to reduce the OpenVPN
# daemon's privileges after initialization.
user vpn
group vpn

Poiché abbiamo scelto la sottorete 10.9.8.0/24 come sottorete interna, il tuo client riceverà un indirizzo IP da questa sottorete dopo la connessione. Per impostazione predefinita, 10.9.8.1 è riservato al server stesso.

Generazione certificati

Innanzitutto, dobbiamo modificare le vars file. Inserisci i parametri KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG e KEY_EMAIL. Questi valori verranno utilizzati ogni volta che genererai un nuovo certificato.

Per caricare il file vars, esegui:

./vars

Dopo averli caricati, possiamo creare un'autorità di certificazione:

./clean-all
./build-ca

Una volta generata la CA, procedere con la generazione dei certificati del server:

./build-key-server server

E un altro certificato per il cliente:

./build-key client

Dopotutto, dobbiamo generare parametri DH:

./build-dh

Più sicurezza

Per assicurarci di aver protetto il nostro server OpenVPN, utilizzeremo tls-auth. Ciò garantisce che non invieremo i nostri certificati a server compromessi.

openvpn –genkey –secret ta.key

Questo file ta.key deve essere incluso ora nel pacchetto di certificati di ogni client.

Configurazione client

 ##############################################
# Sample client-side OpenVPN 2.0 config file #
# for connecting to multi-client server. #
# #
# This configuration can be used by multiple #
# clients, however each client should have #
# its own cert and key files. #
# #
# On Windows, you might want to rename this #
# file so it has a .ovpn extension #
##############################################

# Specify that we are a client and that we
# will be pulling certain config file directives
# from the server.
client

# Use the same setting as you are using on
# the server.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun

# Windows needs the TAP-Windows adapter name
# from the Network Connections panel
# if you have more than one. On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap

# Are we connecting to a TCP or
# UDP server? Use the same setting as
# on the server.
;proto tcp
proto udp

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote <your-server-ip> 1194
;remote my-server-2 1194

# Choose a random host from the remote
# list for load-balancing. Otherwise
# try hosts in the order specified.
;remote-random

# Keep trying indefinitely to resolve the
# host name of the OpenVPN server. Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite

# Most clients don't need to bind to
# a specific local port number.
nobind

# Downgrade privileges after initialization (non-Windows only)
;user nobody
;group nobody

# Try to preserve some state across restarts.
persist-key
persist-tun

# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here. See the man page
# if your proxy server requires
# authentication.
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]

# Wireless networks often produce a lot
# of duplicate packets. Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings

# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
ca ca.crt
cert client.crt
key client.key

# Verify server certificate by checking
# that the certicate has the nsCertType
# field set to "server". This is an
# important precaution to protect against
# a potential attack discussed here:
# http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the nsCertType
# field set to "server". The build-key-server
# script in the easy-rsa folder will do this.
;ns-cert-type server

# If a tls-auth key is used on the server
# then every client must also have the key.
tls-auth ta.key 1

# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
cipher AES-128-CBC

# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
comp-lzo

# Set log file verbosity.
verb 3

# Silence repeating messages
mute 20 

Salvalo come file client.ovpn e includi ta.key, ca.crt, client.crt, client.key in una cartella.

Dopo aver installato il client openvpn sul tuo computer ed aver eseguito il file di configurazione client.ovpn, dovresti essere in grado di connetterti al tuo server VPN. Dopodiché ottieni un indirizzo IP dall'intervallo 10.9.8.0/24 che imposti e collabori con il tuo server in privato.


OpenVPN
  1. Come configurare un server OpenVPN su Debian 9

  2. Configura un server VPN Linux utilizzando OpenVPN – Guida passo passo

  3. Come proteggere il server di posta elettronica dall'hacking con VPN (Debian/Ubuntu)

  4. Installa il server VPN Wireguard con Docker

  5. Configura il server VPN IPSec con Libreswan su CentOS 8

Configurazione di un server OpenVPN con Synology e Viscosity

Configurazione di un server OpenVPN con router Tomato e Viscosity

Configurazione di un server OpenVPN con Ubuntu e Viscosity

Configurazione di un server OpenVPN con VyOS e Viscosity

Come connettersi a una VPN con OpenVPN

Come proteggere SSH con Fail2Ban