זה 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.
מצא את השורה למטה ובטל את הסימון שלה על ידי הסרת ה- #.
עצור את כל חיבורי ה- 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
זה לקח זמן, אך חומת האש שלך מוכנה לצאת לדרך. בעמוד הבא נתמודד עם יצירת מפתחות ההצפנה הדרושים.
לחץ כאן: דף הבא
