הקדמה
A virtual private network, or VPN, allows you to securely encrypt traffic as it travels through untrusted networks, such as those at the coffee shop, a conference, or an airport.
התקשרות מפתח האינטרנט v2, או IKEv2, הוא פרוטוקול המאפשר טנון ישיר של IPSec בין השרת והלקוח. ביישומי VPN של IKEv2, IPSec מספק הצפנה לתעבורת הרשת. IKEv2 נתמך באופן מובנה בכמה פלטפורמות (OS X 10.11+, iOS 9.1+, ו- Windows 10) ללא צורך ביישומים נוספים, והוא מתמודד בצורה חלקה עם בעיות של הלקוח.
במדריך זה, תצביע על שרת VPN של IKEv2 באמצעות StrongSwan על שרת Ubuntu 22.04. לאחר מכן, תלמד כיצד להתחבר אליו עם לקוחות Windows, macOS, Ubuntu, iOS, ו- Android.
דרישות קדם
כדי להשלים מדריך זה, תצטרך:
- שרת Ubuntu 22.04 אחד הוגדר באמצעות מדריך הגדרת השרת הראשוני של Ubuntu 22.04, כולל משתמש non-root עם הרשאות sudo וגישה לגישור.
שלב 1 — התקנת StrongSwan
ראשית, תתקינו את StrongSwan, דמון IPSec קוד פתוח שתקבעו כשרת VPN שלכם. תתקינו גם את רכיב אינפרהסטרוקטורת מפתחות הציבורי (PKI) כדי שתוכלו ליצור מרכז אימות מסמכים (CA) שיספק אישורי זיהוי עבור האינפרהסטרקטורה שלכם.
התחילו על ידי עדכון המטמון המקומי של החבילות:
לאחר מכן, התקינו את התוכנה על ידי הקלדת:
החבילה הנוספת libcharon-extauth-plugins
משמשת כדי לוודא שלקוחות שונים יוכלו לאמת את עצמם לשרת שלכם באמצעות שם משתמש וסיסמה משותפים. החבילה libstrongswan-extra-plugins
כלולה כך ש-Strongswan תומך בקבוצות חיפוש אליפטיות המשתמשות בספריית הצפירה Curve25519.
עכשיו שהכל מותקן, המשיכו ליצירת התעודות שלכם.
שלב 2 — יצירת מרכז אישורים
שרת IKEv2 דורש תעודה כדי לזהות את עצמו בפני לקוחות. כדי לעזור ביצירת התעודה הנדרשת, החבילה strongswan-pki
מגיעה עם כלי בשם pki
ליצירת מרכז אישורים ותעודות שרת.
להתחיל, צרו מספר ספריות כדי לאחסן את כל הנכסים שתעבדו עליהם. מבנה הספריות יתאים לחלק מהספריות ב־/etc/ipsec.d
, שם תצטרכו בסופו של דבר להעביר את כל הפריטים שתיצורו אליהם:
אז נעול את ההיתרים כך שקבצינו הפרטיים לא יוכלו להיות נראים למשתמשים אחרים:
עכשיו שיש לך מבנה ספרייתי לאחסון הכל, תוכל ליצור מפתח ראשי. זה יהיה מפתח RSA בגודל של 4096 סיביות שישמש לחתימה על תעודת ה־Certificate Authority הראשית שלך.
הריצו את הפקודות הבאות כדי ליצור את המפתח:
לאחר מכן, תוכל להמשיך ליצירת תעודת ה־Certificate Authority הראשית שלך, באמצעות המפתח שכתבת עכשיו לחתום על תעודת ה־root:
הדגל --lifetime 3650
משמש לוודא שתעודת ה־root של רשות ה־Certificate Authority תהיה תקפה למשך 10 שנים. תעודת ה־root של רשות אינה משתנה בדרך כלל, מאחר שיש להפיץ אותה מחדש לכל שרת ולקוח שסומכים עליה, לכן 10 שנים הם ערך ברירת המחדל הבטוח.
תוכל לשנות את הערך של השם המיוחס (DN) למשהו אחר אם תרצה. השם המשותף (שדה CN) כאן הוא רק המצביע, כך שאין צורך שיתאים לכלום בתשתיות שלך.
עכשיו שיש לך את רשות ה־Certificate Authority הראשית שלך פעילה ועובדת, תוכל ליצור תעודה שהשרת VPN ישתמש בה.
שלב 3 — יצירת תעודה עבור שרת ה-VPN
כעת תיצור תעודה ומפתח עבור שרת ה-VPN. התעודה הזו תאפשר ללקוח לאמת את אותנות השרת באמצעות תעודת ה-CA שיצרנו לאחרונה.
ראשית, צור מפתח פרטי עבור שרת ה-VPN בעזרת הפקודה הבאה:
עכשיו, צור וחתום על תעודת השרת של ה-VPN עם המפתח של רשות התעודות שיצרת בשלב הקודם. בצע את הפקודה הבאה, אך שנה את השם המשותף (CN) ואת שדה שם הנושא החלופי (SAN) לשם DNS של שרת ה-VPN או לכתובת ה-IP שלו:
הערה: אם אתה משתמש בכתובת IP במקום שם DNS, יהיה עליך לציין מספר רב של רשומות --san
. השורה בבלוק הפקודות הקודם שבה אתה מציין את שם ההבדל (--dn ...
) תצטרך להיות מותאמת עם הרשומה הנוספת כמו השורה המצוטטת להלן:
--dn "CN=כתובת_IP" --san @כתובת_IP --san כתובת_IP \
הסיבה לקיום הרשומה הנוספת --san @כתובת_IP
היא שחלק מהלקוחות יבדקו האם לתעודת ה-TLS יש רשומת DNS ורשומת כתובת IP עבור שרת כאשר הם מאמתים את הזהות שלו.
האפשרות --flag serverAuth
משמשת לציון כי התעודה תשמש באופן ברור לאימות של השרת, לפני ההמנה של המנה המוצפנת. האפשרות --flag ikeIntermediate
משמשת לתמיכה בלקוחות macOS ישנים.
עכשיו שיצרת את כל קבצי ה-TLS/SSL שנדרשים ל-StrongSwan, תוכל להעביר את הקבצים למקום בספריית /etc/ipsec.d
על ידי הקלדה של:
בשלב זה, יצרת זוג תעודות שישמשו לאבטחת התקשורת בין הלקוח לשרת. חתמת גם את התעודות עם מפתח ה-CA, כך שהלקוח יוכל לאמת את אימות השרת VPN באמצעות תעודת ה-CA. עם כל התעודות האלו מוכנות, אתה מוכן להמשיך להגדרת StrongSwan.
שלב 4 — הגדרת StrongSwan
StrongSwan מגיע עם קובץ הגדרות ברירת מחדל עם דוגמאות, אך נצטרך לבצע את רוב ההגדרות באופן ידני. בואו נגבה את הקובץ לצורך התייחסות לפני שנתחיל לבנות מחדש מהתחלה:
צור ופתח קובץ הגדרות חדש ריק באמצעות עורך הטקסט שאתה מעדיף. כאן, נשתמש ב-nano
:
הערה: במהלך עבודתך במקטע זה להגדיר את החלק השרת של ה-VPN שלך, תתעסק בהגדרות שמתייחסות לצדי החיבור. בעת עבודה עם VPN פרוטוקול ה-IPSec, הצד "שמאלה" מתייחס למערכת המקומית שאתה מגדיר, במקרה זה השרת. ההגדרות שמתייחסות לצד "ימין" בהגדרות אלו יתייחסו ללקוחות רחוקים, כמו טלפונים ומחשבים אחרים.
כאשר תמשיך להגדיר לקוחות במהלך ההדרכה הזו, קבצי התצורה של הלקוח יתייחסו אל עצמם באמצעות הגדרות "שמאלה" שונות, והשרת יתייחס בעזרת תודעת "ימין".
ראשית, נספר ל־StrongSwan לרשום מצבי daemon לצורך איתור שגיאות ולאפשר חיבורים כפולים. הוסף את השורות הבאות לקובץ:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
לאחר מכן, ניצור מקטע הגדרות עבור ה-VPN שלנו. נספר גם ל־StrongSwan ליצור טונלי VPN של IKEv2 ולטעון את מקטע הגדרה זה באופן אוטומטי בעת הפעלתו. הוסף את השורות הבאות לקובץ:
. . .
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
נגדיר גם איתור dead-peer כדי לנקות חיבורים "תלויים" במקרה שהלקוח מנותק באופן בלתי צפוי. הוסף את השורות הבאות:
. . .
conn ikev2-vpn
. . .
dpdaction=clear
dpddelay=300s
rekey=no
לבסוף, נגדיר את פרמטרי IPSec של צד "שמאלה" של השרת. כל הפרמטרים הבאים מבטיחים שהשרת מוגדר לקבל חיבורים מלקוחות ולזהות את עצמו בצורה נכונה. תוסיף כל אחת מההגדרות הללו לקובץ /etc/ipsec.conf
כאשר תהיה מוכר בהן ובסיבתן הן משמשות:
left=%any
הערך%any
מבטיח שהשרת ישתמש בממשק הרשת שבו הוא מקבל חיבורים נכנסים לתקשורת לקוחות עתידית. לדוגמה, אם אתה מחבר לקוח דרך רשת פרטית, השרת ישתמש בכתובת ה-IP הפרטית בה הוא מקבל תעבורה לשאר החיבור.leftid=@server_domain_or_IP
אפשרות זו שולטת בשם שהשרת מציג ללקוחות. בשילוב עם האפשרות הבאהleftcert
, האפשרותleftid
מבטיחה שהשם שהוגדר לשרת והשם המבוטח (DN) שמכיל בתעודה הציבורית יתאימו.leftcert=server-cert.pem
אפשרות זו היא נתיב לתעודה הציבורית של השרת שהגדרת בשלב 3. בלעדיה, השרת לא יוכל לאמת את עצמו עם לקוחות או לסיים את המו"פ של קביעת ה- IKEv2.leftsendcert=always
הערךalways
מבטיח שכל לקוח שמתחבר לשרת יקבל תמיד עותק של תעודת הציבור של השרת כחלק מהגדרת החיבור ההתחלתית.leftsubnet=0.0.0.0/0
האפשרות האחרונה בצד "שמאל" שתוסיף אומרת ללקוחות על התת-רשתות שניתן להגיע אליהן מאחורי השרת. במקרה זה,0.0.0.0/0
משמש לייצוג כל קבוצת כתובות IPv4, העונה שהשרת יספר ללקוחות לשלוח את כל התעבורה שלהם דרך ה- VPN כברירת מחדל.
עכשיו שאתה מכיר את כל אפשרויות הצד "שמאל" הרלוונטיות, הוסף אותם כולם לקובץ כמו כך:
. . .
conn ikev2-vpn
. . .
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
הערה: בעת הגדרת זיהוי השרת (leftid
), כלול את התו @
רק אם השרת VPN יזוהה על ידי שם דומיין:
. . . leftid=@vpn.example.com
. . .
אם השרת ייזוהה על ידי כתובת ה-IP שלו, פשוט הזן את כתובת ה-IP:
. . .
leftid=your_server_ip
. . .
לאחר מכן, ניתן להגדיר את פרמטרי IPSec של צד "ימין" של הלקוח. כל אחד מהפרמטרים הבאים מודיע לשרת כיצד לקבל חיבורים מלקוחות, כיצד הלקוחות צריכים לאמת את השרת, ואת טווחי כתובות ה-IP הפרטיות ושרתי DNS שהלקוחות ישתמשו בהם. הוסף כל אחד מהגדרות אלה לקובץ /etc/ipsec.conf
לאחר שתהיה מודע למה הן ולמה הן משמשות:
right=%any
האפשרות%any
לצד "ימין" של החיבור מורה לשרת לקבל חיבורים נכנסים מכל לקוח מרחוק.rightid=%any
אפשרות זו מבטיחה כי השרת לא ידחה חיבורים מלקוחות שמספקים זיהוי לפני הקמת המנהרה המוצפנת.rightauth=eap-mschapv2
אפשרות זו מגדירה את השיטה לאימות שהלקוחות ישתמשו בה כדי לאמת את השרת.eap-mschapv2
משמש כאן לתמיכה רחבה יותר כדי לתמוך בלקוחות כמו Windows, macOS ומכשירי Android.rightsourceip=10.10.10.0/24
אפשרות זו מורה לשרת להקצות כתובות IP פרטיות ללקוחות מטווח ה-IP המצויין10.10.10.0/24
.rightdns=8.8.8.8,8.8.4.4
כתובות ה-IP הללו הם מפתחי DNS הציבוריים של Google. ניתן לשנות אותם כדי להשתמש במפתחי DNS ציבוריים אחרים, מפתחי DNS של שרת ה-VPN, או כל מפתח DNS אחר שהלקוחות יכולים להגיע אליו.rightsendcert=never
אפשרות זו מכוונת את השרת שהלקוחות אינם צריכים לשלוח תעודה כדי לאמת את עצמם.
עכשיו שאתה מכיר את האפשרויות הדרושות לצד "נכון" עבור ה-VPN, הוסף את השורות הבאות ל-/etc/ipsec.conf
:
. . .
conn ikev2-vpn
. . .
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
עכשיו נגיד ל-StrongSwan לבקש מהלקוח למסור פרטי משתמש כאשר הם מתחברים:
. . .
conn ikev2-vpn
. . .
eap_identity=%identity
לבסוף, הוסף את השורות הבאות כדי לתמוך בלקוחות Linux, Windows, macOS, iOS ו-Android. השורות האלה מפרטות את האלגוריתמים לחלוקת מפתח, גיבוב, אימות והצפנה שונים (נקראים בדרך כלל Cipher Suites) שסטרונגסוואן יאפשר ללקוחות שונים להשתמש בהם:
. . .
conn ikev2-vpn
. . .
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!
כל ערכת האלגוריתם הנתמכת מופרדת מהאחרות בפסיק. לדוגמה chacha20poly1305-sha512-curve25519-prfsha512
היא אחת מהערכות, ו-aes256gcm16-sha384-prfsha384-ecp384
היא ערכת אחרת. הערכות האלגוריתם שמפורטות כאן נבחרו כדי לוודא את הגישות הרחבות ביותר לתאימות בין לקוחות Windows, macOS, iOS, Android ו-Linux.
הקובץ התצורה השלם צריך להיראות כך:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
eap_identity=%identity
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!
שמור וסגור את הקובץ לאחר שבדקת שהוספת את כל השורות בצורה נכונה. אם השתמשת ב-nano
, עשה זאת על ידי לחיצה על CTRL + X
, Y
, ואז ENTER
.
עכשיו שהגדרת את פרמטרי ה-VPN, תוכל להתקדם ליצירת חשבון כך שמשתמשים יוכלו להתחבר לשרת.
שלב 5 — הגדרת אימות ה-VPN
השרת של ה-VPN שלך מוגדר כעת לקבלת חיבורי לקוח, אך עדיין לא הוגדרו אישורים. עליך להגדיר כמה דברים בקובץ התצורה המיוחד בשם ipsec.secrets
:
- עליך לספר ל-StrongSwan איפה למצוא את המפתח הפרטי של תעודת השרת שלנו, כך שהשרת יוכל לאמת ללקוחות.
- כמו כן, עליך להגדיר רשימת משתמשים שיהיו מורשים להתחבר ל-VPN.
בוא נפתח את קובץ הסודות לעריכה:
ראשית, ספר ל-StrongSwan איפה למצוא את המפתח הפרטי וכיצד לפרוס אותו.
: RSA "server-key.pem"
ודא שהשורה מתחילה בתו הנקודה-שנייה :
ושיש רווח אחרי כך כך שהשורה כולה תקרא : RSA "server-key.pem"
.
לאחר מכן, עליך להגדיר אישורי משתמש. אתה יכול לבחור כל שם משתמש או סיסמה שתרצה:
your_username : EAP "your_password"
שמור וסגור את הקובץ. עכשיו שסיימת לעבוד עם פרמטרי ה-VPN, הפעל מחדש את שירות ה-VPN כך שההגדרות שלנו יישם:
עכשיו ששרת ה-VPN הוגדר באופן מלא עם אפשרויות השרת ואישורי המשתמש, הגיע הזמן להמשיך ולהגדיר את החומה האש החשובה ביותר.
שלב 6 — הגדרת החומה האש והפעלת העברת כתובות IP של הליבה
עם הגדרת StrongSwan הושלמה, עליך להגדיר את החומה האש כך שתאפשר תעבורת VPN ותפנה אותה.
אם עקבת אחרי המדריך להגדרת השרת הראשוני, כדאי שתהיה לך חומת אש UFW מופעלת. אם עדיין לא הגדרת UFW, כדאי להתחיל על ידי הוספת כלל שיאפשר חיבורי SSH דרך החומה האש כך שההפעלה הנוכחית לא תסגר לך בעת הפעלת UFW:
לאחר מכן, הפעל את החומה האש על ידי הקלדת:
לאחר מכן, הוסף כלל שיאפשר תעבורת UDP לפורטים הסטנדרטיים של IPSec, 500
ו־4500
:
בשלב הבא, עליך לפתוח את אחד מקבצי ההגדרה של UFW כדי להוסיף מספר מדיניות רמה נמוכה עבור הפנייה והעברת חבילות IPSec. אך לפני זאת עליך למצוא איזו ממשק רשת על שרת השליחה הוא משמש לגישה לאינטרנט. מצא את הממשק הזה על ידי שאילתת התקן המשוייך למסלול ברירת המחדל:
הממשק הציבורי שלך צריך להיות אחרי המילה "dev". לדוגמה, התוצאה הבאה מציגה את הממשק בשם eth0
, שמודגש בדוגמה הבאה:
Outputdefault via your_server_ip dev eth0 proto static
כאשר יש לך את ממשק הרשת הציבורי שלך, פתח את קובץ /etc/ufw/before.rules
בעורך הטקסט שלך. החוקים בקובץ זה מתווספים לגישה האש שלך לפני שאר חוקי הקלט והפלט הרגילים. הם משמשים להגדרת טרנסלציה של כתובות רשת (NAT) כך שהשרת יכול לנתב חיבורים מול לקוחות והאינטרנט כראוי.
ליד ראש הקובץ (לפני השורה *filter
), הוסף את הבלוק התצורה הבא. שנה כל מופע של eth0
בתצורה להעברה לשם הממשק שמצאת עם ip route
. השורות *nat
יוצרות חוקים כך שהאש יכול לנתב ולשנות תעבורה בין לקוחות ה-VPN והאינטרנט. השורה *mangle
מכוונת את גודל מקטע החבילה המקסימלית כדי למנוע בעיות פוטנציאליות עם חלק מלקוחות ה-VPN:
*nat
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
COMMIT
*mangle
-A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
. . .
באשר לבא, אחרי שורות ההגדרה של *filter
והשרשורים, הוסף קובץ נוסף של הגדרות:
. . .
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT
שורות אלו מספרות לאש להעביר תעבורת ESP (Encapsulating Security Payload) כך שלקוחות ה-VPN יוכלו להתחבר. ESP מספקת אבטחה נוספת לחבילות ה-VPN שלנו כאשר הן עוברות רשתות לא מהותרות.
כאשר אתה מסיים, שמור וסגור את הקובץ לאחר שאימתת שהוספת את כל השורות בצורה נכונה. אם השתמשת ב-nano
, עשה זאת על ידי לחיצה על CTRL + X
, Y
, אז ENTER
.
לפני שתפעיל את הגדרות האש, עליך גם לשנות כמה פרמטרי קרנל הרשת כדי לאפשר ניתוב מממשק אחד לאחר. הקובץ ששולט בהגדרות אלה נקרא /etc/ufw/sysctl.conf
. עליך להגדיר כמה דברים בקובץ זה.
תחילה עליך להפעיל העברת חבילות IPv4 כך שתעבור תעבורה בין ממשקי ה-VPN והרשת הציבורית על השרת. לאחר מכן, עליך להשבית את גילוי ה-MTU של הנתיב כדי למנוע בעיות בפיצול חבילות. לבסוף, לא נאפשר הפניות ICMP ולא נשלח הפניות ICMP כדי למנוע תקפי man-in-the-middle.
פתח את קובץ ההגדרות של פרמטרי הקרנל של UFW באמצעות nano
או העורך הטקסט המועדף עליך:
כעת הוסף את ההגדרה הבאה net/ipv4/ip_forward=1
בסוף הקובץ כדי לאפשר העברת חבילות בין ממשקים:
. . .
net/ipv4/ip_forward=1
לבסוף, חסום את שליחת וקבלת חבילות הפניית ICMP על ידי הוספת השורות הבאות לסוף הקובץ:
. . .
net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/all/send_redirects=0
לבסוף, כבה את גילוי ה-MTU על ידי הוספת השורה הבאה לסוף הקובץ:
. . .
net/ipv4/ip_no_pmtu_disc=1
שמור את הקובץ כאשר תסיים. כעת תוכל להפעיל את כל השינויים שלך על ידי ניטור והפעלת האש, מאחר ו-UFW מחדש את הגדרות אלו בכל פעם שהוא מתנתק:
תתבקש לאשר את התהליך. הקלד Y
כדי להפעיל את UFW שוב עם ההגדרות החדשות.
שלב 7 — בדיקת חיבור ה-VPN על Windows, macOS, Ubuntu, iOS ו- Android
עכשיו שהכל מוכן, זמן לנסות את זה. תחילה, תצטרך להעתיק את תעודת ה-CA שיצרת ולהתקין אותה על המכשירים הלקוח שלך שיתחברו ל-VPN. הדרך הקלה ביותר לעשות זאת היא להיכנס לשרת שלך ולהפיק את תוכן קובץ התעודה:
תראה פלט דומה לזה:
Output-----BEGIN CERTIFICATE-----
MIIFNDCCAxygAwIBAgIIHCsidG5mXzgwDQYJKoZIhvcNAQEMBQAwODELMAkGA1UE
. . .
H2YUdz8XNHrJHvMQKWFpi0rlEcMs+MSXPFWE3Q7UbaZJ/h8wpSldSUbQRUlphExJ
dJ4PX+MUJO/vjG1/ie6Kh25xbBAc3qNq8siiJZDwrg6vjEK7eiZ1rA==
-----END CERTIFICATE-----
העתק את הפלט הזה למחשב שלך, כולל את השורות -----BEGIN CERTIFICATE-----
ו־ -----END CERTIFICATE-----
, ושמור אותו בקובץ בשם שניתן לזהות, כגון ca-cert.pem
. ודא שהקובץ שאתה יוצר כולל את הסיומת .pem
.
בנוסף, ניתן להשתמש ב-SFTP כדי להעביר את הקובץ למחשב שלך.
לאחר שהורדת את קובץ ה-ca-cert.pem
למחשב שלך, אתה יכול להגדיר את החיבור ל-VPN.
חיבור מ- Windows
ישנם מספר דרכים לייבא את תעודת השורש ולהגדיר את Windows כך שיתחבר ל-VPN. השיטה הראשונה משתמשת בכלים גרפיים עבור כל שלב. השיטה השנייה משתמשת בפקודות PowerShell שניתן לתסריט ולשנות להתאמה להגדרת ה-VPN שלך.
הערה: הוראות אלו נבדקו על התקנות של Windows 10 הרצות גרסאות 1903 ו-1909.
הגדרת Windows עם כלים גרפיים
ראשית, ייבא את תעודת השורש על ידי המשכת השלבים הבאים:
-
לחץ
WINDOWS+R
כדי להציג את תיבת הדו"ח (Run), והזןmmc.exe
כדי להפעיל את עקרון ניהול Windows. -
מתפרקת לתפריט ה־File, נווט אל Add or Remove Snap-in, בחר Certificates מתוך רשימת ה snap-ins הזמינים, ולחץ על Add.
-
נרצה שה-VPN יעבוד עם כל משתמש, אז בחר Computer Account ולחץ Next.
-
אנו מגדירים דברים על המחשב המקומי, אז בחר Local Computer, ואז לחץ Finish.
-
תחת הצומת שורש קונסולה, פתח את הקטע אישורים (מחשב מקומי), הרחב את רשת האישורים האמינים לשורש, ואז בחר בקטע אישורים:
-
מתוך תפריט פעולה, בחר כל המשימות ולחץ על ייבוא כדי להציג את אשף ייבוא האישורים. לחץ על הבא כדי לעבור את ההקדמה.
-
במסך קובץ לייבוא, לחץ על כפתור ה־עיון, ווודא שאתה משנה את סוג הקובץ מ-"אישור X.509 (.cer;.crt)" ל-"כל הקבצים (.)", ואז בחר בקובץ
ca-cert.pem
ששמרת. לאחר מכן לחץ על הבא. -
ודא שהחנות של התעודות מוגדרת להיות רשת מקומית אמון, ולחץ על הבא.
-
לחץ על סיום כדי לייבא את התעודה.
לאחר מכן, קבע את ה-VPN בעזרת השלבים הבאים:
- הפעל לוח הבקרה, ונווט אל מרכז הרשת והשיתוף.
- לחץ על הגדרת חיבור או רשת חדשה, ואז בחר התחברות למקום עבודה.
- בחר השתמש בחיבור האינטרנט שלי (VPN).
- הזן את פרטי שרת ה-VPN. הזן את שם הדומיין או כתובת ה-IP של השרת בשדה כתובת האינטרנט, ומלא את שם היעד במשהו שמתאר את החיבור ל-VPN שלך. לאחר מכן לחץ על בוצע.
הגדרת Windows בעזרת PowerShell
כדי לייבא את תעודת ה-CA השורש באמצעות PowerShell, תחילה עליך לפתוח פקודת PowerShell עם הרשאות מנהל. כדי לעשות זאת, לחץ על האייקון של תפריט התחל ובחר Windows PowerShell (מנהל)
. תוכל גם לפתוח פקודה כמנהל ולהקליד powershell
.
לאחר מכן נייבא את התעודה באמצעות הפקודה Import-Certificate
בפווערשל. בפקודה הבאה, הארגומנט הראשון של -CertStoreLocation
יוודא שהתעודה מיובאת לאחסון Trusted Root Certification Authorities של המחשב כך שכל התוכניות והמשתמשים יוכלו לאמת את תעודת שרת ה-VPN. הארגומנט -FilePath
צריך להפנות למיקום בו העתקת את התעודה. בדוגמה הבאה הנתיב הוא C:\Users\sammy\Documents\ca-cert.pem
. ודא כי אתה עורך את הפקודה כך שהיא תתאים למיקום שבו השתמשת.
הפקודה תחזיר משהו דומה לזה:
Output PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root
Thumbprint Subject
---------- -------
DB00813B4087E9367861E8463A60CEA0ADC5F002 CN=VPN root CA
כעת כדי להגדיר את ה-VPN באמצעות PowerShell, הפעל את הפקודה הבאה. החלף את שם ה-DNS או כתובת ה-IP של השרת שלך בשורה של -ServerAddress
. הדגלים השונים יוודאו שווינדוס מוגדרת נכון עם הפרמטרים האבטחתיים המתאימים שמתאימים לאפשרויות שהגדרת ב- /etc/ipsec.conf
.
אם הפקודה הצליחה, לא יהיה שום פלט. כדי לאמת שה-VPN מוגדר כראוי, השתמש בפקודת Get-VPNConnection
:
תקבל פלט דומה לזה:
OutputName : VPN Connection
ServerAddress : your_server_ip
AllUserConnection : False
Guid : {B055A1AB-175C-4028-B4A8-D34309A2B20E}
TunnelType : Ikev2
AuthenticationMethod : {Eap}
EncryptionLevel : Maximum
L2tpIPsecAuth :
UseWinlogonCredential : False
EapConfigXmlStream : #document
ConnectionStatus : Disconnected
RememberCredential : True
SplitTunneling : False
DnsSuffix :
IdleDisconnectSeconds : 0
ברירת המחדל של Windows בוחרת אלגוריתמים ישנים ואיטיים יותר. הפעל את פקודת ה-Set-VpnConnectionIPsecConfiguration
כדי לשדרג את פרמטרי ההצפנה שבהם תשתמש Windows להחלפת המפתחות IKEv2, וכדי להצפין את החבילות:
הערה: אם ברצונך למחוק את חיבור ה-VPN ולהגדיר אותו מחדש עם אפשרויות שונות, תוכל להפעיל את פקודת ה-Remove-VpnConnection
.
הדגל -Force
ידלג על הבקשה לאישור הסרתו. עליך להיות מנותק מה-VPN אם תנסה להסיר אותו באמצעות הפקודה הזו.
התחברות ל-VPN
לאחר שיבואת את התעודה והגדרת ה-VPN באמצעות אחת מהשיטות, חיבור ה-VPN החדש שלך יהיה גלוי תחת רשימת הרשתות. בחר את ה-VPN ולחץ התחבר. יתבקש ממך להזין את שם המשתמש והסיסמה. הקלד אותם, לחץ אישור, ותתחבר.
התחברות מ- macOS
עקוב אחרי השלבים הבאים כדי לייבא את התעודה:
- לחץ פעמיים על קובץ התעודה. יופיע חלון קופץ של גישת מפתח עם הודעה שאומרת "גישת מפתח מנסה לשנות את מפתח המערכת. הזן את הסיסמה שלך כדי לאפשר זאת."
- הזן את הסיסמה שלך, ואז לחץ על שנה את מפתח המערכת.
- הקלק פעמיים על תעודת ה-VPN שיובאה לאחרונה. זה מביא לך חלון מאפיינים קטן שבו תוכל לציין את רמות האמינות. הגדר את אבטחת IP (IPSec) ל- לאמון תמידי ותתבקש שוב להזין את הסיסמה שלך. הגדרה זו נשמרת אוטומטית לאחר הזנת הסיסמה.
עכשיו שהתעודה יובאה והוא נאמן, הגדר את החיבור ל-VPN עם השלבים הבאים:
- עבור אל העדפות המערכת ובחר רשת.
- לחץ על כפתור ה-"פלוס" הקטן בתחתית השמאלית של רשימת הרשתות.
- בחלון הקופץ שמופיע, הגדר את ממשק ל- VPN, הגדר את סוג ה-VPN ל- IKEv2, ותן שם לחיבור.
- בשדה שרת ו- ID מרוחק, הזן את שם הדומיין או כתובת ה-IP של השרת. השאר את ID מקומי ריק.
- לחץ על הגדרות אימות, בחר שם משתמש, והזן את שם המשתמש והסיסמה שהגדרת עבור משתמש ה-VPN שלך. לאחר מכן לחץ אישור.
לבסוף, לחץ על התחבר כדי להתחבר ל-VPN. עכשיו אתה אמור להיות מחובר ל-VPN.
מתחבר מ- Ubuntu
כדי להתחבר ממכונת Ubuntu, ניתן להגדיר ולנהל את StrongSwan כשירות או להשתמש בפקודה חד פעמית בכל פעם שברצונך להתחבר. הוראות ניתנות לשני האפשרויות.
ניהול של StrongSwan כשירות
כדי לנהל את StrongSwan כשירות, יש לבצע את שלבי התצורה הבאים.
ראשית, עדכן את מטמון החבילות המקומי שלך באמצעות apt
.
לאחר מכן, התקן את StrongSwan והתוספים הנדרשים לאימות.
כעת יש לך צורך בעותק של תעודת ה-CA בתיקיית /etc/ipsec.d/cacerts
כך שהלקוח שלך יוכל לוודא את זהות השרת. הפעל את הפקודה הבאה כדי להעתיק את קובץ ca-cert.pem
למקום:
כדי לוודא שה-VPN רץ רק לפי דרישת הזדמנות, השתמש ב־systemctl
כדי לנטרל את הרצת StrongSwan באופן אוטומטי.
לאחר מכן, הגדר את שם המשתמש והסיסמה שתשתמש בהם לאימות בשרת VPN. ערוך את /etc/ipsec.secrets
באמצעות nano או העורך שתעדיפו.
הוסף את השורה הבאה, ערוך את ערכי שם המשתמש והסיסמה שהגדרת על השרת.
your_username : EAP "your_password"
לבסוף, ערוך את הקובץ /etc/ipsec.conf
כדי להגדיר את הלקוח שלך כך שיתאים לתצורת השרת.
config setup
conn ikev2-rw
right=server_domain_or_IP
# זה צריך להתאים לערך של `leftid` בתצורת השרת שלך
rightid=server_domain_or_IP
rightsubnet=0.0.0.0/0
rightauth=pubkey
leftsourceip=%config
leftid=username
leftauth=eap-mschapv2
eap_identity=%identity
auto=start
כדי להתחבר ל-VPN, הקלד:
כדי לנתק שוב, הקלד:
שימוש בלקוח charon-cmd עבור חיבורים חד פעמיים
לנהל את StrongSwan כשירות, יהיה עליך לבצע את השלבים הבאים בתצורה.
ראשית, עדכן את מטמון החבילות המקומי שלך באמצעות apt
בשלב הבא, התקן את StrongSwan והתוספות הנדרשות לאימות:
עכשיו יהיה עליך לקבל עותק של תעודת ה-CA בתיקיית /etc/ipsec.d/cacerts
כך שהלקוח שלך יוכל לאמת את זהות השרת. הרץ את הפקודה הבאה כדי להעתיק את הקובץ ca-cert.pem
למקום:
בנקודה זו תוכל להתחבר לשרת VPN עם charon-cmd
באמצעות תעודת CA של השרת, כתובת ה-IP של שרת ה-VPN, ושם המשתמש שהגדרת.
הרץ את הפקודה הבאה כל פעם שתרצה להתחבר ל-VPN:
כאשר יתבקש ממך, הזן את סיסמת המשתמש של ה-VPN ותתחבר ל-VPN. כדי לנתק, לחץ על CTRL+C
בטרמינל והמתן לסגירת החיבור.
התחברות מ-iOS
כדי להגדיר את חיבור ה-VPN במכשיר iOS, עקוב אחר השלבים הבאים:
- שלח לעצמך אימייל עם תעודת השורש מצורפת.
- פתח את האימייל במכשיר ה-iOS שלך והקש על קובץ התעודה המצורף, ואז הקש על התקן והזן את הקוד הסודי שלך. ברגע שהתעודה מותקנת, הקש על סיום.
- עבור אל הגדרות, כללי, VPN והקש על הוסף תצורת VPN. זה יביא את מסך התצורה של חיבור VPN.
- הקש על סוג ובחר IKEv2.
- בשדה תיאור, הזן שם קצר עבור חיבור ה-VPN. זה יכול להיות כל דבר שתרצה.
- בשדות שרת ו-ID מרוחק, הזן את שם הדומיין או כתובת ה-IP של השרת. שדה ID מקומי ניתן להשאר ריק.
- הזן את שם המשתמש והסיסמה שלך בסעיף אימות, ואז הקש על בוצע.
- בחר בחיבור ה-VPN שיצרת כעת, הקש על המתג בחלק העליון של העמוד, ותתחבר.
מחיבור ממכשירי Android
עקוב אחרי השלבים האלו כדי לייבא את התעודה:
- שלח לעצמך אימייל עם התעודה של CA מצורפת. שמור את התעודה של CA בתיקיית ההורדות שלך.
- הורד את לקוח StrongSwan VPN מחנות Play.
- פתח את האפליקציה. הקש על סמל "עוד" (. . .) בפינה העליונה הימנית ובחר ב-תעודות CA.
- לחץ על סמל "עוד" (. . .) בפינה הימנית העליונה שוב. בחר יבוא תעודה.
- עיין בתיקיית ההורדות שלך לקובץ התעודה של CA ובחר אותו כדי לייבא אותו לאפליקציה.
עכשיו שהתעודה יובאה לאפליקציית StrongSwan, תוכל להגדיר את חיבור ה-VPN עם השלבים האלה:
- באפליקציה, הקש על הוסף פרופיל VPN בחלק העליון.
- מלא את שרת עם שם הדומיין של שרת ה-VPN או כתובת ה-IP הציבורית שלו.
- ודא ש-IKEv2 EAP (שם משתמש/סיסמה) נבחר כסוג ה-VPN.
- מלא את שם המשתמש ואת הסיסמה עם הפרטים שהגדרת על השרת.
- בטל את הבחירה ב-בחר באופן אוטומטי בקטע התעודות של CA ולחץ על בחר בתעודת CA.
- הקש על לשונית ייבוא בחלק העליון של המסך ובחר ב-CA שיובא (הוא יקרא "שורש CA של VPN" אם לא שינית את ה-DN לפני כן).
- אם תרצה, מלא את שם הפרופיל (אופציונלי) עם שם מתיאור יותר מדויק.
כאשר תרצה להתחבר ל-VPN, לחץ על הפרופיל שיצרת כעת באפליקציית StrongSwan.
פתרון בעיות בחיבורים
אם אינך מצליח/ה לייבא את התעודה, וודא שהקובץ נמצא עם סיומת .pem
, ולא .pem.txt
.
אם אינך מצליח/ה להתחבר ל-VPN, בדוק/י את שם השרת או כתובת ה-IP שהשתמשת בה. שם הדומיין או כתובת ה-IP של השרת חייבים להתאים למה שהגדרת כשם המקובץ המשותף (CN) בעת יצירת התעודה. אם הם לא מתאימים, חיבור ה-VPN לא יעבוד. לדוגמה, אם הגדרת תעודה עם CN של vpn.example.com
, עליך להשתמש ב-vpn.example.com
כאשר את/ה מזין/ה את פרטי שרת ה-VPN. בדוק שוב את הפקודה שהשתמשת בה כדי ליצור את התעודה ואת הערכים שהשתמשת בהם בעת יצירת חיבור ה-VPN שלך.
לבסוף, בדוק שוב את התצורה של ה-VPN כדי לוודא שערך ה-leftid
מוגדר עם סימן @
אם את/ה משתמש/ת בשם דומיין:
leftid=@vpn.example.com
אם את/ה משתמש/ת בכתובת IP, וודא שהסימן @
נכחד. וכן וודא שכאשר יצרת את קובץ ה-server-cert.pem
כלולים שני הדגלים --san @כתובת_IP
ו---san כתובת_IP
.
סיכום
במדריך זה, בנית/ה שרת VPN שמשתמש בפרוטוקול IKEv2. למדת על הפקודות ששולטות בצדדים השמאלי והימני של חיבורים על שרתים ולקוחות. כמו כן הגדרת קליינט Windows, macOS, iOS, Android או Linux כדי להתחבר ל-VPN.
כדי להוסיף או להסיר משתמשים, עבור לשלב 5 שוב. כל שורה ב־/etc/ipsec.secrets
היא עבור משתמש אחד, כך שהוספת או הסרת משתמשים, או שינוי סיסמאות דורשת רק עריכת הקובץ.
עכשיו תוכל להיות בטוח כי פעילויות האינטרנט שלך יישארו מאובטחות בכל מקום שתלך לו ועם כל התקן שתשתמש בו כדי לגשת לאינטרנט.