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

אם רק תוכל ליצור VPN משלך בין המחשב הנייד שלך לבין המחשב הביתי שלך.

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

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

מה אתה צריך

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

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

התקנת OpenVPN

כדי להתחיל, עליך להתקין את OpenVPN ו- Easy-RSA בשרת שלך. לאחר מכן התקן את OpenVPN במחשב הלקוח שלך.

ב- Ubuntu עליך להתקין את Easy-RSA מדף Github זה. אובונטו כוללת את גירסת Easy-RSA גירסה 2 במאגרי המידע שלה. הקישור Github מציע Easy-RSA גירסה 3, אשר עוקב אחר הפקודות אני אשתמש במאמר זה.

 sudo apt-get להתקין שיבוט openvpn git https://github.com/OpenVPN/easy-rsa.git 

בספרייה שיבטת את מאגר Github לתוך, להעתיק את המדריך "easyrsa3" הוא מכיל לתוך "/ / etc / קל rsa /."

 sudo mkdir / etc / easy-rsa sudo cp -r ./easyrsa3/* / etc / easy-rsa / 

תשתית מפתח ציבורי (PKI)

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

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

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

יצירת תעודת CA

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

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

1. שנה ספריות ל "/ etc / easy-rsa /:"

 cd / etc / easy-rsa / 

2. אם יש צורך, להעתיק "/etc/easy-rsa/vars.example" ל "/ etc / קל rsa / vars." ואז, לפתוח vars כדי לערוך את תוכנו:

 sudo cp ./vars.example ./vars sudo nano ./vars 

3. הזן את הפרטים כגון הארץ, המחוז, העיר, הארגון ודוא"ל. בטל את הסימון של השורות המוצגות כאן על ידי הסרת ה- # בתחילת כל אחת מהן.

לאחר שתסיים עם העריכה, שמור (Ctrl + o) ויציאה (Ctrl + x).

4. לאתחל את ה- PKI החדש שלך וליצור את keypair רשות אישורים כי תשתמש כדי לחתום על שרת בודד אישורי הלקוח:

 ייצוא EASYRSA = $ (pwd) sudo .//easyrsa init-pki sudo ./easyrsa build-ca 

העתק את הקובץ ca.crt שזה עתה יצרת לספריית השרתים של OpenVPN. כמו כן, עליך לשנות את בעליו וקבוצתו באמצעות Chown:

 sudo cp /etc/easy-rsa/pki/ca.crt / etc / openvpn / server / root chodown: root /etc/openvpn/server/ca.crt 

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

שנה חזרה לספריית ה- Easy-RSA שלך וצור את אישור השרת ואת המפתח הפרטי שלו:

 cd / etc / easy-rsa sudo .//easyrsa init-pki sudo ./easyrsa gen-req ServerName nopass 

אתה יכול לשנות את "ServerName" בפקודה מעל לכל שם שאתה רוצה. הקפד לשקף את השינוי בעת העתקת המפתח החדש לספריית השרתים של OpenVPN:

 sudo cp /etc/easy-rsa/pki/private/ServerName.key / etc / openvpn / server / 

דיפי-הלמן פרמטרים קובץ

OpenVPN עושה שימוש בשיטת חילופי המפתח Diffie-Hellman (DH) של החלפת מפתחות הצפנה באופן מאובטח ברשת. תיצור קובץ פרמטרים של DH עם הפקודה הבאה:

 sudo openssl dhparam הלאה /etc/openvpn/server/dh.pem 2048 

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

אימות הודעה מבוסס Hash

OpenVPN משתמש גם בחתימת אימות הודעה מבוססת Hash (HMAC) כדי להגן מפני פגיעויות בלחיצות יד SSL ​​/ TLS. צור את הקובץ באמצעות פקודה זו:

 sudo openvpn - genkey --secret /etc/openvpn/server/ta.key 

קבצי לקוח

בשלב זה תיצור מספר קבצים עבור השרת שלך. עכשיו הגיע הזמן ליצור קבצים עבור הלקוחות שלך. אתה יכול לחזור על תהליך זה מספר פעמים עבור לקוחות רבים ככל שאתה צריך. ניתן ליצור קבצי לקוח בבטחה על כל מחשב עם Easy-RSA מותקן.

הזן את ספריית Easy-RSA ואתחל את PKI שוב אם לא עשית זאת כבר:

 cd / etc / easy-rsa sudo. / easyrsa init-pki 

צור מפתח לקוח ואישור. שנה ספריות אם דילגת על השלב הקודם.

 cd / etc / easy-rsa sudo. / easyrsa gen-req ClientName nopass 

אם אתה חוזר על התהליך, אינך צריך לאתחל את ה- PKI עבור כל לקוח חדש. רק לוודא לשנות "ClientName" להיות ייחודי בכל פעם.

חתימת שרתים ואישורי לקוח

CA חייב כעת לחתום על השרת שלך ואת אישורי הלקוח.

אם אתה מסתכל בקובץ "/ etc / easy-rsa / pki / reqs /" שלך, אתה אמור לראות את כל הקבצים (.qq) בקשה Easy-RSA שנוצרו easyrsa gen-req הקודמות של easyrsa gen-req .

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

אם השתמשת במכונת CA נפרדת, עליך להעביר כעת את קבצי ה- .Rq האלה ל- CA לחתימה. ברגע זה הוא שלם, לשנות את המדריך Easy-RSA לחתום על הקבצים שלך עם הפקודות הבאות, כדי לוודא לשקף את המיקום הנכון של כל .qq ואת השם של כל שרת הלקוח.

 cd / etc / easy-rsa sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ServerName.req Server1 sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ClientName.req Client1 sudo ./easyrsa שרת חתימה מחדש Server1 sudo ./easyrsa sign-req Client Client1 

שים לב שיהיה עליך לספק ל- Easy-RSA שם אחר עבור השרת שלך ואישורי הלקוח שלך. ServerName.req ישמש כאן, לדוגמה, כדי ליצור Server1.crt.

עכשיו אתה צריך למצוא שני קבצים חדשים - "/etc/easy-rsa/pki/issued/Server1.crt" ו "/etc/easy-rsa/pki/issued/Client1.crt" - כי תעביר את שלהם בהתאמה מכונות (ראה בחלק הבא של מאמר זה). באפשרותך למחוק כל קובץ .req שנותר.

מעבר לאורך קבצי .CRT

עכשיו את תעודות חתום (כל. CRT) מוכנים לעבוד עבור בעליהם. העבר את קובץ השרת למיקום OpenVPN שלו וצור ספריה חדשה עבור אישורי הלקוח:

 sudo mv /etc/easy-rsa/pki/issued/Server1.crt / etc / openvpn / שרת / שורש chodon שורש: root /etc/openvpn/server/Server1.crt sudo mkdir / etc / easy-rsa / pki / חתום sudo mv /etc/easy-rsa/pki/issued/Client1.crt / etc / easy-rsa / pki / חתום / 

יצירת התיקייה "... pki / sign /" כאן נותנת לך מיקום מסומן למיקום אישורי לקוח מרובים.

שרת משותף וקבצי לקוח

עכשיו אתה צריך חמישה קבצים בספרייה "/ etc / openvpn / server /" שלך: ca.crt, dh.pem, Server1.crt, ServerName.key, ו ta.key.

אתה צריך שניים מאותם קבצים בתיקיית הלקוח OpenVPN שלך על המחשב של הלקוח. העתק אותם באמצעות scp או דיסק הבזק לפי הצורך. העתק את "/etc/openvpn/server/ca.crt" ואת "/etc/openvpn/server/ta.key" ללקוח שלך "/ etc / openvpn / client /."

הקפד להעתיק את אישור הלקוח ואת המפתח לאותו מיקום. העתק "/etc/easy-rsa/pki/signed/Client1.crt" ו "/etc/easy-rsa/pki/private/ClientName.key" ללקוח שלך "/ etc / openvpn / client /." חזור על תהליך זה עבור כל לקוח נוסף שיצרת.

עבור כל לקוח, אתה צריך עכשיו יש ארבעה קבצים "/ etc / openvpn / לקוח:" Client1.crt, ClientName.key, ca.crt, ו ta.key.

שרת וקבצי תצורת לקוח

השלב האחרון לפני תחילת ה- VPN הוא לערוך קבצי תצורה עבור השרת והלקוח. ראשית, אתר את "ברירת המחדל server.conf" ו "client.conf" קבצים. סביר להניח שהם נמצאים באחד המיקומים הבאים:

  • "/ Usr / share / openvpn / example"
  • "/ Usr / share / doc / openvpn / example / sample-config-files /" (תצורות אובונטו ממוקמות כאן)

הערה : ב- Ubuntu יהיה עליך לפרוק את הקובץ "server.conf.gz". השתמש gunzip -d ./server.conf.gz כדי לקבל את הקובץ server.conf מהחבילה דחוס.

העתק כל קובץ הגדרות לתיקיה המתאימה "/ etc / openvpn / server /" ו "/ etc / openvpn / client /".

ב- server.conf בצע את השינויים הבאים. ודא שהשמות והמיקומים של ca.crt שלך, Server1.crt, ServerName.key ו- dh.pem מופיעים בקובץ ההגדרות שלך. ייתכן שיהיה עליך להשתמש בנתיבים מלאים - כמו שורה שקוראת "cert /etc/openvpn/server/Server1.crt."

לשנות את tls-auth... קו לקרוא tls-crypt ta.key . שוב, ייתכן שיהיה צורך בנתיב מלא.

Uncomment (להסיר את ";") מן "משתמש אף אחד" ו "קבוצה אף אחד" שורות.

עבור הלקוח שלך תוכל לבצע שינויים דומים. לאחר ביצוע קובץ ההגדרות, לשקף את השמות ואת המיקומים של ca.crt שלך, Client1.crt, ClientName.key, ו ta.key (עם אותו מהלך מ tls-auth... כדי tls-crypt... ), הכנס את השם או כתובת ה- IP והיציאה של השרת שלך.

הגיע הזמן להתחבר

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

הפעל את השרת באמצעות:

 פתח קובץ זה 

הלקוח עם:

 פתוח / / cc / 

היצירה המוצלחת של VPN תציג את הפלט של הלקוח קריאה "אתחול רצף הושלם" בסוף הפלט שלה. תוכלו למצוא גם סוג חדש של חיבור בממשקי הרשת הזמינים שלכם.

צילום מסך זה מציג את ממשק "tun0". זה מה שהשרת OpenVPN עשה. אתה יכול לראות את הכתובת שלה 10.8.0.1 ו ping כי כתובת מהלקוח כדי לאמת חיבור מוצלח.

ניתוב תעבורת האינטרנט באמצעות שרת

בשלב זה אתה בטח רוצה לגשת לאינטרנט דרך השרת שלך מן הלקוח המרוחק שלך. לשם כך, תחילה עליך לשנות את קובץ תצורת השרת. הוסף את השורה push 'redirect-gateway def1 לקובץ תצורת השרת שלך.

 הד "לדחוף \" להפניה-שער g1 \ "" sudo tee -a /etc/openvpn/server/server.conf 

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

 iptables-nat -A POSTROUTING -s 10.8.0.0/24 -O eth0-MASQUERADE 

אם לא שינית את השורה "שרת 10.8.0.0 255.255.255.0" בקובץ server.conf שלך, כתובת ה- IP בפקודה זו אמורה לפעול. יהיה עליך לשנות את "eth0" כך שיתאים לממשק ה- Ethernet של השרת שלך. אתה יכול לראות מ צילומי מסך הקודם כי המכשיר שלי משתמש "enp19s0."

לאחר מכן, באפשרותך לדחוף את הגדרות ה- DNS ללקוח. כל כתובת הלקוח יכול להגיע דחף. ניתן להשתמש בפקודה זו כנקודת התחלה:

 הד "לדחוף \" dhcp אפשרות DNS 10.8.0.1 \ "" sudo tee -a /etc/openvpn/server/server.conf 

לבסוף, ניתן להפעיל העברת מנות בשרת כך:

 הד 1 | sudo tee / proc / sys / net / ipv4 / ip_forward 

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

סיכום

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

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