חומת אש בלינוקס ממלאת תפקיד חיוני באבטחת מערכת מחשב. הוא פועל כמחסום, שולט ומסנן את תעבורת הרשת כדי להגן על המערכת מפני גישה לא מורשית, התקפות ואיומים אחרים. ללא חומת אש שהוגדרה כהלכה, השרת עלול להיות פגיע לסוגים שונים של התקפות סייבר, מה שיוביל להשלכות חמורות על אבטחת המידע וחיסיון הנתונים.
במאמר זה, נבחן שני כלים עיקריים להגדרת חומת האש של לינוקס: firewalld ו-iptables. נבצע ניתוח השוואתי של התכונות, הפונקציונליות והיתרונות שלהם. בנוסף, נספק הוראות מפורטות להגדרה ושימוש בכל אחד מהכלים הללו, וכן נדון בשיטות עבודה מומלצות לאבטחת המערכת שלכם באמצעות חומת אש בפלטפורמת לינוקס. כל הפעולות יודגמו בשרת וירטואלי עם גישת root.
הגדרת חומת אש בלינוקס
Firewalld (Firewall Daemon) היא תוכנה לניהול חומת האש במערכות הפעלה לינוקס. היא מספקת ממשק משתמש להגדרת כללי חומת אש, התרה או חסימה של חיבורים של יישומי רשת. היא מותקנת מראש כברירת מחדל ברוב הפצות השרתים. אם Firewalld אינה מותקנת מראש, ניתן להתקין אותה באופן עצמאי ממאגרים הרשמיים של ההפצה.
עבור מערכות Red Hat (כגון RHEL, CentOS, Fedora) ההתקנה מתבצעת עם הפקודה:
yum install firewalld
עבור דביאן/אובונטו:
apt-get install firewalld
לאחר ההתקנה, ניתן להפעיל ולהפעיל אותו מיד עם הפקודה:
systemctl start firewalld
לאחר מכן, עליך להוסיף את השירות להפעלה:
systemctl enable firewalld
בשלב זה, אנו ממליצים להשבית את ufw, שכן השימוש בו-זמני בכלי זה עם חומת אש או iptables אינו מומלץ. בדוק את המצב:
systemctl status ufw
כדי לעצור את זה, הזן את הפקודה:
systemctl stop ufw
לביטול מלא:
ufw disable
לאחר פעולות אלה, תוכל להמשיך להגדיר חומת אש.
ראשית, יש צורך להגדיר אזורי אמון. Firewalld משתמש בקונספט של אזורים כדי לקבוע את רמת האמון עבור ממשקי רשת. לכל ממשק מוקצה אזור אחד, וכללי חומת אש מוחלים על סמך האזור. הרשימה של כל האזורים הזמינים נפתחת בפקודה:
firewall-cmd --get-zones
בדרך כלל, 4 אזורים עיקריים משמשים:
- הציבור: אזור זה מיועד לרשתות שאתה מחשיב כלא בטוחות;
- פְּרָטִי: חל על רשתות ביתיות או חיבורי רשת מהימנים אחרים;
- פנימי: משמש עבור רשתות פנימיות, כגון אלה בתוך ארגון או רשת ארגונית;
- DMZ: אזור זה הוא המקום בו ממוקמים בדרך כלל שרתים שאמורים להיות נגישים מהאינטרנט.
עם זאת, זו רק דוגמה אחת. אתה יכול להוסיף אזור משלך באמצעות הפקודה:
firewall-cmd --permanent --new-zone=nameyourzone
לאחר ההוספה, נדרשת טעינה מחדש:
firewall-cmd --reload
כדי למחוק אזור, נעשה שימוש בשיטה דומה
firewall-cmd --permanent --delete-zone=nameyourzone
לאחר הגדרת אזורים, יש צורך לאפשר תעבורה עבור השירותים והיציאות הדרושים. כדי לאפשר שירות מסוים, השתמש בפקודה:
firewall-cmd --zone=public --add-service=name
כאשר name הוא שם השירות. לדוגמה, כדי לאפשר תעבורה עבור Apache:
firewall-cmd --zone=public --add-service=http
כדי להגדיר יציאות מותרות, השתמש בפקודה:
firewall-cmd --zone=public --add-port=number/protocol
לדוגמה, יציאת 22 הסטנדרטית עבור SSH תיראה כך:
firewall-cmd --zone=public --add-port=22/tcp
בשלב זה, הכללים העיקריים כבר נוצרו. לאחר מכן, קבעו כיצד תעובד התעבורה בהתאם למקור, ליעד, ליציאה ולקריטריונים אחרים. כדי להוסיף כלל (תוך שימוש באזור הציבורי כדוגמה):
firewall-cmd --zone=public rule
לדוגמה, כדי לאפשר תעבורה נכנסת מכל מקור ליציאה 80 (HTTP):
firewall-cmd --zone=public --add-port=80/tcp --permanent
כדי להסיר כלל:
firewall-cmd --permanent --remove-rule=rule_specification
כאשר rule הוא סוג הכלל (למשל, port, service, rich-rule וכו'), ו- rule_specification הוא המפרט של הכלל עצמו.
לאחר ביצוע שינויים בתצורת חומת האש, יש צורך לשמור ולהחיל אותם. כדי לשמור שינויים, השתמש בפקודה:
firewall-cmd --runtime-to-permanent
כדי להחיל שינויים:
firewall-cmd --reload
עם השלמת ההגדרה, תוכל לאמת את הפרמטרים שנבחרו על ידי פתיחת רשימת כל הכללים:
firewall-cmd --list-all
אם מתעוררות בעיות כלשהן, בדוק את יומני חומת האש עם הפקודה:
journalctl -u firewalld
הערה: כיסינו רק את האלגוריתם הכללי להגדרת החיבור. לכלי פונקציונליות נרחבת. למידע מלא על כל האפשרויות הזמינות, ניתן להשתמש בתיעוד הרשמי או לפתוח עזרה:
firewall-cmd --help
הגדרת iptables בלינוקס
שלא כמו Firewalld, iptables הוא כלי ישן יותר אך עדיין בשימוש נרחב בלינוקס לניהול חומת האש. הוא מספק גישה ישירה וגמישה יותר לכללי סינון מנות ברמת ליבת לינוקס. עם זאת, iptables דורש ידע וניסיון מתקדמים יותר בהשוואה ל-Firewalld, מה שהופך אותו לפחות נגיש למתחילים. בדוק את הגרסה המותקנת מראש של הכלי עם הפקודה:
iptables -V
אם הכלי אינו מותקן, יהיה צורך להתקין אותו. הפקודה להתקנה באובונטו, דביאן:
apt install iptables
עבור מערכות Red Hat (למשל, CentOS, Fedora):
yum install iptables
הפקודה להפעלה לאחר ההתקנה:
systemctl start iptables
כדי להוסיף להפעלה, בצע:
systemctl enable iptables
לפני שמתחילים בתצורת iptables, חשוב להבין איך זה עובד. זה עוזר על ידי התחביר של התוכנית. זה נראה כך:
iptables -t table action chain additional_parameters
בואו נעמיק בכל פריט.
ל-Iptables יש ארבע טבלאות עיקריות: filter, nat, mangle ו-raw . כל אחת מהן מיועדת לעיבוד סוגים מסוימים של חבילות ויש לה שרשרת כללים משלה:
- לסנן: זוהי הטבלה הנפוצה ביותר, המכילה כללי סינון מנות. הוא משמש לקבלת החלטות אם לאפשר או לדחות מנות.
- נת: טבלה זו משמשת לשינוי כתובות רשת ויציאות במנות. הוא משמש לעתים קרובות להגדרת מסיכות (NAT).
- מִגהָצָה: בטבלה זו, אתה יכול לשנות כותרות מנות. הוא משמש לפעולות מנות מיוחדות, כגון סימון.
- חי: טבלה זו משמשת להגדרת כללים החלים לפני שהם עוברים דרך מערכת מעקב החיבורים. הוא משמש בדרך כלל להגדרת כללים שאסור לשנות על ידי מערכת המעקב, כגון שחרור מנות מכתובות מסוימות.
כל שולחן מכיל סט של שרשראות. שרשראות הן רצף של כללים שנבדקים ברצף. ישנן שלוש שרשראות מוגדרות מראש:
- קלט (נכנס). הכללים בשרשרת זו קובעים מה לעשות עם מנות נכנסות.
- פלט (יוצא). שרשרת זו חלה על כל החבילות שהמחשב שלך שולח להתקנים אחרים או מחשבים ברשת.
- FORWARD (העברה). הכללים בשרשרת זו מציינים מה לעשות עם מנות המועברות.
לבסוף, לכל שרשרת יש איזושהי פעולה (מטרה). בפועל, נעשה שימוש ב-5 פעולות עיקריות:
- מסכים: אפשר לחבילה לעבור דרך חומת האש.
- DROP: דחה את החבילה והשליך אותה ללא כל תגובה.
- דחה: דחה את החבילה ושלח לשולח הודעת שגיאה ICMP.
- LOG: רישום את החבילה ביומן המערכת ובצע פעולה נוספת (למשל, קבל או DROP).
- לַחֲזוֹר: הפסק לבדוק את הכללים בשרשרת הנוכחית וחזור לשרשרת השיחות (אם רלוונטי).
כדי להתחיל את ההגדרה, פתח את רשימת הכללים הקיימים עם הפקודה:
iptables -L
כמדריך להגדרת Iptables, בואו נסתכל על דוגמאות מעשיות של הפקודות הנפוצות ביותר. מטעמי נוחות נחלק את הדוגמאות ל-3 קבוצות, בהתאם לשרשרת הספציפית.
קלט שרשרת :
- אפשר תעבורה נכנסת באמצעות פרוטוקול TCP ביציאה 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. אפשר תעבורה נכנסת באמצעות פרוטוקול UDP ביציאה 22:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. חסום תנועה נכנסת מכתובת IP ספציפית:
iptables -A INPUT -s 192.168.1.100 -j DROP
פלט שרשרת :
- אפשר תעבורה יוצאת באמצעות פרוטוקול TCP ביציאה 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. אפשר תעבורה יוצאת באמצעות פרוטוקול UDP ביציאה 80:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. חסום תעבורה יוצאת ליציאה ספציפית (לדוגמה, 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
שרשרת קדימה :
- חסום תעבורה מועברת מטווח ספציפי של כתובות IP:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. חסום העברת מנות מממשק רשת ספציפי:
iptables -A FORWARD -i eth1 -j DROP
3. הגבל את מספר החיבורים בו-זמנית עבור יציאה ספציפית (בדוגמה זו, 10 חיבורים לדקה ביציאה 80):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
כפי שאתה יכול לראות, בכל מקרה נפרד, נעשה שימוש בארגומנט נוסף (פקודה). כדי לקבל רשימה מלאה של ארגומנטים אפשריים ותמיכה כוללת בפונקציונליות של הכלי, הזן:
iptables -h
כדי לוודא שההגדרות נכונות, הזן שוב את הפקודה כדי להציג את רשימת הכללים:
iptables -L
כדי למחוק כלל ספציפי, השתמש בפקודה:
iptables -D chain rule_number
לדוגמה, אם ברצונך למחוק כלל מספר 1 משרשרת INPUT, הפקודה תיראה כך:
iptables -D INPUT 1
כדי למחוק את כל הכללים בפקודה אחת:
iptables -F
הערה חשובה : כללי iptables אינם נשמרים אוטומטית לאחר אתחול המערכת או השירות. כדי לשמור את הכללים, יש להוסיף אותם לקובץ תצורה ולשחזר אותם לאחר אתחול מחדש. כלי השירות iptables-save ו- iptables-restore יכולים לעזור בכך. כדי לשמור את הכללים, הזינו את הפקודה:
iptables-save > /etc/iptables/rules.v4
זה שומר את כללי iptables הנוכחיים בקובץ rules.v4. כדי לשחזר לאחר אתחול מחדש, הזן:
iptables-restore < /etc/iptables/rules.v4
פקודה זו משחזרת את הכללים מהקובץ rules.v4.
סיכום
הגדרת חומת אש בלינוקס באמצעות חומת אש או iptables היא היבט חשוב בהבטחת אבטחת השרת. שני הכלים מציעים אמצעים אמינים לניהול תעבורת רשת והגנה על המערכת מפני גישה בלתי מורשית ומתקפות סייבר. הבחירה בין חומת אש לבין iptables תלויה בצרכים וההעדפות הספציפיות של המשתמש, בהתחשב בפונקציונליות ובחוזקות השונות שלהם.