Instalacija i konfiguracija OpenVPN poslužitelja i klijenta na Debianu 7


Ovaj članak opisuje kako doći do IPv6 povezivanja na OpenVPN koristeći Debian Linux. Proces je testiran na Debianu 7 na KVM VPS s IPv6 vezom kao poslužitelju i Debian 7 radnoj površini. Naredbe se trebaju izvoditi kao root.

Šta je OpenVPN?

OpenVPN je VPN program koji koristi SSL/TLS za kreiranje sigurnih, šifriranih VPN veza, za usmjeravanje vašeg internetskog prometa, čime se sprječava njuškanje. Otvoreni VPN je vrlo sposoban za transparentno kretanje kroz firewall. U stvari, ako situacija to zahtijeva, možete ga pokrenuti na istom TCP portu kao i HTTPS (443), čineći promet nerazlučivim i stoga je praktično nemoguće blokirati.

OpenVPN može koristiti različite metode kao što su unaprijed dijeljeni tajni ključevi, certifikati ili korisnička imena/lozinke, kako bi omogućili klijentima da se autentifikuju na serveru. OpenVPN koristi OpenSSL protokol i implementira mnoge sigurnosne i kontrolne karakteristike kao što su autentifikacija odgovora na izazov, mogućnost jedinstvene prijave, balansiranje opterećenja i funkcije prelaska preko greške i podrška za više demona.

Zašto koristiti OpenVPN?

Razmislite o bezbednoj komunikaciji – razmislite o OpenVPN. Ako ne želite da neko njuška vaš internet promet, koristite OpenVPN da usmjerite sav svoj promet kroz visoko šifrirani, siguran tunel.

Ovo je posebno važno kada se povezujete na javne WIFI mreže na aerodromima i drugim mjestima. Nikada ne možete biti sigurni ko njuška vaš promet. Možete usmjeriti svoj promet preko vlastitog OpenVPN servera kako biste spriječili njuškanje.

Ako se nalazite u nekoj od zemalja koje rutinski prate sav vaš promet i blokiraju web stranice po želji, možete koristiti OpenVPN preko TCP porta 443, kako biste ga učinili nerazlučivim od HTTPS prometa. Možete čak i kombinirati OpenVPN s drugim sigurnosnim strategijama kao što je tuneliranje vašeg OpenVPN prometa preko SSL tunela, kako biste pobijedili tehnike duboke inspekcije paketa koje bi mogle identificirati OpenVPN potpise.

Zahtjevi sustava

OpenVPN zahtijeva vrlo minimalne zahtjeve za pokretanje. Sistem sa 64 MB RAM-a i 1 GB HDD prostora je dovoljan za pokretanje OpenVPN-a. OpenVPN radi na gotovo svim mainstream operativnim sistemima.

Instalacija i konfiguracija OpenVPN-a na Debianu 7

Instalirajte OpenVPN na Master Server

Pokrenite sljedeću naredbu da instalirate OpenVPN.

apt-get install openvpn

Prema zadanim postavkama, easy-rsa skripte se instaliraju u direktoriju „/usr/share/easy-rsa/“. Dakle, moramo kopirati ove skripte na željenu lokaciju, tj. /root/easy-rsa.

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

Generirajte CA certifikat i CA ključ

Otvorite datoteku „vars“ i napravite sljedeće izmjene, ali prije nego što izvršite izmjene predlažem da napravite sigurnosnu kopiju originalne datoteke.

cp vars{,.orig}

Koristeći svoj uređivač teksta, postavite zadane vrijednosti za easy-rsa. Na primjer.

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

Ovdje koristim 4096 bitni ključ. Po želji možete koristiti 1024, 2048, 4096 ili 8192 bitni ključ.

Izvezite zadane vrijednosti pokretanjem naredbe.

source ./vars

Očistite sve certifikate koji su prethodno generirani.

./clean-all

Zatim pokrenite sljedeću naredbu da generišete CA certifikat i CA ključ.

./build-ca

Generirajte certifikat servera pokretanjem naredbe. Zamijenite 'ime servera' sa svojim imenom servera.

./build-key-server server-name

Generirajte Diffie Hellman PEM certifikat.

./build-dh

Generirajte certifikat klijenta. Zamijenite 'ime klijenta' svojim imenom klijenta.

./build-key client-name

Generirajte HMAC kod.

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

Kopirajte certifikate na klijentske i serverske mašine kako slijedi.

  1. Uvjerite se da je ca.crt prisutan i na klijentu i na serveru.
  2. Ključ ca.key bi trebao biti na klijentu.
  3. Server zahtijeva server.crt, dh4096.pem, server.key i ta.key.
  4. client.crt, client.key i ta.key bi trebali biti na klijentu.

Da biste podesili ključeve i sertifikate na serveru, pokrenite komande.

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/

Konfigurisanje OpenVPN servera

Sada morate da konfigurišete OpenVPN server. Otvorite datoteku „/etc/openvpn/server.conf“. Molimo izvršite izmjene na način opisan u nastavku.

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

Omogućite IP prosljeđivanje na serveru.

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

Pokrenite sljedeću naredbu da podesite OpenVPN za pokretanje pri pokretanju.

update-rc.d -f openvpn defaults

Pokrenite OpenVPN uslugu.

service openvpn restart

Instalirajte OpenVPN na klijentu

Pokrenite sljedeću naredbu da instalirate OpenVPN na klijentskoj mašini.

apt-get install openvpn

Koristeći uređivač teksta, postavite konfiguraciju OpenVPN klijenta u „/etc/openvpn/client.conf“, na klijentu. Primjer konfiguracije je sljedeći:

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

Pokrenite sljedeću naredbu da podesite OpenVPN za pokretanje pri pokretanju.

update-rc.d -f openvpn defaults

Pokrenite OpenVPN uslugu na klijentu.

service openvpn restart

Kada se uvjerite da OpenVPN dobro radi na IPv4, evo kako natjerati IPv6 da radi preko OpenVPN-a.

Pokretanje IPv6 rada sa OpenVPN-om na serveru

Dodajte sljedeće redove na kraj datoteke konfiguracije servera „/etc/openvpn/server.conf“.

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

Ove dvije skripte grade/uništavaju IPv6 tunel svaki put kada se klijent poveže/isključuje.

Ovdje je sadržaj 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

Moj domaćin mi dodjeljuje IPV6 adrese iz bloka 2a00:dd80:003d:000c::/64. Stoga koristim
2a00:dd80:003d:000c kao BASERANGE. Izmijenite ovu vrijednost prema onome što vam je vaš domaćin dodijelio.

Svaki put kada se klijent poveže na OpenVPN, ova skripta dodjeljuje adresu 2a00:dd80:003d:000c:1001::1 kao IPV6 adresu tap0< interfejs servera.

Posljednja linija postavlja Neighbor Discovery za naš tunel. Dodao sam IPv6 adresu tap0 veze klijenta kao proxy adresu.

Evo sadržaja client-disconnect.sh.

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

Ovo samo briše IPv6 adresu tunela servera, kada se klijent prekine. Izmijenite vrijednost BASERANGE prema potrebi.

Učinite skripte izvršnim.

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

Dodajte sljedeće unose u ‘/etc/rc.local’ (također možete izmijeniti odgovarajuće sysctl u /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

Ovi unosi aktiviraju otkrivanje i prosljeđivanje susjeda. Dodao sam i zaštitni zid.

Kreirajte „/etc/init.d/firewall“ i unesite sljedeći sadržaj.

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

Pokrenite ‘/etc/rc.local‘ i pokrenite zaštitni zid.

sh /etc/rc.local

Ovim se završavaju modifikacije na strani servera.

Pokretanje IPv6 rada sa OpenVPN-om na klijentu

Dodajte sljedeće kao posljednje redove vaše klijentske konfiguracijske datoteke „/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

Skripte za gore i dolje izgrađuju/uništavaju krajnje tačke IPV6 klijenta na tap0 konekcije svaki put kada se klijent povezuje/isključuje na ili sa OpenVPN servera.

Evo sadržaja 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

Skripta dodjeljuje IPV6 adresu 2a00:dd80:3d:c:1001::2 kao IPV6 adresu klijenta i postavlja zadanu IPV6 rutu kroz server.

Modificirajte IPV6BASE da bude isti kao BASERANGE u konfiguraciji poslužitelja.

Evo sadržaja 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

Ovo samo briše IPV6 adresu klijenta i ruši IPV6 rutu kada se klijent isključi sa servera.

Modificirajte IPV6BASE da bude isti kao BASERANGE u konfiguraciji servera i učinite skriptu izvršnom.

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

Po želji, izmijenite '/etc/resolv.conf' i dodajte Googleove IPV6 servere imena za DNS rezoluciju.

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

Ponovo pokrenite openvpn na serveru, a zatim se povežite na njega sa klijenta. Trebali biste biti povezani. Posjetite test-ipv6.com da vidite da vaša IPV6 konekcija preko OpenVPN-a radi.

Referentne veze

OpenVPN početna stranica

Izvor: stavrovski