לדלג לתוכן

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

מבוא

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


מבנה כללי של iptables

שרשראות (Chains)

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

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

טבלאות (Tables)

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

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

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

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

iptables -L -v -n
  • -L – מציג את החוקים.
  • -v – מפרט מידע נוסף כמו מספר חבילות ובייטים.
  • -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 = אישור).
  • חוסם חבילות נכנסות וחבילות שעוברות דרך המחשב, אך מאפשר חבילות יוצאות.

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

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

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

חסימת טווח כתובות (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 (שינוי חבילות)

הורדת TTL לחבילות יוצאות

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

הגנה מתקדמת (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
  • חוסם חבילות עם דגלים חריגים (ניסיון סריקה).

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

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

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

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

שמירת חוקים

iptables-save > /etc/iptables.rules

שחזור חוקים

iptables-restore < /etc/iptables.rules