Ricerca nel sito web

Installazione e configurazione di server e client OpenVPN su Debian 7


Questo articolo descrive in dettaglio come ottenere la connettività IPv6 su OpenVPN utilizzando Debian Linux. Il processo è stato testato su Debian 7 su un KVM VPS con connettività IPv6 come server e un desktop Debian 7. I comandi devono essere eseguiti come root.

Cos'è OpenVPN?

OpenVPN è un programma VPN che utilizza SSL/TLS per creare connessioni VPN sicure e crittografate, per instradare il traffico Internet, impedendo così lo snooping. Open VPN è altamente in grado di attraversare in modo trasparente i firewall. Infatti, se la situazione lo richiede, è possibile eseguirlo sulla stessa porta TCP di HTTPS (443), rendendo il traffico indistinguibile e quindi praticamente impossibile da bloccare.

OpenVPN può utilizzare una varietà di metodi come chiavi segrete precondivise, certificati o nomi utente/password per consentire ai client di autenticarsi sul server. OpenVPN utilizza il protocollo OpenSSL e implementa molte funzionalità di sicurezza e controllo come l'autenticazione con risposta alle sfide, funzionalità di accesso singolo, bilanciamento del carico e funzionalità di failover e supporto multi demone.

Perché usare OpenVPN?

Pensa a comunicazioni sicure: pensa a OpenVPN. Se non vuoi che nessuno possa curiosare sul tuo traffico Internet, utilizza OpenVPN per instradare tutto il tuo traffico attraverso un tunnel sicuro e altamente crittografato.

Ciò è particolarmente importante quando ci si connette alle reti Wi-Fi pubbliche negli aeroporti e in altri luoghi. Non puoi mai essere sicuro di chi sta curiosando nel tuo traffico. Puoi incanalare il tuo traffico attraverso il tuo server OpenVPN per evitare lo snooping.

Se ti trovi in uno dei paesi che monitorano regolarmente tutto il tuo traffico e bloccano i siti web a piacimento, puoi utilizzare OpenVPN sulla porta TCP 443, per renderlo indistinguibile dal traffico HTTPS. Puoi anche combinare OpenVPN con altre strategie di sicurezza come il tunneling del tuo traffico OpenVPN su un tunnel SSL, per battere le tecniche di Deep Packet Inspection che potrebbero essere in grado di identificare le firme OpenVPN.

Requisiti di sistema

OpenVPN richiede requisiti minimi per essere eseguito. Un sistema con 64 MB di RAM e 1 GB di spazio su disco fisso è sufficiente per eseguire OpenVPN. OpenVPN funziona su quasi tutti i sistemi operativi tradizionali.

Installazione e configurazione di OpenVPN su Debian 7

Installa OpenVPN sul server principale

Esegui il comando seguente per installare OpenVPN.

apt-get install openvpn

Per impostazione predefinita, gli script easy-rsa vengono installati nella directory "/usr/share/easy-rsa/". Quindi, dobbiamo copiare questi script nella posizione desiderata, ovvero /root/easy-rsa.

mkdir /root/easy-rsa
cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/easy-rsa

Genera certificato CA e chiave CA

Apri il file "vars" e apporta le seguenti modifiche, ma prima di apportare modifiche ti suggerisco di eseguire il backup del file originale.

cp vars{,.orig}

Utilizzando il tuo editor di testo, imposta i valori predefiniti per easy-rsa. Per esempio.

KEY_SIZE=4096
KEY_COUNTRY="IN"
KEY_PROVINCE="UP"
KEY_CITY="Noida"
KEY_ORG="Home"
KEY_EMAIL="[email "

Qui sto utilizzando una chiave a 4096 bit. Se lo desideri, puoi utilizzare una chiave a bit 1024, 2048, 4096 o 8192.

Esportare i valori predefiniti eseguendo il comando.

source ./vars

Pulisci tutti i certificati generati in precedenza.

./clean-all

Successivamente, esegui il comando seguente per generare il certificato CA e la chiave CA.

./build-ca

Genera il certificato del server eseguendo il comando. Sostituisci il "nome server" con il nome del tuo server.

./build-key-server server-name

Genera il certificato Diffie Hellman PEM.

./build-dh

Generare il certificato client. Sostituisci il "nome cliente" con il nome del tuo cliente.

./build-key client-name

Genera il codice HMAC.

openvpn --genkey --secret /root/easy-rsa/keys/ta.key

Copiare i certificati sulle macchine client e server come segue.

  1. Assicurati che ca.crt sia presente sia sul client che sul server.
  2. La chiave ca.key dovrebbe trovarsi sul client.
  3. Il server richiede server.crt, dh4096.pem, server.key e ta.key.
  4. client.crt, client.key e ta.key dovrebbero essere sul client.

Per configurare le chiavi e i certificati sul server, eseguire i comandi.

mkdir -p /etc/openvpn/certs
cp -pv /root/easy-rsa/keys/{ca.{crt,key},server-name.{crt,key},ta.key,dh4096.pem} /etc/openvpn/certs/

Configurazione del server OpenVPN

Ora devi configurare il server OpenVPN. Apri il file "/etc/openvpn/server.conf". Si prega di apportare le modifiche come descritto di seguito.

script security 3 system
port 1194
proto udp
dev tap

ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server-name.crt
key /etc/openvpn/certs/server-name.key
dh /etc/openvpn/certs/dh4096.pem
tls-auth /etc/openvpn/certs/ta.key 0

server 192.168.88.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

keepalive 1800 4000

cipher DES-EDE3-CBC # Triple-DES
comp-lzo

max-clients 10

user nobody
group nogroup

persist-key
persist-tun

#log openvpn.log
#status openvpn-status.log
verb 5
mute 20

Abilita l'inoltro IP sul server.

echo 1 > /proc/sys/net/ipv4/ip_forward

Esegui il comando seguente per configurare OpenVPN per l'avvio all'avvio.

update-rc.d -f openvpn defaults

Avvia il servizio OpenVPN.

service openvpn restart

Installa OpenVPN sul client

Esegui il comando seguente per installare OpenVPN sul computer client.

apt-get install openvpn

Utilizzando un editor di testo, imposta la configurazione del client OpenVPN in "/etc/openvpn/client.conf" sul client. Una configurazione di esempio è la seguente:

script security 3 system
client
remote vpn_server_ip
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/client.crt
key /etc/openvpn/certs/client.key
cipher DES-EDE3-CBC
comp-lzo yes
dev tap
proto udp
tls-auth /etc/openvpn/certs/ta.key 1
nobind
auth-nocache
persist-key
persist-tun
user nobody
group nogroup

Esegui il comando seguente per configurare OpenVPN per l'avvio all'avvio.

update-rc.d -f openvpn defaults

Avvia il servizio OpenVPN sul client.

service openvpn restart

Una volta accertato che OpenVPN funzioni correttamente su IPv4, ecco come far funzionare IPv6 su OpenVPN.

Far funzionare IPv6 con OpenVPN sul server

Aggiungi le seguenti righe alla fine del file di configurazione del server "/etc/openvpn/server.conf".

client-connect /etc/openvpn/client-connect.sh
client-disconnect /etc/openvpn/client-disconnect.sh

Questi due script creano/distruggono il tunnel IPv6 ogni volta che un client si connette/disconnette.

Ecco il contenuto di client-connect.sh.

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
ifconfig $dev up
ifconfig $dev add ${BASERANGE}:1001::1/64
ip -6 neigh add proxy 2a00:dd80:003d:000c:1001::2 dev eth0
exit 0

Il mio host mi assegna indirizzi IPV6 dal blocco 2a00:dd80:003d:000c::/64. Quindi utilizzo
2a00:dd80:003d:000c come RANGE BASE. Modifica questo valore in base a ciò che ti ha assegnato il tuo host.

Ogni volta che un client si connette a OpenVPN, questo script assegna l'indirizzo 2a00:dd80:003d:000c:1001::1 come indirizzo IPV6 del tap0< interfaccia del server.

L'ultima riga imposta Neighbour Discovery per il nostro tunnel. Ho aggiunto l'indirizzo IPv6 della connessione tap0 lato client come indirizzo proxy.

Ecco il contenuto di client-disconnect.sh.

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
/sbin/ip -6 addr del ${BASERANGE}::1/64 dev $dev
exit 0

Questo cancella semplicemente l'indirizzo del tunnel IPv6 del server, quando il client si disconnette. Modificare il valore di BASERANGE come appropriato.

Rendi eseguibili gli script.

chmod 700 /etc/openvpn/client-connect.sh
chmod 700 /etc/openvpn/client-disconnect.sh

Aggiungi le seguenti voci a "/etc/rc.local" (puoi anche modificare i sysctl appropriati in /etc/sysctl.conf).

echo 1 >/proc/sys/net/ipv6/conf/all/proxy_ndp
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
/etc/init.d/firewall stop && /etc/init.d/firewall start

Queste voci attivano la scoperta e l'inoltro dei vicini. Ho anche aggiunto un firewall.

Crea "/etc/init.d/firewall" e inserisci il seguente contenuto.

#!/bin/sh
description: Firewall
IPT=/sbin/iptables
IPT6=/sbin/ip6tables
case "$1" in
start)
$IPT -F INPUT
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
$IPT -A INPUT -i tap+ -j ACCEPT
$IPT -A FORWARD -i tap+ -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t nat -F POSTROUTING
$IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
$IPT -A INPUT -i eth0 -j DROP
$IPT6 -F INPUT
$IPT6 -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT6 -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT6 -A INPUT -i eth0 -p icmpv6 -j ACCEPT
$IPT6 -A FORWARD -s 2a00:dd80:003d:000c::/64 -i tap0 -o eth0 -j ACCEPT
$IPT6 -A INPUT -i eth0 -j DROP
exit 0
;;
stop)
$IPT -F
$IPT6 -F
exit 0
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
esac

Esegui '/etc/rc.local' e avvia il firewall.

sh /etc/rc.local

Questo completa le modifiche lato server.

Far funzionare IPv6 con OpenVPN sul client

Aggiungi quanto segue come ultime righe del file di configurazione del tuo client "/etc/openvpn/client.conf".

create the ipv6 tunnel
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh
need this so when the client disconnects it tells the server
explicit-exit-notify

Gli script su e giù creano/distruggono i punti finali del client IPV6 della connessione tap0 del client ogni volta che un client si connette/disconnette da o al server OpenVPN.

Ecco il contenuto di up.sh.

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
ifconfig $dev up
ifconfig $dev add ${IPV6BASE}:1001::2/64
ip -6 route add default via ${IPV6BASE}:1001::1
exit 0

Lo script assegna l'indirizzo IPV6 2a00:dd80:3d:c:1001::2 come indirizzo IPV6 del client e imposta il percorso IPV6 predefinito attraverso il server.

Modificare IPV6BASE in modo che sia uguale a BASERANGE nella configurazione del server.

Ecco il contenuto di down.sh.

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
/sbin/ip -6 addr del ${IPV6BASE}::2/64 dev $dev
/sbin/ip link set dev $dev down
/sbin/ip route del ::/0 via ${IPV6BASE}::1
exit 0

Questo elimina semplicemente l'indirizzo IPV6 del client e interrompe il percorso IPV6 quando il client si disconnette dal server.

Modifica IPV6BASE in modo che sia uguale a BASERANGE nella configurazione del server e rendi eseguibile lo script.

chmod 700 /etc/openvpn/up.sh
chmod 700 /etc/openvpn/down.sh

Facoltativamente, modifica "/etc/resolv.conf" e aggiungi i server dei nomi IPV6 di Google per la risoluzione DNS.

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

Riavvia openvpn sul server e quindi connettiti ad esso dal client. Dovresti essere connesso. Visita test-ipv6.com per verificare che la tua connettività IPV6 su OpenVPN funzioni.

Collegamenti di riferimento

Home page di OpenVPN

Fonte: stavrovski