Εγκατάσταση και διαμόρφωση διακομιστή 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
Αντιγράψτε τα πιστοποιητικά στους υπολογιστές πελάτη και διακομιστή ως εξής.
- Βεβαιωθείτε ότι το ca.crt υπάρχει τόσο στον πελάτη όσο και στον διακομιστή.
- Το κλειδί ca.key θα πρέπει να βρίσκεται στον πελάτη.
- Ο διακομιστής απαιτεί server.crt, dh4096.pem, server.key και ta.key. Τα
- 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