סדרת RHCSA: יסודות צרכי האש ובקרת תעבורת הרשת באמצעות FirewallD ו־Iptables – חלק 11

במילים פשוטות, גדר אש היא מערכת אבטחה ששולטת בתנועת הנתונים הנכנסים והיוצאים ברשת על פי סט של כללים מוגדרים מראש (כגון יעד החבילה / מקורה או סוג התנועה, לדוגמה).

RHCSA: Control Network Traffic with FirewallD and Iptables – Part 11

במאמר זה נבחן את היסודות של firewalld, הדמון גדר אש דינמי ברירת המחדל ב-Red Hat Enterprise Linux 7, ואת שירות iptables, שירות גדר אש מורשתי עבור Linux, שבו רוב מנהלי המערכות והרשת מכירים היטב, והמופעל גם ב-RHEL 7.

A Comparison Between FirewallD and Iptables

תחת הקרקע, גם firewalld ושירות iptables משוחחים עם מסגרת ה-netfilter בליבה דרך אותו ממשק, לא במפתיע, פקודת ה-iptables. אך, להבדיל משירות ה-iptables, firewalld יכול לשנות את ההגדרות במהלך הפעולה הרגילה של המערכת ללא אובדן חיבורים קיימים.

Firewalld צריך להיות מותקן כברירת מחדל במערכת ה- RHEL שלך, אם כי יתכן שהוא לא פועל. ניתן לאמת זאת עם הפקודות הבאות (firewall-config היא כלי הגדרת ממשק המשתמש):

# yum info firewalld firewall-config
Check FirewallD Information

וגם,

# systemctl status -l firewalld.service
Check FirewallD Status

מצד שני, שירות ה-iptables לא כלול כברירת מחדל, אך ניתן להתקין אותו דרך.

# yum update && yum install iptables-services

שני הדמונים יכולים להתחיל ולהפעיל את עצמם להתחלה בעת האתחול עם פקודות ה-systemd הרגילות:

# systemctl start firewalld.service | iptables-service.service
# systemctl enable firewalld.service | iptables-service.service

קרא גם: פקודות שימושיות לניהול שירותי systemd

כגבי קבצי התצורה, שירות ה-iptables משתמש ב- /etc/sysconfig/iptables (שלא יתקיים אם החבילה לא מותקנת במערכת שלך). בתיבת RHEL 7 המשמשת כצומת אשכול, הקובץ הזה נראה כך:

Iptables Firewall Configuration

בעוד ש-firewalld שומרת את התצורה שלה בשני ספריות, /usr/lib/firewalld ו- /etc/firewalld:

# ls /usr/lib/firewalld /etc/firewalld
FirewallD Configuration

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

# man firewalld.conf
# man firewall-cmd
# man iptables

מלבד זאת, זכור לצפות ב- ביקורת פקודות חיוניות ותיעוד מערכת – חלק 1 של הסדרה הנוכחית, שבו תיארתי מספר מקורות שבהם תוכל לקבל מידע על החבילות שמותקנות במערכת ה- RHEL 7 שלך.

שימוש ב-Iptables לשליטה בתעבורת הרשת

אולי תרצה להתייחס להגדרת חומת Iptables – חלק 8 של סדרת מדריך מוסמך מכון לינוקס (LFCE) כדי לרענן את הזיכרון שלך על אינטרנלים iptables לפני שתמשיך הלאה. כך נוכל לקפוץ ישר לדוגמאות.

דוגמה 1: מאפשר תנועה אינגרירית ומוצא של תנועת אינטרנט

יציאות טלפון 80 ו443 הם היציאות הברירת מחדל המשמשות את שרת האינטרנט Apache לניהול תנועה אינטרנט רגילה (HTTP) ובטוחה (HTTPS). אפשר לאפשר תנועת אינטרנט נכנסת ויוצאת דרך שתי היציאות בממשק enp0s3 כדלקמן:

# iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
# iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
דוגמה 2: לחסום את כל (או חלק) החיבורים הנכנסים מרשת ספציפית

עשויים להיות פעמים בהן תצטרך לחסום את כל (או חלק) סוגי התעבורה המקוריים מרשת ספציפית, נניח 192.168.1.0/24 למשל:

# iptables -I INPUT -s 192.168.1.0/24 -j DROP

יזרוק את כל החבילות המגיעות מהרשת 192.168.1.0/24, ובניגוד לכך,

# iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

ירשום רק תנועה נכנסת דרך היציאה 22.

דוגמה 3: הפנייה של תנועה נכנסת למיקום אחר

אם אתה משתמש בתיבת RHEL 7 לא רק כגיה התוכנה, אלא גם כגיה המבוססת חומת אש אמיתית, כך שהיא נמצאת בין שתי רשתות שונות, יש להפעיל כבר הפניה של פריסת כתובות IP במערכת שלך. אם לא, עליך לערוך את /etc/sysctl.conf ולהגדיר את ערך של net.ipv4.ip_forward ל-1, כך:

net.ipv4.ip_forward = 1

ואז לשמור את השינוי, לסגור את עורך הטקסט ולהריץ את הפקודה הבאה כדי ליישם את השינוי:

# sysctl -p /etc/sysctl.conf

לדוגמה, ייתכן ויש לך מדפסת מותקנת בתיבה פנימית עם כתובת IP 192.168.0.10, עם שירות CUPS המאזין בפתחה 631 (בשני השרתים המדפסת ובחומת האש שלך). כדי להעביר בקשות הדפסה מלקוחות בצד השני של החומה, עליך להוסיף את הכלל הבא של iptables:

# iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

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

התחלה עם FirewalD

אחת השינויים שהוצגו עם firewalld הם אזורים. המושג הזה מאפשר להפריד רשתות לאזורים שונים בהתאם לרמת האמון שהמשתמש החליט לשים על המכשירים והתעבורה ברשת זו.

כדי לרשום את האזורים הפעילים:

# firewall-cmd --get-active-zones

בדוגמה למטה, ה-אזור הציבורי פעיל, והממשק enp0s3 הוקצה לו אוטומטית. כדי להציג את כל המידע על אזור מסוים:

# firewall-cmd --zone=public --list-all
List all FirewallD Zones

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

דוגמא 4: אישור שירותים דרך הגימה

כדי לקבל רשימת השירותים התומכים, יש להשתמש בפקודה הבאה:

# firewall-cmd --get-services
List All Supported Services

כדי לאפשר תעבורת רשת http ו-https דרך הגימה, באופן מיידי ובהפעלה אחריות:

# firewall-cmd --zone=MyZone --add-service=http
# firewall-cmd --zone=MyZone --permanent --add-service=http
# firewall-cmd --zone=MyZone --add-service=https
# firewall-cmd --zone=MyZone --permanent --add-service=https
# firewall-cmd --reload

אם לא נכתב --zone, אז נעשה שימוש באזור ברירת המחדל (ניתן לבדוק עם firewall-cmd –get-default-zone).

כדי להסיר את הכלל, יש להחליף את המילה add ב remove בפקודות האמורות לעיל.

דוגמא 5: הפנית IP / פורט

תחילה, עליכם לוודא אם המעטפת מופעלת עבור האזור הרצוי:

# firewall-cmd --zone=MyZone --query-masquerade

בתמונה למטה, אנו רואים ש-המעטפת מופעלת עבור האזור החיצוני, אך לא עבור הציבורי:

Check Masquerading Status

ניתן להפעיל את המעטפת עבור הציבורי:

# firewall-cmd --zone=public --add-masquerade

או להשתמש במעטפת ב-החיצוני. הנה מה שעלינו לעשות כדי לשכפל דוגמא 3 עם firewalld:

# firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

ואל תשכחו לטעון מחדש את הגימה.

ניתן למצוא דוגמאות נוספות ב-חלק 9 מסדרת ה-RHCSA, בו נבאר כיצד לאפשר או להשבית את היציאות שבדרך כלל משמשות על ידי שרת אינטרנט ושרת FTP, וכיצד לשנות את הכלל התואם כאשר נערכים שינויים ביציאה ברירת המחדל עבור שירותים אלו. בנוסף, ניתן להפנות לוויקי ה-firewalld לדוגמאות נוספות.

קרא גם: דוגמאות שימושיות של FirewallD להגדרת הגנת אש ב-RHEL 7

מסקנה

במאמר זה הוסבר מהו גימה, מהן השירותים הזמינים ליישומה ב-RHEL 7, וסופק מספר דוגמאות היכולות לעזור לך להתחיל עם המשימה הזו. אם יש לך הערות, הצעות או שאלות, אנא תגיב דרך הטופס למטה. תודה מראש!

Source:
https://www.tecmint.com/firewalld-vs-iptables-and-control-network-traffic-in-firewall/