VPN
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 una macchina virtuale (services) basata su Debian; sono disponibili client per Windows, Linux e Android.
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 SHA512Port Forwarding
Abilitarlo
sudo nano /etc/sysctl.conf
cercando e abilitando la riga con
net.ipv4.ip_forward = 1
sudo sysctl -p
Aggiungere al Firewall la regola per la porta
sudo ufw allow 1317/udp
sudo ufw allow OpenSSH
sudo ufw disable
sudo ufw enableCapire 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"
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
chmod +x /etc/network/if-pre-up.d/iptables
exit
Creazione di un client
Scritto a cazzo di cane perché è fine anno, giusto per non dimenticare.
Il file di configurazione 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-delayImportante avere il file ta.key e il valore 1 per i client (0 solo sul server)
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
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/VPNOra è 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