כיום, טכנולוגיית VPN הופכת פופולרית יותר. משתמשים רגילים משתמשים ב-VPN כדי לגשת בבטחה לאינטרנט. זה גם עוזר לעקוף אתרים ושירותים חסומים מקומיים ולהגן מפני התנהגות זדונית חיצונית אפשרית. כאשר אתה מתחבר לשרת VPN, ישנה מנהרה בטוחה בין המחשב שלך לשרת שלא ניתן לגשת אליה מבחוץ, כך ששרת ה-VPN הופך לנקודת הגישה שלך לאינטרנט. יש הרבה שירותי VPN בחוץ, גם בחינם וגם בתשלום, אבל אם הם לא עובדים בשבילך מסיבה כלשהי, אתה תמיד יכול להגדיר את שרת ה-VPN שלך.
כדי להפעיל את oun 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" - תזדקק לזה בשלב הבא. השם שלנו הוא "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" value הוא שם השירות שציינו בקובץ "pptpd-Options". במקום "*" אתה יכול לציין כתובת IP קבועה. בתוצאה, הקובץ "סודות-צ'אפ" צריך להיראות כך:
כדי להחיל את ההגדרות אפס את 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
התקן את כל החבילות הדרושות. נצטרך "קל-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", עבור אל "COMUNITY" סָעִיף.
גללו למטה והורידו את קובץ ההתקנה עבור גרסת מערכת ההפעלה שלכם. במקרה שלנו, מדובר ב-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/" כדי להיות מסוגל להפיץ אותם ללקוח. בואו נעשה "מיהאיל" הבעלים במקרה שלנו.
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
השאר את השאר ללא פגע.
שמור את הקובץ והפעל את יישום הלקוח "GUI של OpenVPN".
לחץ לחיצה ימנית על סמל האפליקציה בשורת המשימות ובחר "חבר". אם החיבור הצליח הסמל יהפוך לירוק.
השתמש בכל שירות מקוון כדי לוודא שכתובת ה-IP הציבורית שלך השתנתה וכעת היא זהה לכתובת ה-IP של השרת.