Anonim

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

בטח, אתה יכול לשלם לאחד ממאות שירותי ה- VPN שם בחוץ, אך שוב אתה סומך על מישהו אחר עם הנתונים שלך. רובם נהדרים, במציאות, אבל אם אתה רוצה שליטה מלאה, אתה יכול לבנות VPN משלך על V irtual P rivate S erver (VPS) או לשכור שרת פרטי משלך, אם מתחשק לך להיות ממש הארדקור עם זה.

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

עבור מדריך זה, תצטרך VPS שמריץ את אובונטו. אתה יכול לאסוף אחד בקלות רבה ממישהו כמו DigitalOcean או Linode . עקוב אחר מדריכי האבטחה הבסיסיים שלהם לצורך התקנתם. וודא שלא תעשה טעויות בסיסיות כמו לאפשר גישה לשורש דרך SSH.

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

להשיג את מה שאתה צריך

קישורים מהירים

  • להשיג את מה שאתה צריך
  • הגדר את חומת האש
    • מצא את הממשק
    • יסודות Iptables
    • הגדר את הכללים שלך
      • Loopback
      • פינג
      • SSH
      • OpenVPN
      • DNS
      • HTTP / S
      • NTP
      • כוון
      • רישום
      • דחה כל דבר אחר
      • NAT מתחפש
    • העברת תנועה IPv4 קדימה
    • עצור את כל חיבורי ה- IPv6
    • ייבא ושמור ל- Iptables

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

$ sudo apt להתקין openvpn easy-rsa

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

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

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

מצא את הממשק

לפני שתתחיל לכתוב כללים ל- iptables, ברר עם איזה ממשק השרת שלך מחובר לאינטרנט. הפעל ifconfig כדי להציג את ממשקי הרשת שלך. זה שיש לו addet add: התאמת כתובת ה- IP שאליה אתה מחובר הוא הממשק הנכון.

יסודות Iptables

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

התבונן בדוגמה זו של כלל iptables.

-תשומה -אני eth0 -p tcp -m מצב-מדינה הוקמה –ספורט 443 -j קבלת

בסדר, אז- A פירושו שאתה מתווסף לכלל חדש. ואז INPUT פירושו שזה נוגע לקלט לשרת שלך. יש גם פלט. דגל ה- i מורה ל- iptables לאיזה ממשק כלל זה מיועד. אתה יכול לציין לאיזה פרוטוקול הכלל מיועד עם -p. כלל זה מטפל ב- tcp. -מ מציין תנאי שחיבור חייב לעמוד. במקרה זה עליו להתאים למצב שצוין. כמובן שאז –מדינה מציינת מצב, במקרה זה חיבור מופעל. החלק הבא מציג את ה- iptables לאיזה נמל כלל זה מיועד. זה יציאה 443, יציאת HTTPS, כאן. הדגל האחרון הוא -j. זה אומר "קפיצה", וזה אומר ל- iptables מה לעשות עם החיבור. אם חיבור זה עמד בכל הדרישות שבכלל, ה- iptables יקבלו אותו.

הגדר את הכללים שלך

לכן, צריך להיות לך רעיון כללי כיצד כללי ה- iptables עובדים כעת. שאר החלק הזה יגיד לך כיצד להגדיר את הכללים שלך חתיכה אחר חתיכה.

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

צור קובץ בספריית / tmp כדי לבנות את הכללים שלך.

$ vim / tmp / ipv4

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

Loopback

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

-כניסה- אני lo -j קבלת -א תשומה! -i lo -s 127.0.0.0/8 -j דחייה-פלט-או lo -j קבלת

פינג

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

-התקנה -p icmp -m מצב - סטטוס חדש - סוג ה- icmp 8 -j קבלת -א תשומה -p icmp -m מצב - מדינה מותקנת, קשורה -J קבלה-פלט -p icmp -j קבלת

SSH

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

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

- הזנה - אני eth0 - p tcp - מדינה מדינת - מדינה חדשה, הוקמה - דוח 22 - j קבלת - פלט - eth0 - p tcp - מדינה המדינה - מדינה הוקמה - ספורט 22 - j קבלת

OpenVPN

היצירה הבאה הזו מאפשרת תנועה אל שרת OpenVPN וממנו דרך UDP.

-תעשייה -אני eth0 -p udp -m מדינת - מדינה חדשה, הוקמה --port 1194 -j קבלת - תפוקה -את eth0 -p udp -m המדינה - מדינה הוקמה --port 1194 -j ACCEPT

DNS

כעת, אפשר חיבורי DNS דרך UDP ו- TCP. אתה רוצה שה- VPN שלך יטפל ב- DNS, ולא ב- ISP שלך. זו חלק מהסיבה שאתה מקים VPN מלכתחילה.

-תעשייה -אני eth0 -p udp -m מדינת - מדינה הוקמה - ספורט 53 -j קבלת - פלט -או eth0 -p udp -m מדינה - מדינה חדשה, הוקמה - יצוא 53 -j קבלת -A הזנה - i eth0 - p tcp - מדינה מדינת - מדינה הוקמה - ספורט 53 - j קבלת - פלט - או eth0 - p tcp - מדינה המדינה - מדינה חדשה, הוקמה - יצוא 53 - j קבלת

HTTP / S

על מנת שאובונטו תוכל לעדכן את עצמה, עליך להוסיף מערך כללים כדי לאפשר חיבור יוצא של HTTP ו- HTTPS. שים לב כי כללים אלה מאפשרים לשרת רק ליזום חיבורי HTTP, כך שלא תוכל להשתמש בו כשרת אינטרנט או להתחבר אליו דרך יציאה 80 או יציאה 443.

-תעשייה -אני eth0 -p tcp -m מדינה - מדינה הוקמה - ספורט 80 -j קבלת -א תשומה -י eth0 -p tcp -m מדינת - מדינה הוקמה - ספורט 443 -j קבלת-יציאה - o eth0 -p tcp -m מדינה - מדינה חדשה, הוקמה - ייבוא ​​80 -j קבלת - פלט -או eth0 -p tcp -m מדינה - מדינה חדשה, הוקמה --port 443 -j קבלת

NTP

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

-תעשייה -אני eth0 -p udp -m מדינת - מדינה הוקמה - ספורט 123 -j קבלת - פלט -או eth0 -p udp -m מדינה - מדינה חדשה, הוקמה - יצוא 123 -j קבלת

כוון

בטל את חסימת ממשק ה- TUN בו משתמש OpenVPN לתעבורת מנהרות.

-כניסה- אני tun0 -j קבלת -א קדימה -i tun0 -j קבלת -A פלט -o tun0 -j קבלת

עליך לאפשר ל- TUN להעביר תנועה לממשק הרגיל שלך ל- VPN. תמצא את כתובת ה- IP בתצורת OpenVPN. אם תשנה אותו בתצורה, שנה אותו גם בכללים שלך.

-קדימה -אני tun0 -o eth0 -s 10.8.0.0/24 -j קבלת-מדינה קדימה -m מדינה - מדינה ממוסדת, קשורה -J קבלת

רישום

כדאי לשמור יומני כל מה שנדחה על ידי iptables. במקרה זה, המשמעות היא כל דבר שלא מתאים לאף אחד מהכללים הללו. ביומנים מאפשרים לך לראות האם קיימת פעילות זדונית או כל ניסיונות לעשות דבר רע נגד השרת שלך.

-הכניסה- מגבלה -מגבלת 3 / דקות -j LOG-קידומת יומן "iptables_INPUT_denied:" -log-level 4
-על קדימה -מגבלה -מגבלת 3 / דקות -j LOG-קידומת יומן "iptables_FORWARD_denied:" -log-level 4
-יציאה -מגבלה -מגבלת 3 / דקות -j LOG-קידומת יומן "iptables_OUTPUT_denied:" -log-level 4

דחה כל דבר אחר

לבסוף, עליך לחסום כל מה שלא מתאים לכללים שלך. זו באמת המטרה של להחזיק חומת אש מלכתחילה.

-כניסה -J דחייה -א קדימה -J דחייה-פלט -J דחייה

סגור את הקובץ עם COMMIT כדי לומר ל- iptables לבצע את כל הכללים.

NAT מתחפש

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

$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

העברת תנועה IPv4 קדימה

תצטרך לאפשר העברת תעבורת IPv4, כך שתוכל לעבור בין ה- VPN לממשק הרשת בפועל של השרת שלך. פתח /etc/sysctl.d/99-sysctl.conf עם sudo.

מצא את השורה למטה ובטל את הסימון שלה על ידי הסרת ה- #.

net.ipv4.ip_forward = 1

עצור את כל חיבורי ה- IPv6

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

לפני קביעת הכללים ל- iptables, עליך להשבית את IPv6 בכל מקום אחר במערכת.

הוסף את השורות הבאות ל- /etc/sysctl.d/99-sysctl.conf. אם סגרת אותו מהקטע הקודם, פתח אותו מחדש עם sudo.

net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 1

הפעל את השינויים שלך.

$ sudo sysctl -p

הגיב לכל שורות ה- IPv6 ב- / etc / hosts. תצטרך גם כאן sudo.

# :: 1 ip6-localhost ip6-loopback # fe00 :: 0 ip6-localnet # ff00 :: 0 ip6-mcastprefix # ff02 :: 1 ip6-allnodes # ff02 :: 2 ip6-allrouters

סוף סוף תוכלו לכתוב את כללי ה- IPv6 iptables. צור קובץ עבורם ב / tmp / ipv6.

* פילטר -כניסות -J דחייה -א קדימה -J דחייה-פלט -J דחיית ועדה

ראו, הם פשוטים. דחה את הכל.

ייבא ושמור ל- Iptables

אתה צריך לייבא כללים אלה כדי שהם יוכלו לעשות הכל. אז, זה הזמן לעשות זאת.

התחל על ידי ניקוי כל השאר שיש. אתה לא רוצה ששום חוקים ישנים יפרצו.

$ sudo iptables -F && sudo iptables -X

ייבא גם את כללי ה- IPv4 וגם את ה- IPv6 שלך.

$ sudo iptables-שחזור </ tmp / ipv4 $ sudo ip6tables-שחזור </ tmp / ipv6

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

$ sudo apt להתקין iptables-persistent

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

אם תבצע שינויים בהמשך, תוכל לעדכן גם את התצורות השמורות שלך.

שמור על שירות sudo netfilter-persistent

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

לחץ כאן: דף הבא

הכל אודות vpns: כיצד להגדיר vpn משלך באמצעות openvpn (חלק 3)