Εγκατάσταση και διαμόρφωση διακομιστή OpenVPN και πελάτη στο Debian 7


Αυτό το άρθρο περιγράφει λεπτομερώς τον τρόπο απόκτησης σύνδεσης IPv6 στο OpenVPN χρησιμοποιώντας Debian Linux. Η διαδικασία έχει δοκιμαστεί σε Debian 7 σε KVM VPS με συνδεσιμότητα IPv6 ως διακομιστή και επιφάνεια εργασίας Debian 7. Οι εντολές πρέπει να εκτελούνται ως root.

Τι είναι το OpenVPN;

Το OpenVPN είναι ένα πρόγραμμα VPN που χρησιμοποιεί SSL/TLS για τη δημιουργία ασφαλών, κρυπτογραφημένων συνδέσεων VPN, για τη δρομολόγηση της κυκλοφορίας σας στο Διαδίκτυο, αποτρέποντας έτσι την κατασκοπεία. Το Open VPN είναι εξαιρετικά ικανό να διασχίζει με διαφάνεια τα τείχη προστασίας. Στην πραγματικότητα, εάν η κατάσταση το απαιτεί, μπορείτε να το εκτελέσετε στην ίδια θύρα TCP με το HTTPS (443), καθιστώντας την κίνηση δυσδιάκριτη και επομένως σχεδόν αδύνατο να αποκλειστεί.

Το OpenVPN μπορεί να χρησιμοποιήσει μια ποικιλία μεθόδων, όπως προ-κοινόχρηστα μυστικά κλειδιά, πιστοποιητικά ή ονόματα χρήστη/κωδικούς πρόσβασης, για να επιτρέψει στους πελάτες τον έλεγχο ταυτότητας στο διακομιστή. Το OpenVPN χρησιμοποιεί το πρωτόκολλο OpenSSL και εφαρμόζει πολλές δυνατότητες ασφάλειας και ελέγχου, όπως έλεγχο ταυτότητας απόκρισης πρόκλησης, δυνατότητα μονής σύνδεσης, εξισορρόπηση φορτίου και λειτουργίες ανακατεύθυνσης και υποστήριξη πολλαπλών δαιμόνων.

Γιατί να χρησιμοποιήσετε το OpenVPN;

Σκεφτείτε ασφαλείς επικοινωνίες – σκεφτείτε το OpenVPN. Εάν δεν θέλετε κανείς να κατασκοπεύει την επισκεψιμότητά σας στο Διαδίκτυο, χρησιμοποιήστε το OpenVPN για να δρομολογήσετε όλη την επισκεψιμότητά σας μέσα από ένα εξαιρετικά κρυπτογραφημένο, ασφαλές τούνελ.

Αυτό είναι ιδιαίτερα σημαντικό όταν συνδέεστε σε δημόσια δίκτυα WIFI σε αεροδρόμια και άλλα μέρη. Δεν μπορείτε ποτέ να είστε σίγουροι για το ποιος κατασκοπεύει την κυκλοφορία σας. Μπορείτε να διοχετεύσετε την επισκεψιμότητά σας μέσω του δικού σας διακομιστή OpenVPN για να αποτρέψετε την κατασκοπεία.

Εάν βρίσκεστε σε οποιαδήποτε από τις χώρες που παρακολουθούν τακτικά όλη την επισκεψιμότητά σας και αποκλείουν τους ιστότοπους κατά βούληση, μπορείτε να χρησιμοποιήσετε το OpenVPN μέσω θύρας TCP 443, για να μην διακρίνεται από την επισκεψιμότητα HTTPS. Μπορείτε ακόμη να συνδυάσετε το OpenVPN με άλλες στρατηγικές ασφαλείας, όπως η διοχέτευση της κυκλοφορίας OpenVPN σας μέσω μιας σήραγγας SSL, για να νικήσετε τις τεχνικές Deep Packet Inspection που μπορεί να είναι σε θέση να αναγνωρίσουν τις υπογραφές OpenVPN.

Απαιτήσεις συστήματος

Το OpenVPN απαιτεί πολύ ελάχιστες απαιτήσεις για να εκτελεστεί. Ένα σύστημα με 64 MB RAM και 1 GB σκληρό δίσκο χώρο είναι αρκετό για την εκτέλεση του OpenVPN. Το OpenVPN εκτελείται σε όλα σχεδόν τα κύρια λειτουργικά συστήματα.

Εγκατάσταση και διαμόρφωση του OpenVPN στο Debian 7

Εγκαταστήστε το OpenVPN στον κύριο διακομιστή

Εκτελέστε την ακόλουθη εντολή για να εγκαταστήσετε το OpenVPN.

# apt-get install openvpn

Από προεπιλογή, τα σενάρια easy-rsa εγκαθίστανται στον κατάλογο «/usr/share/easy-rsa/». Επομένως, πρέπει να αντιγράψουμε αυτά τα σενάρια στην επιθυμητή τοποθεσία, π.χ. /root/easy-rsa.

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

Δημιουργήστε πιστοποιητικό ΑΠ και κλειδί ΑΠ

Ανοίξτε το αρχείο ‘vars’ και κάντε τις ακόλουθες αλλαγές, αλλά πριν κάνετε αλλαγές, σας προτείνω να δημιουργήσετε αντίγραφο ασφαλείας του αρχικού αρχείου.

# cp vars{,.orig}

Χρησιμοποιώντας το πρόγραμμα επεξεργασίας κειμένου, ορίστε τις προεπιλεγμένες τιμές για το easy-rsa. Για παράδειγμα.

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

Εδώ, χρησιμοποιώ ένα κλειδί 4096 bit. Μπορείτε να χρησιμοποιήσετε ένα πλήκτρο bit 1024, 2048, 4096 ή 8192 όπως θέλετε.

Εξάγετε τις προεπιλεγμένες τιμές εκτελώντας την εντολή.

# source ./vars

Εκκαθαρίστε τυχόν πιστοποιητικά που δημιουργήθηκαν στο παρελθόν.

./clean-all

Στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε πιστοποιητικό CA και κλειδί CA.

# ./build-ca

Δημιουργήστε το πιστοποιητικό διακομιστή εκτελώντας την εντολή. Αντικαταστήστε το «όνομα διακομιστή» με το όνομα διακομιστή σας.

# ./build-key-server server-name

Δημιουργήστε το πιστοποιητικό Diffie Hellman PEM.

# ./build-dh

Δημιουργήστε το πιστοποιητικό πελάτη. Αντικαταστήστε το «όνομα πελάτη» με το όνομα πελάτη σας.

# ./build-key client-name

Δημιουργήστε τον κωδικό HMAC.

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

Αντιγράψτε τα πιστοποιητικά στους υπολογιστές πελάτη και διακομιστή ως εξής.

  1. Βεβαιωθείτε ότι το ca.crt υπάρχει τόσο στον πελάτη όσο και στον διακομιστή.
  2. Το κλειδί ca.key θα πρέπει να βρίσκεται στον πελάτη.
  3. Ο διακομιστής απαιτεί server.crt, dh4096.pem, server.key και ta.key.
  4. Τα
  5. client.crt, client.key και ta.key θα πρέπει να βρίσκονται στον πελάτη.

Για να ρυθμίσετε τα κλειδιά και τα πιστοποιητικά στον διακομιστή, εκτελέστε τις εντολές.

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

Διαμόρφωση διακομιστή OpenVPN

Τώρα πρέπει να διαμορφώσετε τον διακομιστή OpenVPN. Ανοίξτε το αρχείο «/etc/openvpn/server.conf». Κάντε αλλαγές όπως περιγράφεται παρακάτω.

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

Ενεργοποιήστε την προώθηση IP στον διακομιστή.

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

Εκτελέστε την ακόλουθη εντολή για να ρυθμίσετε το OpenVPN ώστε να ξεκινά κατά την εκκίνηση.

# update-rc.d -f openvpn defaults

Ξεκινήστε την υπηρεσία OpenVPN.

# service openvpn restart

Εγκαταστήστε το OpenVPN στον πελάτη

Εκτελέστε την ακόλουθη εντολή για να εγκαταστήσετε το OpenVPN στον υπολογιστή-πελάτη.

# apt-get install openvpn

Χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου, ρυθμίστε τη διαμόρφωση του προγράμματος-πελάτη OpenVPN στο «/etc/openvpn/client.conf», στον υπολογιστή-πελάτη. Ένα παράδειγμα διαμόρφωσης έχει ως εξής:

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

Εκτελέστε την ακόλουθη εντολή για να ρυθμίσετε το OpenVPN ώστε να ξεκινά κατά την εκκίνηση.

# update-rc.d -f openvpn defaults

Ξεκινήστε την υπηρεσία OpenVPN στον πελάτη.

# service openvpn restart

Αφού βεβαιωθείτε ότι το OpenVPN λειτουργεί καλά στο IPv4, δείτε πώς μπορείτε να δουλέψετε το IPv6 μέσω του OpenVPN.

Λήψη του IPv6 σε συνεργασία με το OpenVPN στον διακομιστή

Προσθέστε τις ακόλουθες γραμμές στο τέλος του αρχείου διαμόρφωσης διακομιστή /etc/openvpn/server.conf.

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

Αυτά τα δύο σενάρια δημιουργούν/καταστρέφουν τη σήραγγα IPv6 κάθε φορά που ένας πελάτης συνδέεται/αποσυνδέεται.

Εδώ είναι το περιεχόμενο του 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

Ο κεντρικός υπολογιστής μου εκχωρεί διευθύνσεις IPV6 από το μπλοκ 2a00:dd80:003d:000c::/64. Ως εκ τούτου, χρησιμοποιώ

Κάθε φορά που ένας πελάτης συνδέεται στο OpenVPN, αυτό το σενάριο εκχωρεί τη διεύθυνση 2a00:dd80:003d:000c:1001::1 ως τη διεύθυνση IPV6 του tap0< διεπαφή του διακομιστή.

Η τελευταία γραμμή δημιουργεί το Neighbor Discovery για το τούνελ μας. Έχω προσθέσει τη διεύθυνση IPv6 της σύνδεσης tap0 από την πλευρά του πελάτη ως διεύθυνση διακομιστή μεσολάβησης.

Εδώ είναι το περιεχόμενο του client-disconnect.sh.

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

Αυτό απλώς διαγράφει τη διεύθυνση σήραγγας IPv6 του διακομιστή, όταν ο πελάτης αποσυνδεθεί. Τροποποιήστε την τιμή του BASERANGE ανάλογα με την περίπτωση.

Κάντε τα σενάρια εκτελέσιμα.

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

Προσθέστε τις ακόλουθες καταχωρήσεις στο '/etc/rc.local' (Μπορείτε επίσης να τροποποιήσετε τα κατάλληλα sysctls στο /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

Αυτές οι καταχωρήσεις ενεργοποιούν την Ανακάλυψη και την προώθηση γείτονα. Έχω προσθέσει και ένα τείχος προστασίας.

Δημιουργήστε το «/etc/init.d/firewall» και τοποθετήστε το παρακάτω περιεχόμενο.

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

Εκτελέστε το ‘/etc/rc.local’ και ξεκινήστε το τείχος προστασίας.

# sh /etc/rc.local

Αυτό ολοκληρώνει τις τροποποιήσεις από την πλευρά του διακομιστή.

Λήψη του IPv6 σε συνεργασία με το OpenVPN στον πελάτη

Προσθέστε τα ακόλουθα ως τις τελευταίες γραμμές του αρχείου διαμόρφωσης προγράμματος-πελάτη «/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

Τα σενάρια πάνω και κάτω δημιουργούν/καταστρέφουν τα τελικά σημεία του προγράμματος-πελάτη IPV6 της σύνδεσης tap0 του πελάτη κάθε φορά που ένας πελάτης συνδέεται/αποσυνδέεται από ή προς τον διακομιστή OpenVPN.

Ιδού το περιεχόμενο του 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

Η δέσμη ενεργειών εκχωρεί τη διεύθυνση IPV6 2a00:dd80:3d:c:1001::2 ως διεύθυνση IPV6 πελάτη και ορίζει την προεπιλεγμένη διαδρομή IPV6 μέσω του διακομιστή.

Τροποποιήστε το IPV6BASE ώστε να είναι το ίδιο με το BASERANGE στη διαμόρφωση του διακομιστή.

Ιδού το περιεχόμενο του 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

Αυτό απλώς διαγράφει τη διεύθυνση IPV6 του πελάτη και καταργεί τη διαδρομή IPV6 όταν ο πελάτης αποσυνδεθεί από τον διακομιστή.

Τροποποιήστε το IPV6BASE ώστε να είναι το ίδιο με το BASERANGE στη διαμόρφωση του διακομιστή και κάντε το σενάριο εκτελέσιμο.

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

Προαιρετικά, τροποποιήστε το «/etc/resolv.conf» και προσθέστε τους διακομιστές ονομάτων IPV6 της Google για ανάλυση DNS.

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

Κάντε επανεκκίνηση του openvpn στον διακομιστή και, στη συνέχεια, συνδεθείτε σε αυτόν από τον πελάτη. Θα πρέπει να είστε συνδεδεμένοι. Επισκεφτείτε το test-ipv6.com για να δείτε ότι η συνδεσιμότητα IPV6 μέσω OpenVPN λειτουργεί.

Σύνδεσμοι αναφοράς

Αρχική σελίδα OpenVPN