מדריך Nftables

Mdryk Nftables



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

Nftables הוא רכיב של ליבת לינוקס המספק פונקציות חומת אש. זה ההחלפה של Iptables.







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



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



תחילת העבודה עם Nftables

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





ננו firewall.nft

הדוגמה במדריך זה די פשוטה ומציגה חומת אש מגבילה שבה כל תעבורת IPv4 נשמטת למעט loopback ויציאות ספציפיות.



בצילום המסך הקודם, השתמשתי בשורה הראשונה כדי להגדיר את הרשת המקומית שלי (192.168.0.0/16) בתור LinuxHintNet.

הגדר את LinuxHintNet = 192.168.0.0 / 16

בשורה השנייה, אני מגדיר קבוצת יציאות (80,443 ו-22). אני קורא לקבוצה הזו AllowPorts כי אני מתכנן לאפשר תעבורה דרכם. AllowPorts הוא שם שרירותי.

הגדר AllowPorts   = { 80 , 443 , 53 , 22 }

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

ה-IP לפני שם הטבלה מציין שכללי טבלת que יחולו רק על תעבורת IPv4. אתה יכול להשתמש ב-inet במקום IP כדי להחיל כללים על פרוטוקולי IPv4 ו-IPv6. או שאתה יכול להחליף את ה-IP ב-ip6 עבור IPv6 בלבד.

זכור, Restrictive הוא שם שהגדרתי באופן שרירותי. אתה יכול לתת שם לטבלה כרצונך.

במקרה שלי, אני מחיל כללים רק על IPv4, כפי שמוצג להלן.

להוסיף טבלה ip מַגְבִּיל

עבור שני הפרוטוקולים, השתמש בפרוטוקולים הבאים:

הוסף טבלה inet Restrictive

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

שרשרת הבסיס הבאה מורידה את כל התעבורה הנכנסת כברירת מחדל:

  • הוסף שרשרת ip Restrictive Incoming: סעיף זה מוסיף את שרשרת Incoming Restrictive שתחול על IPv4
  • סוג מסנן: זה מגדיר את סוג השרשרת כמסנן מכיוון שהוא יסנן תנועה. סוגי שרשרת אפשריים נוספים הם מסלול או NAT
  • קלט הוק: מתייחס למנות נכנסות
  • עדיפות 0: עדיפות שרשרת בסיס מגדירה סדר רשתות בסיס
  • מדיניות שחרור: מדיניות השחרור, כברירת מחדל, פוסלת את כל החבילות
הוסף שרשרת ip מגביל כניסה { סוּג עדיפות קלט של וו מסנן 0 ; ירידת מדיניות; }

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

לאחר שלושת שרשראות הבסיס, נוכל להמשיך עם חוקי ה-Nftables כדי לאפשר תעבורת loopback.

אני מוסיף את השורות הבאות לתנועה נכנסת ויוצאת בממשק הלולאהבק.

הוסף כלל ip מגביל נכנסות iifname lo counter accept

הוסף כלל ip מגביל נכנסת oifname lo counter accept

כעת, אני מוסיף ארבעה כללים המקבלים תעבורת TCP ו-UDP יוצאת ונכנסת דרך כל הפורטים הכלולים במשתנה $AllowPorts שהוגדר בתחילת הקובץ.

הוסף כלל ip מגביל tcp sport $AllowPorts נגד לקבל

הוסף כלל ip מגביל tcp dport יוצא $AllowPorts נגד לקבל

הוסף כלל ip מגביל ספורט UDP נכנסות $AllowPorts נגד לקבל

הוסף כלל ip מגביל יציאת udp dport $AllowPorts נגד לקבל

אתה יכול לראות את התסריט המלא למטה.

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

# בשתי השורות הראשונות, אני מגדיר את הרשת המקומית שלי (LinuxHintNet) וקבוצת יציאות (80,
#443,22)כדי לאפשר תעבורה דרכם בכללים למטה.
הגדר את LinuxHintNet = 192.168.0.0 / 16
הגדר AllowPorts   = { 80 , 443 , 53 , 22 }
#אני מכריז על טבלה חדשה שתכיל שרשראות וכללים. אני קורא לטבלה הזו 'מגביל'.
#ה-'ip' מחיל כללים על IPv4 בלבד. עבור IPv6, השתמש רק ב-'ip6' והשתמש ב-'inet' עבור שני הפרוטוקולים.
להוסיף טבלה ip מַגְבִּיל
# לאחר יצירת הטבלה, אני יוצר שלוש שרשראות, נכנסות, הפניה מחדש ויוצאת,
#שמותיהם שרירותיים. כולן מורידות תנועה נכנסת, יוצאת והעברה כברירת מחדל.
להוסיף שרשרת ip מגביל כניסה { סוּג עדיפות קלט של וו מסנן 0 ; ירידת מדיניות; }
להוסיף שרשרת ip הפניה מגבילה { סוּג עדיפות קדימה של וו מסנן 0 ; ירידת מדיניות; }
להוסיף שרשרת ip יציאה מגבילה { סוּג עדיפות פלט של וו מסנן 0 ; ירידת מדיניות; }
# אני מיישם שני כללים כדי לאפשר תעבורת לולאה חוזרת.
הוסף כלל ip מגביל נכנסות iifname lo counter accept
הוסף כלל ip מגביל נכנסת oifname lo counter accept
# אני מיישם כללים כדי לאפשר תעבורה דרך יציאות המוגדרות במשתנה AllowPorts.
הוסף כלל ip מגביל tcp sport $AllowPorts נגד לקבל
הוסף כלל ip מגביל tcp dport יוצא $AllowPorts נגד לקבל
הוסף כלל ip מגביל ספורט UDP נכנסות $AllowPorts נגד לקבל

הוסף כלל ip מגביל יציאת udp dport $AllowPorts נגד לקבל

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

סודו nft firewall.nft

אתה יכול לבדוק את הכללים שלך על ידי הפעלת הפקודה הבאה:

סודו ערכת חוקים של רשימת nft

זו חומת אש מגבילה בסיסית.

סיכום:

כפי שאתה יכול לראות, Nftables הוא הרבה יותר ידידותי מאשר Iptables, ומשתמשים יכולים ללמוד Nftables מהר יותר מאשר Iptables. מאז Iptables מופסק, והפצות רבות משתמשות ב-Nftables בתור חומת האש המוגדרת כברירת מחדל, כולל דביאן. משתמשים מנוסים של Iptables עשויים לרצות להסתכל על הכלי Iptables-nftables-compat, שמתרגם Iptables ל-Nftables. זה עשוי לעזור להם להבין את ההבדלים.

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