כיום, טכנולוגיית VPN הופכת פופולרית יותר. משתמשים רגילים משתמשים ב-VPN כדי לגשת בבטחה לאינטרנט. זה גם עוזר לעקוף אתרים ושירותים חסומים מקומיים ולהגן מפני התנהגות זדונית חיצונית אפשרית. כאשר אתה מתחבר לשרת VPN, ישנה מנהרה בטוחה בין המחשב שלך לשרת שלא ניתן לגשת אליה מבחוץ, כך ששרת ה-VPN הופך לנקודת הגישה שלך לאינטרנט. יש הרבה שירותי VPN בחוץ, גם בחינם וגם בתשלום, אבל אם הם לא עובדים בשבילך מסיבה כלשהי, אתה תמיד יכול להגדיר את שרת ה-VPN שלך.
כדי להפעיל את ה-VPN שלך, עליך לשכור שרת VPS . ישנן תוכנות שונות המאפשרות לך ליצור חיבור VPN. הן שונות זו מזו במערכות ההפעלה הנתמכות ובאלגוריתמים שבהם נעשה שימוש. נבחן שתי גישות עצמאיות להגדרת שרת VPN. הראשונה מבוססת על פרוטוקול PPTP שכבר נחשב מיושן ולא מאובטח, אך קל מאוד להגדיר אותו. השנייה משתמשת בתוכנה מודרנית ומאובטחת OpenVPN אך דורשת התקנת יישום לקוח של צד שלישי ותהליך התקנה יסודי יותר.
בסביבת הבדיקה שלנו, אנו הולכים להשתמש בשרת וירטואלי המופעל על ידי Ubuntu Server 18.04. חומת אש עומדת להיות כבויה בשרת כי התצורה שלה ראויה למאמר נפרד. נתאר את תהליך ההתקנה ב-Windows 10.
הכנה
לא משנה באיזה שרת VPN תבחר, הגישה לאינטרנט תוגדר באמצעים משולבים של מערכת ההפעלה. על מנת לפתוח גישה לאינטרנט דרך ממשק שירות חיצוני יש לאפשר העברת מנות בין הממשקים ולהגדיר תרגום כתובות רשת.
כדי להפעיל העברת חבילות, פתחו את הקובץ "/etc/sysctl.conf" ושנו את ערך הפרמטר "net.ipv4.ip_forward" ל- 1.
על מנת להחיל שינויים מבלי לאתחל את המחשב, הפעל את הפקודה
sudo sysctl -p /etc/sysctl.conf
תרגום כתובות רשת מוגדר באמצעות iptables . ראשית, בדוק את שם ממשק הרשת החיצוני שלך על ידי הפעלת הפקודה "ip link show" - תזדקק לה בשלב הבא. השם שלנו הוא "ens3".
אפשר תרגום כתובות רשת בממשק החיצוני שלך עבור כל צמתי הרשת המקומית.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
שימו לב שאתם צריכים לציין את השם האמיתי של הממשק של השרת שלכם, הוא יכול להיות שונה משלנו.
כברירת מחדל, כל הכללים שנוצרו על ידי iptables מאופסים לאחר הפעלה מחדש של השרת. כדי למנוע זאת, השתמש בכלי "iptables-persistent" . התקן את החבילה הבאה:
sudo apt install iptables-persistent
בשלב מסוים במהלך תהליך ההתקנה, תראו חלון תצורה שיציע לכם לשמור את הכללים הנוכחיים של iptables. מכיוון שהכללים כבר מוגדרים, פשוט אשרו ולחצו פעמיים על "כן" . כעת הכללים יוחלו אוטומטית לאחר הפעלה מחדש של השרת.
שרת PPTP
תצורת שרת
התקן את החבילה:
sudo apt install pptpd
לאחר סיום ההתקנה, פתחו את הקובץ "/etc/pptpd.conf" בכל עורך טקסט וערוך אותו כך:
option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses
לאחר מכן, ערוך את הקובץ "/etc/ppp/pptpd-options" . רוב הפרמטרים מוגדרים כברירת מחדל.
#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd
בשלב הבא, תצטרכו ליצור רשומה עבור חיבורי לקוח. נניח שאתם רוצים להוסיף משתמש "vpnuser" עם הסיסמה "1" ולאפשר עבורו כתובות דינמיות. פתחו את הקובץ "/etc/ppp/chap-secrets" והוסיפו את השורה הבאה עם פרמטרי המשתמש בסוף הקובץ:
vpnuser pptpd 1 *
הערך "pptpd" הוא שם השירות שציינו בקובץ "pptpd-options" . במקום "*" ניתן לציין כתובת IP קבועה. בתוצאה, הקובץ "chap-secrets" אמור להיראות כך:
כדי להחיל את ההגדרות, אפס את שירות ה- pptpd והוסף אותו לטעינה אוטומטית.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
תצורת השרת הסתיימה.
תצורת לקוח
פתחו את "התחל" - "הגדרות" - "רשת ואינטרנט" - "VPN" ולחצו על "הוסף חיבור VPN".
הזן את פרמטרי החיבור בחלון שנפתח ולחץ על "שמור"
- ספק VPN: "Windows (מובנה)"
- שם חיבור: "vpn_connect" (אתה יכול לבחור כל שם)
- שם או כתובת שרת: (ציין את כתובת ה-IP החיצונית של השרת)
- סוג VPN: "אוטומטי"
- סוג פרטי הכניסה: "שם משתמש וסיסמה"
- שם משתמש: vpnuser (שם צוין בקובץ "chap-secrets" בשרת)
- סיסמה: 1 (כמו בקובץ "סודות הצ'אפ")
לאחר שמירת הפרמטרים, תראו את חיבור ה-VPN החדש בחלון. לחצו לחיצה שמאלית על החיבור ובחרו "התחבר" . במקרה של חיבור מוצלח, תראו את הסטטוס "מחובר".
באפשרויות, תמצאו את הכתובות הפנימיות של הלקוח והשרת. השדה "כתובת יעד" מציג את כתובת השרת החיצוני.
כאשר מחובר, כתובת ה-IP הפנימית של השרת, 172.16.0.1 במקרה שלנו, הופכת לשער ברירת המחדל עבור כל החבילות היוצאות.
באמצעות כל שירות מקוון אתה יכול לוודא שכתובת ה-IP החיצונית של המחשב זהה כעת לכתובת ה-IP של שרת ה-VPN שלך.
שרת OpenVPN
תצורת שרת
בואו נקדם את רמת ההרשאות של המשתמש הנוכחי מכיוון שלצורך ההגדרה הנוספת שלנו נצטרך גישת שורש.
sudo -s
התקן את כל החבילות הדרושות. נצטרך את חבילת "Easy-RSA" כדי לנהל את מפתחות ההצפנה.
apt install openvpn easy-rsa iptables-persistent
אפשר חיבורים נכנסים בפורט 1194 דרך פרוטוקול UDP והחיל את כללי iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
צור ספרייה עם קבצים שהועתקו מחבילת "Easy-RSA" ונווט לתוכה.
make-cadir ~/openvpn
cd ~/openvpn
יצירת תשתית מפתח ציבורי (PKI).
./easyrsa init-pki
צור את אישור הבסיס של רשות האישורים (CA).
./easyrsa build-ca
במהלך תהליך היצירה, תתבקשו להגדיר ולזכור סיסמה. תצטרכו גם לענות על שאלות ולהזין מידע על בעל המפתח. ניתן להשאיר את ערכי ברירת המחדל המופיעים בסוגריים מרובעים. לחצו על "Enter" כדי לסיים את הקלט.
צור מפתח פרטי ובקשת אישור. כארגומנט, ציין שם שרירותי; במקרה שלנו, זה "vpn-server".
./easyrsa gen-req vpn-server nopass
השאר את הערך 'שם נפוץ' כברירת מחדל.
חתום על בקשת אישור השרת שנוצרה.
./easyrsa sign-req server vpn-server
בשלב זה, ענה "כן" כדי לאשר את החתימה, לאחר מכן הזן את הסיסמה שנוצרה במהלך יצירת אישור הבסיס.
צור פרמטרים של דיפי-הלמן. פרמטרים אלה משמשים להחלפת מפתחות מאובטחת בין השרת ללקוח.
./easyrsa gen-dh
כל הקבצים הדרושים נוצרו. בואו ניצור תיקייה בשם "keys" בספריית העבודה של OpenVPN כדי לאחסן את המפתחות ולהעתיק לשם את הקבצים שנוצרו.
mkdir /etc/openvpn/keys
sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys
הגדרת NAT באמצעות iptables כללים. צור קובץ בשם nat ולפתוח אותו לעריכה ב- /etc/openvpn/ במדריך.
#!/bin/sh
# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP
# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP
sudo netfilter-persistent save
שמור את הקובץ והפוך אותו לקובץ הרצה.
sudo chmod 755 /etc/openvpn/nat
העתק את תבנית תצורת השרת.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
פתחו את הקובץ "/etc/openvpn/server.conf" לצורך עריכה, ודאו שהוא מכיל את השורות הבאות, וערו אותן במידת הצורך:
#Port, protocol, and interface
port 1194
proto udp
dev tun
#Path to the encryption keys
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpn-server.crt
key /etc/openvpn/keys/vpn-server.key
dh /etc/openvpn/keys/dh.pem
#SHA256 Hashing Algorithm
auth SHA256
#Switching off additional encryption
#tls-auth ta.key 0
#Network parameters
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.
keepalive 10 120
#Set up AES-256 encryption for the tunnel.
cipher AES-256-GCM
#Demoting the service OpenVPN after launch
user nobody
group nogroup
#Switching on parameters saving after reboot
persist-key
persist-tun
#Set log verbosity
verb 3
#Redirecting logs
log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.
up /etc/openvpn/nat
הפעל העברת תעבורה בשרת.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
הפעל את OpenVPN כדי להחיל את התצורה.
systemctl restart openvpn@server
תצורת השרת הסתיימה!
תצורת לקוח
עבור לאתר הרשמי של OpenVPN " https://openvpn.net ", עבור אל הקטע "קהילה".
גללו למטה והורידו את קובץ ההתקנה עבור גרסת מערכת ההפעלה שלכם. במקרה שלנו, מדובר ב-Windows 11 ARM64.
התקן את האפליקציה תוך השארת כל הפרמטרים כברירת מחדל.
בשלב הבא תצטרכו להכין את הקובץ הבא בשרת ולהעבירם למחשב הלקוח:
- מפתחות ציבוריים ופרטיים;
- עותק של מפתח מרכז האישורים;
- תבנית קובץ תצורה.
התחבר לשרת, העלה הרשאות ונווט אל הספרייה שיצרנו "~/openvpn".
sudo -s
cd ~/openvpn
צור מפתח פרטי ובקשת אישור עבור הלקוח. כארגומנט, ציין שם שרירותי; במקרה שלנו, זה "client1".
./easyrsa gen-req client1 nopass
הזן את הסיסמה שקבענו בעת יצירת אישור הבסיס והשאר את ערך השם המשותף כברירת מחדל.
חתום על בקשת אישור הלקוח שנוצרה.
./easyrsa sign-req client client1
בשלב זה, ענה "כן" כדי לאשר את החתימה, לאחר מכן הזן את הסיסמה שנוצרה במהלך יצירת אישור הבסיס.
לנוחיותנו, בואו ניצור תיקייה בשם 'client1' בתיקיית הבית ונעתיק לתוכה את כל הקבצים המיועדים להעברה למחשב הלקוח.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
העתק את תבנית קובץ התצורה של הלקוח לאותה ספרייה. שנה את סיומת הקובץ ל- ".ovpn" בעת ההעתקה.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
שנה את הבעלים של הספרייה וכל הקבצים "~/client1/" כדי שנוכל להפיץ אותם ללקוח. במקרה שלנו, בואו נהפוך את "mihail" לבעלים.
chown -R mihail:mihail ~/client1
עבור למחשב הלקוח והעתק את תוכן התיקייה "~/client1/" . ניתן לעשות זאת בעזרת כלי השירות "PSCP" , שמגיע עם Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
ניתן לאחסן את קבצי המפתחות "ca.crt" , "client1.crt" , "client1.key" בכל מקום שתרצו. במקרה שלנו, הם נמצאים בתיקייה "c:\Program Files\OpenVPN\keys" , ואנחנו מעבירים את קובץ התצורה "client.ovpn" לתיקייה "c:\Program Files\OpenVPN\config".
עכשיו בואו ניגש להגדרת הלקוח. פתחו את הקובץ "c:\Program Files\OpenVPN\config\client.ovpn" בעורך טקסט וערוך את השורות הבאות:
#announce that this is the client
client
#interface and protocol just like on the server
dev tun
proto udp
#IP address of the server and port
remote ip_address 1194
#saving parameters after reload
persist-key
persist-tun
#key paths
ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”
cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”
key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification
remote-cert-tls server
#disable extra encryption
#tls-auth ta.key 1
cipher AES-256-CBC
auth-nocache
verb 3
השאר את השאר ללא פגע.
שמור את הקובץ והפעל את יישום הלקוח "OpenVPN GUI".
לחצו לחיצה ימנית על סמל האפליקציה בשורת המשימות ובחרו "התחבר" . אם החיבור הצליח, הסמל יהפוך לירוק.
השתמש בכל שירות מקוון כדי לוודא שכתובת ה-IP הציבורית שלך השתנתה וכעת היא זהה לכתובת ה-IP של השרת.