OpenVPN Server og klientinstallation og konfiguration på Debian 7


Denne artikel beskriver, hvordan man opnår IPv6-forbindelse på OpenVPN ved hjælp af Debian Linux. Processen er testet på Debian 7 på en KVM VPS med IPv6-forbindelse som server og et Debian 7-skrivebord. Kommandoerne skal køres som root.

OpenVPN er et VPN-program, der bruger SSL/TLS til at oprette sikre, krypterede VPN-forbindelser for at dirigere din internettrafik og dermed forhindre snooping. Open VPN er meget i stand til gennemsigtig gennemkørsel af firewalls. Faktisk, hvis situationen kræver det, kan du køre den på den samme TCP-port som HTTPS (443), hvilket gør trafikken umulig at skelne mellem og dermed næsten umulig at blokere.

OpenVPN kan bruge en række forskellige metoder som forud delte hemmelige nøgler, certifikater eller brugernavne/adgangskoder for at lade klienter godkende sig til serveren. OpenVPN bruger OpenSSL-protokollen og implementerer mange sikkerheds- og kontrolfunktioner såsom udfordringsresponsgodkendelse, single sign-on-kapacitet, belastningsbalancering og failover-funktioner og multi-dæmonsupport.

Tænk sikker kommunikation - tænk OpenVPN. Hvis du ikke vil have nogen, der snoker på din internettrafik, skal du bruge OpenVPN til at dirigere al din trafik gennem en meget krypteret, sikker tunnel.

Dette er især vigtigt, når du opretter forbindelse til offentlige WIFI-netværk i lufthavne og andre steder. Du kan aldrig være sikker på, hvem der snyder på din trafik. Du kan kanalisere din trafik gennem din egen OpenVPN-server for at forhindre snooping.

Hvis du er i et af de lande, der rutinemæssigt overvåger al din trafik og blokerer websteder efter ønske, kan du bruge OpenVPN over TCP-port 443 for at gøre det skelnes ikke fra HTTPS-trafik. Du kan endda kombinere OpenVPN med andre sikkerhedsstrategier som at tunnele din OpenVPN-trafik over en SSL-tunnel for at slå Deep Packet Inspection-teknikker, der muligvis kan identificere OpenVPN-signaturer.

OpenVPN kræver meget minimale krav for at køre. Et system med 64 MB RAM og 1 GB harddiskplads er nok til at køre OpenVPN. OpenVPN kører på næsten alle de almindelige operativsystemer.

Installation og konfiguration af OpenVPN på Debian 7

Kør følgende kommando for at installere OpenVPN.

# apt-get install openvpn

Som standard er easy-rsa-scripts installeret under mappen '/ usr/share/easy-rsa /'. Så vi er nødt til at kopiere disse scripts til den ønskede placering, dvs./root/easy-rsa.

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

Åbn filen 'vars' og foretag følgende ændringer, men inden du foretager ændringer, foreslår jeg, at du tager sikkerhedskopi af den originale fil.

# cp vars{,.orig}

Brug din teksteditor til at indstille standardværdierne til easy-rsa. For eksempel.

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

Her bruger jeg en 4096 bit-nøgle. Du kan bruge en 1024, 2048, 4096 eller 8192 bit nøgle efter ønske.

Eksporter standardværdierne ved at køre kommandoen.

# source ./vars

Ryd op i certifikater, der blev genereret tidligere.

./clean-all

Kør derefter følgende kommando for at generere CA-certifikat og CA-nøgle.

# ./build-ca

Generer servercertifikatet ved at køre kommandoen. Udskift 'servernavnet' med dit servernavn.

# ./build-key-server server-name

Generer Diffie Hellman PEM-certifikatet.

# ./build-dh

Generer klientcertifikatet. Udskift 'klientnavn' med dit klientnavn.

# ./build-key client-name

Generer HMAC-koden.

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

Kopier certifikaterne til klient- og servermaskinerne som følger.

  1. Sørg for, at ca.crt findes på både klienten og serveren.
  2. Ca.-tasten skal være på klienten.
  3. Serveren kræver server.crt, dh4096.pem, server.key og ta.key.
  4. client.crt, client.key og ta.key skal være på klienten.

For at konfigurere nøglerne og certifikaterne på serveren skal du køre kommandoerne.

# 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/

Nu skal du konfigurere OpenVPN-serveren. Åbn filen '/etc/openvpn/server.conf'. Foretag ændringer som beskrevet nedenfor.

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

Aktivér IP-videresendelse på serveren.

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

Kør følgende kommando for at konfigurere OpenVPN til start ved opstart.

# update-rc.d -f openvpn defaults

Start OpenVPN-tjenesten.

# service openvpn restart

Kør følgende kommando for at installere OpenVPN på klientmaskinen.

# apt-get install openvpn

Brug en teksteditor til at konfigurere OpenVPN-klientkonfigurationen i '/etc/openvpn/client.conf' på klienten. Et eksempel på konfiguration er som følger:

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

Kør følgende kommando for at konfigurere OpenVPN til start ved opstart.

# update-rc.d -f openvpn defaults

Start OpenVPN-tjenesten på klienten.

# service openvpn restart

Når du er tilfreds med, at OpenVPN kører godt på IPv4, er det her, hvordan du får IPv6 til at fungere over OpenVPN.

Tilføj de følgende linjer til slutningen af serverkonfigurationen '/etc/openvpn/server.conf' fil.

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

Disse to scripts bygger/ødelægger IPv6-tunnelen, hver gang en klient tilslutter/afbryder forbindelsen.

Her er indholdet af 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

Min vært tildeler mig IPV6-adresser fra 2a00: dd80: 003d: 000c ::/64-blokken. Derfor bruger jeg
2a00: dd80: 003d: 000c som BASERANGE. Rediger denne værdi efter det, din vært har tildelt dig.

Hver gang en klient opretter forbindelse til OpenVPN, tildeler dette script adressen 2a00: dd80: 003d: 000c: 1001 :: 1 som IPV6-adressen på tap0-grænsefladen på serveren.

Den sidste linje opretter Neighbor Discovery til vores tunnel. Jeg har tilføjet IPv6-adressen på klientsiden tap0-forbindelse som proxy-adresse.

Her er indholdet af client-disconnect.sh.

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

Dette sletter bare serverens IPv6-tunneladresse, når klienten afbryder forbindelsen. Rediger værdien af BASERANGE efter behov.

Gør scripts eksekverbare.

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

Føj følgende poster til ‘/etc/rc.local’ (Du kan også ændre de relevante sysctls i /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

Disse poster aktiverer naboopdagelse og videresendelse. Jeg har også tilføjet en firewall.

Opret ‘/etc/init.d/firewall’ og læg følgende indhold i.

#!/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

Kør ‘/etc/rc.local’ og start firewallen.

# sh /etc/rc.local

Dette afslutter modifikationerne på serversiden.

Tilføj følgende som de sidste linjer i din klientkonfigurationsfil '/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

Op- og ned-scripts bygger/ødelægger IPV6-klientens slutpunkter for klientens tap0-forbindelse, hver gang en klient tilslutter/afbryder forbindelse til eller fra OpenVPN-serveren.

Her er indholdet af 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

Scriptet tildeler IPV6-adressen 2a00: dd80: 3d: c: 1001 :: 2 som klientens IPV6-adresse og indstiller IPV6-standardruten gennem serveren.

Ændr IPV6BASE, så den er den samme som BASERANGE i serverkonfigurationen.

Her er indholdet af 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

Dette sletter bare IPV6-adressen på klienten og nedbryder IPV6-ruten, når klienten afbryder forbindelsen fra serveren.

Rediger IPV6BASE, så den er den samme som BASERANGE i serverkonfigurationen, og gør scriptet eksekverbart.

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

Du kan eventuelt ændre '/etc/resolv.conf' og tilføje Googles IPV6-navneservere til DNS-opløsning.

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

Genstart openvpn på serveren og opret forbindelse til det fra klienten. Du skal være forbundet. Besøg test-ipv6.com for at se, at din IPV6-forbindelse over OpenVPN fungerer.

Reference Links

OpenVPN-hjemmeside