VPN: differenze tra le versioni

Da Webmobili Wiki.
Riga 249: Riga 249:
mv Webmobili-nomecognome /opt/shared/VPN
mv Webmobili-nomecognome /opt/shared/VPN
</syntaxhighlight>
</syntaxhighlight>
p.s. è implicito che tutti gli utenti samba siano nel gruppo www-data (altrimenti <code>sudo adduser pincopallino www-data</code>)
p.s. è implicito che tutti gli utenti samba siano nel gruppo www-data (altrimenti <code>sudo adduser pincopallino www-data</code>).<br/>
Ora è pronta.
Ora è pronta.



Versione delle 18:28, 10 gen 2022

Una Virtual Private Network (VPN) consente di redirigere in tutto o in parte il proprio traffico internet verso un server VPN, permettendo così l'accesso a reti locali o a servizi remoti protetti da firewall con whitelist sull'indirizzo IP.

Per maggiori informazioni generali, si veda Wikipedia.

Informazioni generali

La VPN aziendale è stata realizzata con OpenVPN, un software open source cross-platform. Il server è implementato da un Raspberry aziendale basato su Debian.

Installare e configurare una rete VPN

Per installare una rete VPN, è stata seguita principalmente questa guida OpenVPN.

Installiamo il programma

sudo apt-get install openvpn easy-rsa

Copiamo la cartella di Easy-RSA nei file di conf di openvpn per essere sicuri che un aggiornamento non vada ad intaccare le configurazioni

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

Settiamo i valori default da includere nel certificato

cd /etc/openvpn/easy-rsa
sudo cp vars.example vars
sudo nano vars

Trovare, scommentare e sistemare questi valori

set_var EASYRSA_REQ_COUNTRY    "IT"
set_var EASYRSA_REQ_PROVINCE   "TO"
set_var EASYRSA_REQ_CITY       "Torino"
set_var EASYRSA_REQ_ORG        "Webmobili S.R.L."
set_var EASYRSA_REQ_EMAIL      "info@designbest.com"
set_var EASYRSA_REQ_OU         "Team MESS"

Inizializzare la cartella pki (non so se da root o meno)

sudo ./easyrsa init-pki

Creiamo i certificati principali /etc/openvpn/easy-rsa/pki/ca.crt e /etc/openvpn/easy-rsa/pki/private/ca.key

sudo ./easyrsa build-ca nopass

mettendo come Common Name: Webmobili S.R.L.

Generiamo il Diffie Hellman per l'handshaking della chiave creando /etc/openvpn/easy-rsa/pki/dh.pem

sudo ./easyrsa gen-dh

Per generare certificato e chiave privata del Server OpenVPN server /etc/openvpn/easy-rsa/pki/issued/server.crt and /etc/openvpn/easy-rsa/pki/private/server.key

sudo ./easyrsa build-server-full server nopass

Generate Hash-based Message Authentication Code (HMAC) key, una sicurezza in più che genera /etc/openvpn/easy-rsa/pki/ta.key

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

Copiamo tutti i certificati appena generati nella cartella /etc/openvpn/server/

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

Configuriamo OpenVPN Server

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


Ora editiamo server.conf con una configurazione simile a questa:

port 1317
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.13.19.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
;push "redirect-gateway def1 bypass-dhcp"
push "route 10.13.17.0 255.255.255.0"
push "route 10.13.19.0 255.255.255.0"
push "route 62.173.163.218 255.255.255.255"
push "route 62.173.163.235 255.255.255.255"
push "route 62.173.163.234 255.255.255.255"
push "route 62.173.163.236 255.255.255.255"
push "route 62.173.163.237 255.255.255.255"
push "route 93.62.58.208 255.255.255.255"
push "route 185.81.1.164 255.255.255.255"
push "route 40.68.37.158 255.255.255.255"
push "route 52.236.184.163 255.255.255.255"
push "route 191.237.232.75 255.255.255.255"
push "route 104.40.168.105 255.255.255.255"
push "dhcp-option DNS 10.13.17.20"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client
keepalive 10 120
tls-auth ta.key 0 # Su server 0, sui client 1
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

Port Forwarding

Abilitarlo

sudo nano /etc/sysctl.conf

cercando e abilitando la riga con
net.ipv4.ip_forward = 1

sudo sysctl -p
UFW

Aggiungere al Firewall la regola per la porta

sudo ufw enable
sudo ufw allow 1317/udp
sudo ufw allow OpenSSH
sudo ufw allow Samba

Verificare lo stato di UFW con

sudo ufw status

Capire il nome della scheda di rete col comando

ip route get 8.8.8.8

e poi modificare

sudo nano /etc/ufw/before.rules

aggiungendo le seguenti righe appena prima della sezione *filter

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.13.19.0/24 -o enp3s0 -j MASQUERADE
COMMIT

Permettere l'inoltro dal file del firewall

sudo nano /etc/default/ufw

andando a cercare la riga DEFAULT_FORWARD_POLICY mettendo il valore qua sotto

DEFAULT_FORWARD_POLICY="ACCEPT"
IPTABLES

Prima dell'esistenza di UFW si usava sto casino descritto sotto (non utilizzare se funziona UFW)

Tutto questo va fatto 'da root

sudo -s
iptables -A FORWARD -i enp3s0 -o tap0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 10.13.19.0/24 -o enp3s0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.13.19.0/24 -o enp3s0 -j MASQUERADE

Verificare con

iptables -L

E se tutto va bene salvare con

iptables-save > /etc/iptables.up.rules

Poi è necessario istruire la macchina per avere queste regole nei riavvi successivi

nano /etc/network/if-pre-up.d/iptables

e aggiungerci

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.up.rules

infine bisogna dargli i permessi di esecuzione (e uscire da root)

chmod +x /etc/network/if-pre-up.d/iptables
exit

Creazione di un client

Il file di configurazione (.ovpn) dev'essere simile a questo

client
dev tap
proto udp
remote 89.96.52.243 1316
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert christian.crt
tls-auth ta.key 1
key christian.key
cipher AES-256-CBC
auth SHA512
key-direction 1
comp-lzo
verb 3
route-delay

Importante avere il file ta.key e il valore 1 per i client (0 solo sul server)

Abbiamo creato uno script automatico per generare il client VPN.

cd /opt/shared/bash
sudo ./vpncreateuser

alla domanda rispondere utilizzando nomecognome dell'utente tutto minuscolo senza spazi né caratteri speciali.

Se tutto è andato bene ci ritroviamo la cartella di configurazione VPN pronta proprio nella Working Directory.
Assegniamo i permessi

sudo chown www-data:www-data Webmobili-nomecognome/ -R
sudo chmod 775 Webmobili-nomecognome/ -R
mv Webmobili-nomecognome /opt/shared/VPN

p.s. è implicito che tutti gli utenti samba siano nel gruppo www-data (altrimenti sudo adduser pincopallino www-data).
Ora è pronta.

Webmobili Torino

VPN Webmobili Torino
Indirizzo IP del server 89.96.52.243
Porta 1318
Indirizzo locale del server 10.13.18.1
Indirizzo LAN del server 10.13.17.21

Non è attivata la redirezione completa dell'intero traffico del client attraverso la VPN: solo il traffico diretto verso alcuni indirizzi IP viene inviato sulla connessione VPN. Per aggiungere o rimuovere indirizzi da questa lista, bisogna modificare il file /etc/openvpn/openvpn.conf.

Creazione di un nuovo client (deprecato)

Si tratta di creare un client certificato.
Dalla macchina Jarvis

cd /opt/shared/bash
sudo ./vpncreateuser

# 1- Scrivi il tuo nome: digitare nomecognome in minuscolo

# 2- Enter PEM pass phrase scrivere la password e confermare

# 3- Compilare come segue
# !!molto importante!! il campo Common Name deve essere esattamente Webmobili S.R.L. per matchare il server
Country Name: IT
State or Province Name: TO
Locality Name: Torino
Organization Name: Webmobili S.R.L.
Organizational Unit Name: Team MESS
Common Name: Webmobili S.R.L.
Name: NomeCognome
Email Address: email@dominio.est

# 4- invio su challenge password e optional company name

# 5- Digitare y alle 2 domande successive (importante, invio senza digitare equivale a n )

Se tutto è andato bene ci ritroviamo la cartella di configurazione VPN pronta proprio nella Working Directory.
Assegniamo i permessi

sudo chown www-data:www-data Webmobili-nomecognome/ -R
sudo chmod 775 Webmobili-nomecognome/ -R
mv Webmobili-nomecognome /opt/shared/VPN

Ora è pronta.

Cambiamento di Easy-RSA

Hanno aggiornato Easy-RSA, non esiste più la cartella keys, sostituita da pki e le operazioni per generare un client VPN sono cambiate.
https://www.howtoforge.com/tutorial/how-to-install-and-configure-openvpn-server-on-debian-10/
Questo articoletto va migliorato