לדלג לתוכן

הרצאה מקיפה על iptables

מבוא

הכלי iptables הוא כלי לבקרת תעבורת רשת במערכות Linux. הוא משמש ליצירת חוקים שמגדירים כיצד להתמודד עם packets רשת נכנסות, יוצאות ועוברות דרך המערכת. iptables עובד עם ה-Kernel (הגרעין של מערכת ההפעלה) של לינוקס ומשתמש במנגנון ה-NETFILTER כדי לסנן packets ולבצע פעולות שונות כמו חסימה, routing, הפניית פורטים והגבלת חיבורים.


מבנה כללי של iptables

שרשראות (Chains)

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

  1. INPUT – מטפלת בpackets נכנסות למחשב.
  2. OUTPUT – מטפלת בpackets שיוצאות מהמחשב.
  3. FORWARD – מטפלת בpackets שעוברות דרך המחשב (למשל, כאשר המחשב משמש כנתב).

טבלאות (Tables)

הכלי iptables מחולק למספר טבלאות, וכל טבלה מכילה מספר שרשראות:

שם הטבלה שימוש
filter טבלת ברירת המחדל לסינון תעבורה. מכילה את השרשראות INPUT, FORWARD, OUTPUT.
nat משמשת ל-Network Address Translation (NAT), כמו הפניית פורטים (Port Forwarding).
mangle שינוי שדות בpackets כמו TTL, QoS ועוד.
raw מאפשר לעקוף מעקב חיבורים (Connection Tracking).

פקודות בסיסיות

בדיקת החוקים הקיימים

iptables -L -v -n
  • -L – מציג את החוקים.
  • -v – מפרט מידע נוסף כמו מספר packets ובייטים.
  • -n – מציג כתובות ומספרי פורטים ללא המרת DNS.

איפוס כל החוקים

iptables -F
iptables -X
iptables -Z
  • -F – מוחק את כל החוקים בשרשראות.
  • -X – מוחק שרשראות מותאמות אישית.
  • -Z – מאפס מונים (counters) של חוקים.

קביעת מדיניות ברירת מחדל

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
  • -P מגדיר מדיניות כללית (DROP = חסימה, ACCEPT = אישור).
  • חוסם packets נכנסות וpackets שעוברות דרך המחשב, אך מאפשר packets יוצאות.

חוקי סינון (Filtering)

חסימת כתובת IP מסוימת

iptables -A INPUT -s 192.168.1.100 -j DROP
  • -A INPUT – מוסיף חוק לשרשרת ה-INPUT.
  • -s 192.168.1.100 – מתייחס לpackets שמגיעות מהכתובת הזו.
  • -j DROP – מבצע חסימה (משליך את הpackets).

חסימת טווח כתובות (CIDR)

iptables -A INPUT -s 192.168.1.0/24 -j DROP
  • חוסם את כל הרשת 192.168.1.0/24.

חסימת תעבורה לפי פורט ספציפי

iptables -A INPUT -p tcp --dport 22 -j DROP
  • חוסם חיבורים ל-SSH (פורט 22).

חסימת חיבורים נכנסים ממדינה מסוימת

ניתן להשתמש ב-GeoIP חסימה:

iptables -A INPUT -m geoip --src-cc CN -j DROP
  • חוסם חיבורים מסין (CN).

חסימת Ping

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
  • חוסם ping נכנס.

חסימת חיבורים מרובים מאותו IP (הגנה מפני DoS)

iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j REJECT
  • מגביל מקסימום 10 חיבורים בו-זמנית לכל IP לשרת ה-Web (פורט 80).

חוקי NAT (Network Address Translation)

הפניית פורטים (Port Forwarding)

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
  • כל חיבור נכנס לפורט 8080 יופנה לכתובת 192.168.1.10:80.

שימוש במחשב כנתב (Enable IP Forwarding)

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • מאפשר NAT ומאפשר למחשב לנתב תעבורה בין רשתות.

חוקי Mangle (שינוי packets)

הורדת TTL לpackets יוצאות

iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64
  • משנה את ערך TTL ל-64 (מונע routing נוסף).

הגנה מתקדמת (Hardening)

מניעת SYN Flood (התקפת DoS)

iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
  • מגביל חיבורים חדשים ל-1 בשנייה.

חסימת Port Scanning

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
  • חוסם packets עם דגלים חריגים (ניסיון סריקה).

שימוש בשרשראות מותאמות אישית

יצירת שרשרת חדשה לניהול חיבורים

iptables -N MYCHAIN
iptables -A MYCHAIN -s 192.168.1.100 -j DROP
iptables -A INPUT -j MYCHAIN
  • יוצר שרשרת MYCHAIN ומנתב packets דרכה.

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

שמירת חוקים

iptables-save > /etc/iptables.rules

שחזור חוקים

iptables-restore < /etc/iptables.rules