הקדמה
הגדרת חומת אש היא צעד חיוני לאבטחת כל מערכת הפעלה מודרנית. רוב ההפצות של Linux מגיעות עם מספר כלים שונים להגדרת חומת אש שניתן להשתמש בהם. במדריך זה, אנו נכסה את חומת האש iptables
.
Iptables הוא חומת אש סטנדרטית הכלולה ברוב ההפצות של Linux כברירת מחדל. זו ממשק שורת פקודה להתממשקות עם נתבי הגנה בלתי-גרמניים ברמת הליבה שיכולים לשנות את קניית הרשת ב-Linux. הוא פועל על ידי התאמת כל חבילה שחוצה את ממשק הרשת נגד סט של כללים כדי להחליט מה לעשות.
במדריך זה, תבחן כיצד Iptables פועל. לגישה יותר מעמיקה, תוכל לקרוא עיון מעמיק ב-Iptables ובארכיטקטורת Netfilter.
איך פעולת Iptables
首先,让我们回顾一些术语,并讨论 iptables 的工作原理。
חומת האש iptables פועלת על ידי השוואת תעבורת הרשת לעבר סט של כללים. הכללים מגדירים את המאפיינים שחבילת רשת צריכה להכיל כדי להתאים, ואת הפעולה שיש לבצע עבור חבילות שתואמות.
ישנם הרבה אפשרויות להקים איזה חבילות מתאימות לכלל מסוים. ניתן להתאים את סוג פרוטוקול החבילה, את כתובת המקור או היעד או היציאה או הכניסה שבה משתמשת החבילה, את היחס שלה לחבילות קודמות, וכו'
כאשר התבנית המוגדרת מתאימה, הפעולה שנעשית נקראת יעד. יעד יכול להיות החלטת מדיניות סופית עבור החבילה, כמו ACCEPT
או DROP
. ניתן גם להעביר את החבילה לשרשרת אחרת לעיבוד, או לשמור על המופע. ישנם הרבה אפשרויות.
החוקים האלה מאורגנים לקבוצות בשם שרשראות. שרשרת היא סט של חוקים שבהם מתבצעת בדיקת החבילה לפי סדר. כאשר החבילה מתאימה לאחד מהחוקים, היא מבצעת את הפעולה המשויכת ודולגת על שאר החוקים בשרשרת.
A user can create chains as needed. There are three chains defined by default. They are:
- כניסה: שרשרת זו מטפלת בכל החבילות שכתובתן מופנית אל השרת שלך.
- יציאה: שרשרת זו מכילה חוקים לתעבורה שנוצרה על ידי השרת שלך.
- קידום: שרשרת זו משמשת להתמודדות עם תעבורה המיועדת לשרתים אחרים שאינם נוצרים בשרת שלך. שרשרת זו היא אמצעי להגדיר את השרת שלך כך שיפנה בקשות למכונות אחרות.
כל שרשרת יכולה להכיל אפס או יותר חוקים, ויש לה מדיניות ברירת מחדל. המדיניות קובעת מה יקרה כאשר חבילה נפלת דרך כל החוקים בשרשרת ולא מתאימה לאף חוק. ניתן לזרוק את החבילה או לקבל אותה אם אין חוקים המתאימים.
iptables יכולה גם לעקוב אחר חיבורים. זה אומר שניתן ליצור כללים שמגדירים מה יקרה לחבילה בהתבסס על הקשר שלה לחבילות קודמות. היכולת היא "מעקב מצב", "מעקב חיבור" או קיבוע ה"מכונת מצב".
IPv4 נגד IPv6
חומת האש netfilter שכלולה בליבת ה-Linux משמרת תעבורת IPv4 ו-IPv6 בצורה מוחלטת. כלי ה-Iptables שמשמשים לניהול הטבלאות שמכילות את ערכי הכללים של הגידורים של האש, הם גם הבחנה. אם יש לך IPv6 מאופשר על השרת שלך, עליך להגדיר את שתי הטבלאות כדי לטפל בתעבורה על השרת שלך.
הערה: Nftables, יורשת של Iptables, משלבת את טיפול ב-IPv4 ו-IPv6 באופן יותר קרוב. פקודת iptables-translate ניתן להשתמש בה כדי להעביר כללי Iptables ל-Nftables.
הפקודה הרגילה של iptables
משמשת לניהול הטבלה המכילה את החוקים שמנהלים את תעבורת IPv4. לתעבורת IPv6 יש פקודה משנה הנקראת ip6tables
. כל חוק שתגדיר עם iptables
ישפיע רק על חבילות המשתמשות בכתובות IPv4, אך התחביר בין הפקודות דומה. הפקודה iptables
תיצור חוקים המתייחסים לתעבורת IPv4, והפקודה ip6tables
תיצור חוקים המתייחסים לתעבורת IPv6. אל תשכח להשתמש בכתובות IPv6 של השרת שלך כדי ליצור את חוקי ip6tables
.
דברים לשמור עליהם בזיכרון
עכשיו שאתה יודע איך iptables מובילה חבילות שעוברות דרכה – מכוונת את החבילה לשרשור המתאים, בודקת אותה נגד כל חוק עד שמוצאת התאמה, ומונה את המדיניות הברירת מחדל של השרשור אם לא נמצאה התאמה – תוכל להתחיל ליצור חוקים.
ראשית, עליך לוודא שיש לך חוקים לשמירה על חיבורים קיימים אם אתה מיישם מדיניות זריקת ברירת מחדל. זה חשוב במיוחד אם אתה מחובר לשרת שלך דרך SSH. אם בטעות אתה מיישם חוק או מדיניות שמפסיקה את החיבור הנוכחי שלך, ייתכן שתצטרך להתחבר לשרת שלך באמצעות קונסולת שחזור מבוססת דפדפן.
דבר נוסף שחשוב לזכור הוא שסדר החוקים בכל שרשור חשוב. חבילה לא יכולה להיתקל בחוק כללי יותר שהוא מתאים אם היא אמורה להתאים לחוק ספציפי.
אחרי זאת, החוקים שבקרבת צוואר של השרשרת צריכים להיות יותר ספציפיים מהחוקים בתחתית. עליך להתאים יחסית למקרים ספציפיים תחילה, ולאחר מכן לספק חוקים כלליים יותר להתאמה להתרחשויות נרחבות יותר. אם חבילת מידע יופלטת מכל השרשרת (אם היא לא מתאימה לאף חוק), היא תעקוב אחרי החוק הכללי ביותר, כלומר, המדיניות הברירת מחדל.
לכן, מדיניות ברירת מחדל של שרשרת תפקיד חשובה בהגדרת החוקים שיכללו בשרשרת. שרשרת שבה מדיניות ברירת המחדל היא ACCEPT
תכלול חוקים המורידים חבילות באופן מפורש. שרשרת שבה מדיניות ברירת המחדל היא DROP
תכיל יוצאים דופן לחבילות שצריך לקבל באופן ספציפי.
מסקנה
בנקודה זו, אתה מוכן ליישם גישה אישית לגניבת מידע שלך. לכך, כדאי לך לקרוא איך להגדיר חומת אש באמצעות Nftables על Ubuntu 22.04. או, לגישה מובנית יותר, איך להגדיר חומת אש עם UFW על Ubuntu 22.04. אם אתה מעדיף להפעיל את החומת שלך כשכבש שירות, אתה יכול לנסות גם את חומת הענן של DigitalOcean.
Source:
https://www.digitalocean.com/community/tutorials/how-the-iptables-firewall-works