כיצד להגדיר שרת OpenVPN באובונטו 20.04

מדריך אולטימטיבי להגדרת שרת OpenVPN מאובטח באובונטו 20.04

רשת פרטית וירטואלית (VPN) מאפשרת לך להתחבר בצורה מאובטחת ופרטית לרשת פרטית מרוחקת, למשל, לרשת המשרדית שלך, או לאינטרנט בצורה כזו כאילו אתה מחובר ישירות לרשת פרטית.

VPN עובד בארכיטקטורת שרת-לקוח. שרת VPN פרוס על מכונה ונגיש לציבור דרך האינטרנט. ניתן להגדיר את שרת ה-VPN כך שיאפשר חיבור לרשת LAN פרטית, כגון רשת משרדית, או לאפשר חיבורים לאינטרנט. המשתמש מתחבר לשרת ה-VPN באמצעות לקוח VPN במחשב המקומי שלו. התקשורת בין שרת VPN ללקוח מתבצעת באמצעות פרוטוקול מנהור מאובטח. לאינטרנט, נראה כאילו היעד של התעבורה הוא שרת ה-VPN; עם זאת, התעבורה עוברת ללקוח דרך השרת.

ל-VPN יש שימושים רבים בחיי היומיום, כמו חיבור מאובטח לרשת Wifi ציבורית, שלעתים קרובות נפגעת או עקיפת מגבלות גיאוגרפיות באתרים מסוימים על ידי חיבור ל-VPN המבוסס במדינה המותרת על ידי האתר.

OpenVPN הוא יישום VPN בשימוש נרחב המאפשר מגוון רחב של תצורות ואפשרויות. הוא משתמש בפרוטוקול Secure Sockets Layer (SSL) להצפנת הנתונים ומפתחות משותפים מראש, שם משתמש/סיסמה או אישורים לאימות לקוח ה-VPN. במאמר זה נראה כיצד להגדיר שרת VPN ולקוח VPN באובונטו 20.04.

הַתקָנָה

OpenVPN זמין במאגרים הרשמיים של אובונטו בחבילה openvpn. חבילה זו מתקינה גם את שרת OpenVPN וגם את הלקוח.

sudo apt להתקין openvpn

כפי שהוזכר קודם לכן, OpenVPN משתמש בתעודות SSL כדי להצפין נתונים בין השרת ללקוח. עלינו להגדיר רשות אישורים (CA) משלנו כדי להנפיק אישורים עבור ה-VPN. שימו לב שיש להגדיר זאת במחשב אחר מזה שבו מוגדר OpenVPN; הסיבה היא שאם הוא נמצא באותו שרת ואם הוא נפגע, תוקף יכול לגשת למפתח הפרטי ובכך לתקוף את חיבור ה-VPN.

נשתמש בכלי שנקרא 'Easy-RSA' כדי להגדיר את רשות האישורים. כדי להתקין אותו, הפעל את הפעולות הבאות על מכונת ה-CA, מכונת השרת OpenVPN ומחשב הלקוח, מכיוון שהקונפיגורציה נדרשת בשלושת אלה כדי להגדיר את ה-CA.

sudo apt להתקין את easy-rsa

כעת נגדיר תחילה את רשות האישורים במכשיר ה-CA ונבצע כמה שלבי תצורה נדרשים עבור אותו במכונת שרת ה-VPN הפתוח.

הגדרת רשות האישורים

הגדרה ראשונית במחשב CA

כעת, חבילה זו מתקינה פקודה בשם make-cadir המשמש ליצירת תיקיה להגדרת רשות האישורים. בואו ניצור תיקיה באמצעות זה ונכנס לתיקיה.

make-cadir cert_authority && cd cert_authority

פתח את הקובץ שנקרא vars נוצר בספרייה זו. קובץ זה מכיל כמה משתני תצורה שעלינו לשנות. הערכים שיש לשנות נמצאים בשורות 91-96, אחרי ההערה על שדות ארגוניים המתאר את השדות הללו. בטל את ההערה על השורות ומלא את הערכים המתאימים במקום ערכי המדגם.

שמור וצא מהקובץ. אם אתה משתמש בעורך vim, לחץ על יציאה, הקלד :wq ולחץ להיכנס לשמור ולצאת.

לאחר מכן, אנו מפעילים את easyrsa תוכנית בספרייה להגדרת תשתית המפתח הציבורי (PKI), שתשמש להפקת מפתח ציבורי ותעודות.

./easyrsa init-pki

השלב הבא יפיק את מפתח ה-CA ואת האישור. כאשר הפקודה מבקשת סיסמה, הזן סיסמה עבור מפתח CA. כמו כן, הזן שם נפוץ כאשר תתבקש. אם תשאיר את זה ריק, שם ברירת המחדל של Easy-RSA CA ישמש.

./easyrsa build-ca

כפי שאנו יכולים לראות מהפלט האישור והמפתח נוצרו. מפתח זה ישמש לחתימה על אישורי הלקוח והשרת, ולכן אין לגעת/לשנות אותו לעולם.

כעת, יש לנו את הגדרת ה-PKI. השלב הבא הוא יצירת מפתח שרת ותעודה במחשב שבו נשתמש כשרת OpenVPN. אישור זה ייחתם מאוחר יותר על ידי מכונת ה-CA.

יצירת מפתח שרת ואישור במחשב השרת

כבר התקנו את Easy RSA במחשב השרת. כעת בצעו את שלושת השלבים במכונת השרת, אותם ביצענו בעבר במכונת ה-CA, כלומר. יצירת ספריית CA באמצעות make-cadir ולהיכנס לתוכה, לשנות את המשתנים ב- vars קובץ ויצירת PKI באמצעות ./easyrsa init-pki פקודה.

לאחר מכן, עלינו להפעיל את הפקודה כדי ליצור בקשה ומפתח לאישור שרת.

./easyrsa gen-req שרת nopass

שימו לב שעברנו את האופציה אין מעבר כך שהפקודה לא תנחה אותנו להזין סיסמה עבור מפתח השרת. זה עדיין יבקש שם נפוץ עבור השרת, אותו תוכל להזין כל דבר, או להשאיר אותו ריק בשם ברירת המחדל (שרת) להשתמש.

הזז את קובץ המפתח שנוצר בתוך /etc/openvpn מַדרִיך.

sudo mv pki/private/server.key /etc/openvpn

שלח את בקשת האישור למחשב ה-CA. נשתמש בפקודה scp למטרה זו.

scp pki/reqs/server.req user@CA_MACHINE_HOSTNAME:/directory

בצילום המסך למעלה, המארח 45.79.125.41 הוא מכונת ה-CA. העתקנו את האישור לספריית /root.

כעת, האישור של השרת הועתק למחשב ה-CA. השלב הבא הוא לחזור למחשב ה-CA ולחתום על אישור זה.

חתימה על אישור השרת ב-CA

ראשית, בואו נוודא אם קובץ בקשת האישור מהשרת הועתק במחשב ה-CA. עבור אל הספרייה שבה העתקנו את הקובץ (/root בדוגמה שלי) והפעל ls.

:~# cd /root && ls cert_authority server.req

כפי שאנו יכולים לראות, הקובץ server.req נוכח. לאחר מכן, עבור אל ספריית CA וייבא בקשה זו.

cd cert_authority ./easyrsa import-req /root/server.req שרת

כדי לחתום על בקשה זו, הפעל את הפקודה הבאה.

שרת ./easyrsa סימן-דרישת שרת

כאן הטיעון הראשון הוא סוג הבקשה, כלומר, שרת, והארגומנט השני הוא השם הנפוץ של מכונת השרת, שעבורו השתמשנו בעבר בערך ברירת המחדל, כלומר, שרת.

הזן את הביטוי כן, ואת הסיסמה עבור מפתח CA כאשר תתבקש.

כעת נוכל להסיר את קובץ בקשת האישור ולהעתיק את האישור שנוצר עבור השרת, כמו גם את האישור הציבורי של CA בחזרה למחשב השרת.

rm /root/server.req scp pki/issued/server.crt [email protected]:/root scp pki/ca.crt [email protected]:/root

לאחר מכן, עלינו לבצע עוד כמה שלבים כדי להבטיח חיבור מאובטח של ה-VPN.

יצירת פרמטרים של DH

החלפת מפתחות DH (Diffie-Hellman) היא אלגוריתם המבטיח החלפה מאובטחת של מפתחות קריפטו בערוץ לא מאובטח. ראשית, הבה נעביר את האישור שהתקבל ואת האישור הציבורי של CA אל /etc/openvpn.

mv /root/ca.crt /root/server.crt /etc/openvpn

עבור לתיקיית CA במחשב השרת והפעל את הפקודה הבאה כדי ליצור את פרמטרי DH. זה עלול לקחת הרבה זמן ליצור.

./easyrsa gen-dh

כעת, העבר את הקובץ שנוצר אל /etc/openvpn.

mv /root/cert_authority/pki/dh.pem /etc/openvpn

הפקת מפתחות TA

OpenVPN משתמש באמצעי אבטחה נוסף נוסף באמצעות מפתח אישור TLS. כדי ליצור את מפתח האישור TLS, הפעל:

openvpn --genkey --secret tls_auth.key

ולהעביר את המפתח ל /etc/openvpn.

mv tls_auth.key /etc/openvpn

תצורת מפתח השרת והגדרת רשות האישורים מתבצעת כעת. הבה נעבור לתצורה בפועל של שרת ה-VPN כעת.

תצורת שרת OpenVPN

קובץ תצורה עבור שרת OpenVPN אינו נוצר באופן אוטומטי, אולם אנו יכולים להשתמש בקובץ תצורה של תבנית מה- openvpn חֲבִילָה.

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gzip -d /etc/openvpn/server.conf.gz

פתח את הקובץ באמצעות vim או כל עורך לבחירתך.

cd /etc/openvpn vim server.conf

עלינו להזין את השמות הנפוצים של מפתחות ותעודות שהפקנו בעבר. עבור לקו מס'. 78. מכיוון שהשתמשנו בכל שמות ברירת המחדל, אנו שומרים אותם ללא שינוי. לאחר מכן בדוק את השם של קובץ פרמטר DH בשורה 85. השתמשנו בשם dh.pem, אז בואו נשנה אותו.

לאחר מכן, הבה נשנה את ההרשאות עבור שרת OpenVPN. עברו לקו 274 ו-275 והסר את ההובלה ; לבטל את ההערה.

באופן דומה, עבור לשורה 192 והסר את הנקודה-פסיק. הנחיה זו מאפשרת לתעבורה של כל הלקוחות לעבור דרך ה-VPN.

שמור וצא מהקובץ.

שנה את הבעלות על התיקיה /etc/openvpn ל-root.

sudo chown -R root:root /etc/openvpn

הגדרת רשת וחומת אש

עלינו לאפשר העברת IP בשרת על מנת לאפשר העברת מנות מלקוח ה-VPN ואליו. בטל תגובה שורה 28 על /etc/sysctl.conf:

שמור וצא מהקובץ.

אתחול systemctl כדי שהשינויים הללו יתקיימו.

sudo sysctl -p

עלינו להגדיר תרגום כתובות רשת (NAT) בשרת באמצעות חומת אש UFW כדי לאפשר ללקוח ה-VPN גישה לאינטרנט באמצעות כתובת ה-IP של שרת ה-VPN. ראשית, הבה נאפשר העברת מנות בתצורת חומת האש. לִפְתוֹחַ /etc/default/ufw ושנו את המשתנה בשורה 19 ל-ACCEPT.

שמור וצא מהקובץ.

כעת הוסף את הכללים הבאים לקובץ /etc/ufw/before.rules לפני ה לְסַנֵן שורה בקובץ.

*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/8 -o -j MASQUERADE COMMIT

הכנס לממשק הרשת שלך במקום . אתה יכול לראות את ממשק הרשת שלך עם הפקודה ifconfig.

אפשר תעבורה עבור שירות OpenVPN בחומת האש ואפשר יציאה 1194.

sudo ufw allow openvpn && sudo ufw allow 1194

טען מחדש את שירות חומת האש.

טען מחדש sudo ufw

כעת נוכל להפעיל מחדש את דמון שרת ה-VPN הפתוח על ידי הפעלת:

הפעלה מחדש של שירות sudo openvpn

אפשר את זה להתחיל בזמן האתחול על ידי הפעלת:

sudo systemctl אפשר את openvpn

שרת OpenVPN הוגדר כעת והופעל. הבה נמשיך כעת לבקשת אישור לקוח וליצירת מפתחות ותצורה אחרת.

תצורת לקוח OpenVPN

עלינו ליצור מפתח ובקשת אישור עבור הלקוח. ההליך לעשות זאת זהה לזה של השרת.

למרות שניתן ליצור מפתח לקוח ובקשת אישור במחשב הלקוח ולאחר מכן להעביר אותו למחשב ה-CA, מומלץ ליצור אותו במחשב השרת. היתרון לעשות זאת בשרת הוא שניתן ליצור סקריפט לביצוע כל השלבים הנדרשים בשרת מה שמקל על לקוח חדש להצטרף ל-VPN.

עבור לתיקיית CA בשרת והפעל את הפעולות הבאות:

cd ~/cert_authority ./easyrsa gen-req client nopass

באופן דומה כפי שנעשה בעבר, הזן שם נפוץ כאשר תתבקש, או השאר אותו ריק כדי להשתמש בשם הנפוץ המוגדר כברירת מחדל, כלומר, לָקוּחַ.

כעת נעתיק את בקשת אישור הלקוח שנוצרה למחשב ה-CA.

scp pki/reqs/client.req [email protected]:/root

בואו לייבא את הבקשה הזו למחשב ה-CA:

./easyrsa import-req /root/client.req לקוח

ועכשיו נחתום על זה:

לקוח ./easyrsa sign-req

להיכנסכן כאשר תתבקש להמשיך. הזן את הסיסמה עבור מפתח CA כאשר תתבקש.

כעת אנו יכולים להסיר את הקובץ המבוקש עבור הלקוח ולהעתיק את הבקשה חזרה למחשב שרת ה-VPN.

rm /root/client.req scp pki/issued/client.crt [email protected]:/root

בואו ניצור תיקיה בשם לָקוּחַ לשמור את כל הקבצים הקשורים ללקוח בשרת ה-VPN. אנו נעביר את מפתח הלקוח ואת האישור לתיקיה זו.

mkdir ~/client sudo mv ~/client.crt ~/cert_authority/pki/private/client.key ~/client

כעת, בואו ניצור קובץ תצורה מתבנית זמינה, בדומה לאופן שבו יצרנו את קובץ תצורת השרת.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client

פתח את הקובץ client.conf. בשורה 42, הזן את שם המארח או כתובת ה-IP של מכונת השרת שלך במקום שלי-שרת-1.

בטל הערות לשורות 61 ו-62 על ידי הסרת נקודה-פסיק, כדי לשדרג לאחור את ההרשאות עבור הקובץ.

לאחר מכן, הערה את שורות 88-90 ושורה 108. הסיבה היא שאנו רוצים להוסיף את התוכן של הקבצים שהוזכרו באופן ידני במקום להשתמש במיקומי הקבצים. המטרה לעשות זאת היא שקובץ התצורה של הלקוח יועבר מאוחר יותר ללקוח, שם למעשה לא יהיו לנו את מפתח הלקוח וקבצי האישור; לפיכך אנו מעתיקים את התוכן של אלה בקובץ התצורה עצמו.

הוסף את הדברים הבאים לקובץ תצורת הלקוח. הזן את תוכן הקובץ של הקבצים המתאימים בתוך התגים הנתונים.

 # הדבק תוכן של קובץ ca.crt כאן # הדבק תוכן של קובץ client.crt כאן # הדבק תוכן של קובץ client.key כאן key-direction 1 # הדבק תוכן של קובץ tls_auth.key כאן 

שמור וצא מהקובץ. שנה את שם הקובץ הזה מ client.conf ל client.ovpn, שכן האחרון הוא ההרחבה הנדרשת לקובצי תצורה שניתן לייבא כתצורות רשת.

כעת, העבר את הקובץ client.ovpn ללקוח, כלומר, מכונה מקומית.

לָרוּץ scp במחשב הלקוח שלך כדי להעביר קובץ ממחשב השרת למחשב המקומי שלך.

scp user@server_ip:/path_to_file local_destination_path

לבסוף, עלינו להשתמש בקובץ התצורה הזה כדי להתחבר לשרת ה-VPN. ניתן לעשות זאת הן באמצעות שורת הפקודה והן באמצעות GUI.

כדי להפעיל את לקוח ה-VPN משורת הפקודה, הפעל:

sudo openvpn --config client.ovpn

וזו הפקודה היחידה שאתה צריך להפעיל כדי להפעיל את לקוח ה-VPN.

כדי להפעיל את לקוח ה-VPN דרך GUI, בצע את השלבים הבאים.

עבור אל הגדרות »רשת במחשב הלקוח שלך.

הקלק על ה + לחצן בקטע VPN ובחר 'ייבא מקובץ...' מהאפשרויות.

לחץ על 'הוסף' כדי להתחיל להשתמש ב-VPN.

שים לב שתחת 'שער', זוהי כתובת ה-IP של השרת.

לבסוף, החלף את כפתור 'VPN של לקוח' כדי להפעיל VPN במחשב.

זה עשוי לקחת כמה שניות כדי ליצור חיבור VPN. לוגו התקדמות חדש עבור VPN יופיע בפינה השמאלית העליונה של המסך שלך בזמן ההגדרה, והוא ישתנה ללוגו VPN ברגע שהוא יוגדר.

כדי לוודא אם ה-VPN פועל כהלכה, הפעל את הפעולות הבאות:

תלתל //ipinfo.io/ip

זה אמור להחזיר את כתובת ה-IP של מכונת השרת שלך. לחלופין, אתה יכול גם לבדוק את כתובת ה-IP שלך פשוט על ידי חיפוש 'ה-IP שלי' בגוגל. זה אמור להראות את כתובת ה-IP של שרת ה-VPN שלך אם הגדרת ה-VPN שלנו פועלת כהלכה.

סיכום

במאמר זה ראינו כיצד להגדיר שרת OpenVPN, רשות אישורים ולקוח OpenVPN. כדי להוסיף לקוחות נוספים ל-VPN, כעת עלינו לבצע את ההליך להפקה ולחתימה על אישור עבור הלקוח ולהשתמש באותו קובץ תצורה שנוצר כאן, כאשר רק מפתח הלקוח וערכי האישור השתנו.

במקרה של חיבורי אינטרנט איטיים יותר, ייתכן שאם נעשה שימוש ב-UDP לתקשורת, יש אובדן מנות ניכר. המשתמש יכול לעבור ל-TCP על ידי ביטול ההערה על השורה פרוטו tcp ולהעיר על הקו פרוטו udp בקובץ תצורת השרת.

כמו כן, במקרה שיש שגיאות אחרות, אתה יכול להגדיר את רמת הרישום עם פועל הנחיה הן בקבצי תצורת השרת והן בקבצי לקוח. אתה יכול להזין ערכים בין 0 ל-9. גבוה יותר הערך של הנחיה זו, יותר מילולי יומן יהיה.