![פרויקט מרכז הבקרה של אובונטו שואף להפוך את תצורת המערכת לפשוטה](/f/b00a959842e0779e5a362965ff7eda76.png?height=261&width=400?width=100&height=100)
ניהול תעבורת רשת היא אחת העבודות הקשות ביותר שמנהלי מערכת נאלצים להתמודד איתן. הוא חייב להגדיר את חומת האש באופן שיעמוד בדרישות המערכת והמשתמשים הן לחיבורים נכנסים והן יוצאים, מבלי להשאיר את המערכת חשופה להתקפות.
זה איפה iptables
שימושי. Iptables היא חומת אש של שורת הפקודה של Linux המאפשרת למנהלי מערכות לנהל תעבורה נכנסת ויוצאת באמצעות מערכת של כללי טבלה הניתנים להגדרה.
Iptables משתמש במערך טבלאות הכולל שרשראות המכילות מערך של כללים מובנים או מוגדרים על ידי המשתמש. בזכותם מנהל מערכת יכול לסנן כראוי את תעבורת הרשת של המערכת שלו.
לפי מדריך iptables, ישנם כיום 3 סוגי טבלאות:
לְסַנֵן
- זוהי טבלת ברירת המחדל, המכילה את השרשראות המובנות עבור: NAT
- טבלה שאליה מתייעצים כאשר חבילה מנסה ליצור חיבור חדש. יש לו את המובנה הבא: לְהַשְׁחִית
- טבלה זו משמשת לשינוי מנות. עד גרסת גרעין
2.4 לשולחן הזה היו שתי שרשראות בלבד, אך כעת הן 5: במאמר זה תראה כמה פקודות שימושיות שיעזרו לך לנהל את חומת האש של תיבת Linux באמצעות iptables. לצורך מאמר זה, אתחיל בפקודות פשוטות יותר ואעבור למורכב יותר עד הסוף.
ראשית, עליך לדעת כיצד לנהל את שירות iptables בהפצות לינוקס שונות. זה די קל:
ב- Cent/RHEL 7 וב- Fedora 22+ # systemctl התחל iptables. # systemctl stop iptables. # systemctl הפעלה מחדש של iptables.
ב- Cent/RHEL 6/5 וב- Fedora # /etc/init.d/iptables start # /etc/init.d/iptables stop. # /etc/init.d/iptables הפעלה מחדש.
אם ברצונך לבדוק את הכללים הקיימים שלך, השתמש בפקודה הבאה:
# iptables -L -n -v.
זה אמור להחזיר פלט הדומה לזה שלהלן:
כניסת שרשרת (מדיניות ACCEPT 1129K מנות, 415M בתים) pkts בתים יעד הגנה על ביטול הסכמה ליעד מקור 0 0 ACCEPT tcp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 53 0 0 ACCEPT udp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 53 0 0 ACCEPT tcp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 67 0 0 ACCEPT udp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 67
שרשרת קדימה (מדיניות ACCEPT 0 מנות, 0 בתים) pkts בתים יעד הגנה ביטול הסכמה ליעד מקור 0 0 ACCEPT all - * lxcbr0 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all - lxcbr0 * 0.0.0.0/ 0 0.0.0.0/0
OUTPUT שרשרת (מדיניות ACCEPT 354K מנות, 185M בתים) pkts בתים יעד הגנה לבטל את הסכמת יעד המקור
אם אתה מעדיף לבדוק את כללי הטבלה הספציפית, תוכל להשתמש ב -ט
האפשרות ואחריה הטבלה שברצונך לבדוק. לדוגמה, כדי לבדוק את הכללים ב- NAT
שולחן, אתה יכול להשתמש ב:
# iptables -t nat -L -v -n.
אם אתה מוצא פעילות יוצאת דופן או פוגענית מכתובת IP, תוכל לחסום את כתובת ה- IP הזו באמצעות הכלל הבא:
# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP.
היכן שאתה צריך לשנות "xxx.xxx.xxx.xxx"
עם כתובת ה- IP בפועל. היזהר מאוד בעת הפעלת פקודה זו מכיוון שאתה יכול לחסום בטעות כתובת IP משלך. ה -א
option מצרף את הכלל בסוף השרשרת שנבחרה.
למקרה שאתה רק רוצה לחסום TCP תעבורה מכתובת ה- IP הזו, תוכל להשתמש ב -p
אפשרות המציינת את הפרוטוקול. כך הפקודה תיראה כך:
# iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP.
אם החלטת שכבר אינך רוצה לחסום בקשות מכתובת IP ספציפית, תוכל למחוק את כלל החסימה באמצעות הפקודה הבאה:
# iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP.
ה -D
option מוחק חוק אחד או יותר מהשרשרת שנבחרה. אם אתה מעדיף להשתמש באפשרות הארוכה יותר תוכל להשתמש --לִמְחוֹק
.
לפעמים ייתכן שתרצה לחסום חיבורים נכנסים או יוצאים ביציאה ספציפית. זהו אמצעי אבטחה טוב וכדאי שתחשוב בעניין זה בעת הגדרת חומת האש שלך.
כדי לחסום חיבורים יוצאים ביציאה ספציפית:
# iptables -A OUTPUT -p tcp --dport xxx -j DROP.
כדי לאפשר חיבורים נכנסים השתמש:
# iptables -A INPUT -p tcp --dport xxx -j ACCEPT.
בשתי הדוגמאות משתנה "xxx"
עם הנמל בפועל שאתה רוצה לאפשר. אם אתה רוצה לחסום UDP תנועה במקום TCP, פשוט לשנות "tcp"
עם "udp"
כלל iptables לעיל.
אתה יכול לאפשר מספר יציאות בבת אחת, באמצעות רב -פורט, להלן תוכל למצוא כלל כזה לחיבורים נכנסים ויוצאים:
# iptables -A INPUT -p tcp -m multiport --ports 22,80,443 -j ACCEPT. # iptables -A OUTPUT -p tcp -m multiport -ספורט 22,80,443 -j ACCEPT.
ייתכן שתרצה להגביל חיבורים מסוימים ביציאה ספציפית לרשת נתונה. נניח שאתה רוצה לאפשר חיבורים יוצאים ביציאה 22
לרשת 192.168.100.0/24
.
אתה יכול לעשות זאת באמצעות פקודה זו:
# iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT.
חלק מהמעסיקים אוהבים לחסום את הגישה אליהם פייסבוק לעובדים שלהם. להלן דוגמה כיצד לחסום תנועה לפייסבוק.
הערה: אם אתה מנהל מערכת ואתה צריך ליישם כללים אלה, זכור כי עמיתיך עלולים להפסיק לדבר איתך :)
תחילה מצא את כתובות ה- IP בהן משתמשת פייסבוק:
# מארח facebook.com facebook.com יש כתובת 66.220.156.68.
# whois 66.220.156.68 | grep CIDR. CIDR: 66.220.144.0/20.
לאחר מכן תוכל לחסום את רשת הפייסבוק הזו באמצעות:
# iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP.
זכור שטווח כתובות ה- IP בו משתמשת פייסבוק עשוי להשתנות במדינה שלך.
לפעמים ייתכן שתרצה להעביר את התעבורה של שירות אחד לנמל אחר. אתה יכול להשיג זאת באמצעות הפקודה הבאה:
# iptables -t nat -A PREROUTING -i eth0 -p tcp -port 25 -j REDIRECT -to -port 2525.
הפקודה לעיל מעבירה את כל התעבורה הנכנסת בממשק הרשת eth0
, מהנמל 25
לנמל 2525
. אתה יכול לשנות את היציאות עם אלה שאתה צריך.
לפעמים כתובות IP עשויות לבקש יותר מדי חיבורים ליציאות אינטרנט באתר שלך. זה יכול לגרום למספר בעיות וכדי למנוע בעיות כאלה, תוכל להשתמש בכלל הבא:
# iptables -A INPUT -p tcp -limit 80 -m limit -limit 100/minute -limit -burst 200 -j ACCEPT.
הפקודה לעיל מגבילה את החיבורים הנכנסים מדקה ל 100
ומגדיר פרץ גבול ל 200
. אתה יכול לערוך את המגבלה ולהגביל את פרץ הדרישות הספציפיות שלך.
חלק ממנהלי המערכת אוהבים לחסום בקשות פינג נכנסות בשל בעיות אבטחה. האיום אמנם אינו כה גדול, אך טוב לדעת כיצד לחסום בקשה כזו:
# iptables -A INPUT -p icmp -i eth0 -j DROP.
גישה לולאה חזרה (גישה מ 127.0.0.1
) חשוב ותמיד עליך להשאיר אותו פעיל:
# iptables -A INPUT -i lo -j ACCEPT. # iptables -A OUTPUT -o lo -j ACCEPT.
אם אתה רוצה לרשום את המנות שנפלו בממשק הרשת eth0
, תוכל להשתמש בפקודה הבאה:
# iptables -A INPUT -i eth0 -j LOG -קידומת log -log "מנות IPtables ירדו:"
אתה יכול לשנות את הערך לאחר "-log-prefix"
עם משהו על פי בחירתך. ההודעות מחוברות /var/log/messages
ותוכל לחפש אותם באמצעות:
# grep "IPtables ירד מנות:"/var/log/messages.
אתה יכול לחסום את הגישה למערכת שלך מכתובת MAC ספציפית באמצעות:
# iptables -A INPUT -m mac --mac -source 00: 00: 00: 00: 00: 00 -j DROP.
כמובן שתצטרך לשנות "00:00:00:00:00:00"
עם כתובת ה- MAC שברצונך לחסום.
אם אינך רוצה שיהיה לך יותר מדי חיבור במקביל מכתובת IP אחת ביציאה נתונה תוכל להשתמש בפקודה שלהלן:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit -above 3 -j REJECT.
הפקודה לעיל אינה מאפשרת יותר מ 3
חיבורים לכל לקוח. כמובן שאתה יכול לשנות את מספר היציאה כך שיתאים לשירות אחר. וגם ה -הגבלה מעל
צריך לשנות כך שיתאים לדרישה שלך.
לאחר שתגדיר את חוקי iptables שלך, תרצה לחפש מעת לעת וייתכן שתצטרך לשנות אותם. דרך קלה לחפש בתוך הכללים שלך היא להשתמש:
# iptables -L $ שולחן -v -n | grep $ מחרוזת.
בדוגמה לעיל, יהיה עליך לשנות שולחן $
עם הטבלה בפועל שבתוכה ברצונך לחפש ו מחרוזת $
עם המחרוזת האמיתית שאליה אתה מחפש.
הנה דוגמה:
# iptables -L INPUT -v -n | grep 192.168.0.100.
בעזרת iptables תוכל להגדיר שרשרת משלך ולאחסן בה כללים מותאמים אישית. כדי להגדיר שרשרת, השתמש ב:
# iptables -N מסנן מותאם אישית.
כעת תוכל לבדוק אם המסנן החדש שלך קיים:
# iptables -L.
שרשרת קלט (מדיניות ACCEPT) יעד יעד הגנה במקור אופטי.
שרשרת קדימה (קבלת מדיניות) יעד יעד הגנה במקור אופטי
OUTPUT שרשרת (מדיניות ACCEPT) יעד יעד הגנה במקור אופטי
שַׁרשֶׁרֶת מסנן מותאם אישית(0 הפניות) יעד יעד הגנה במקור אופטי
אם אתה רוצה לשטוף את שרשראות חומת האש שלך, אתה יכול להשתמש ב:
# iptables -F.
אתה יכול לשטוף שרשראות מהשולחן הספציפי באמצעות:
# iptables -t nat -F.
אתה יכול לשנות "נט"
עם הטבלה בפועל אילו שרשראות אתה רוצה לשטוף.
אם ברצונך לשמור את כללי חומת האש שלך, תוכל להשתמש ב iptables-save
פקודה. תוכל להשתמש בכלים הבאים כדי לשמור ולשמור את הכללים שלך בקובץ:
# iptables-save> ~/iptables.rules.
זה תלוי בך היכן תשמור את הקובץ וכיצד תקרא לו.
אם אתה רוצה לשחזר רשימה של כללי iptables, אתה יכול להשתמש iptables-שחזור
. הפקודה נראית כך:
# iptables-שחזורכמובן שהנתיב לקובץ החוקים שלך עשוי להיות שונה.
21. הגדרת כללי טבלאות IP לתאימות PCI
ייתכן שמנהלי מערכת מסוימים יידרשו להגדיר את שרתם כך שהם תואמים PCI. ישנן דרישות רבות של ספקי תאימות PCI שונים, אך מעטות מהן נפוצות.
ברבים מהמקרים תצטרך להיות יותר מכתובת IP אחת. יהיה עליך להחיל את הכללים שלהלן עבור כתובת ה- IP של האתר. היזהר במיוחד בעת השימוש בכללים להלן והשתמש בהם רק אם אתה בטוח מה אתה עושה:
# iptables -I INPUT -d SITE -p tcp -m multiport --ports 21,25,110,143,465,587,993,995 -j DROP.אם אתה משתמש ב- cPanel או בלוח בקרה דומה, ייתכן שיהיה עליך לחסום גם את יציאותיו. הנה דוגמה:
# iptables -I in_sg -d DEDI_IP -p tcp -m multiport --ports 2082,2083,2095,2096,2525,2086,2087 -j DROP.הערה: כדי לוודא שאתה עומד בדרישות של ספק PCI שלך, בדוק היטב את הדוח שלו והחיל את הכללים הנדרשים. במקרים מסוימים ייתכן שיהיה עליך לחסום תעבורת UDP גם ביציאות מסוימות.
22. אפשר חיבורים מבוססים וקשורים
מכיוון שתעבורת הרשת נפרדת בכניסות ויוצאות, תרצה לאפשר תעבורה נכנסת מבוססת וקשורה. עבור חיבורים נכנסים עשה זאת באמצעות:
# iptables -A INPUT -m conntrack --ctstate הוקם, קשור -j ACCEPT.לשימוש יוצא:
# iptables -A OUTPUT -m conntrack --ctstate הוקם -j ACCEPT.23. זרוק מנות לא חוקיות בטבלאות IP
ייתכן שמספר מנות רשת מסומנות כלא חוקיות. חלק מהאנשים עשויים להעדיף לרשום את החבילות האלה, אך אחרים מעדיפים להוריד אותם. כדי להוריד את החבילות לא חוקיות, תוכל להשתמש ב:
# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP24. חסום חיבור בממשק הרשת
למערכות מסוימות יש יותר מממשק רשת אחד. אתה יכול להגביל את הגישה לאותו ממשק רשת או לחסום חיבורים מכתובת IP מסוימת.
לדוגמה:
# iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP.שינוי "Xxx.xxx.xxx.xxx" עם כתובת ה- IP בפועל (או הרשת) שברצונך לחסום.
25. השבת הודעות יוצאות באמצעות IPTables
אם המערכת שלך לא אמורה לשלוח הודעות דוא"ל, תוכל לחסום יציאות יוצאות ביציאות SMTP. לדוגמה אתה יכול להשתמש בזה:
# iptables -A OUTPUT -p tcp -גירוש 25,465,587 -j דחה.סיכום
Iptables הוא חומת אש חזקה שתוכל להרוויח ממנה בקלות. חיוני לכל מנהל מערכת ללמוד לפחות את יסודות iptables. אם אתה רוצה למצוא מידע מפורט יותר על iptables והאפשרויות שלה, מומלץ מאוד לקרוא את המדריך שלו:
# איש iptables.אם אתה חושב שעלינו להוסיף פקודות נוספות לרשימה זו, אנא שתף אותן איתנו על ידי שליחתן בסעיף ההערות למטה.