חומת אש בלינוקס ממלאת תפקיד חיוני באבטחת מערכת מחשב. הוא פועל כמחסום, שולט ומסנן את תעבורת הרשת כדי להגן על המערכת מפני גישה לא מורשית, התקפות ואיומים אחרים. ללא חומת אש שהוגדרה כהלכה, השרת עלול להיות פגיע לסוגים שונים של התקפות סייבר, מה שיוביל להשלכות חמורות על אבטחת המידע וחיסיון הנתונים.
במאמר זה, נבחן שני כלים עיקריים להגדרת חומת האש של לינוקס: חומת אש ו-iptables. אנו נערוך ניתוח השוואתי של התכונות, הפונקציונליות והיתרונות שלהם. בנוסף, נספק הנחיות מפורטות להגדרה ושימוש בכל אחד מהכלים הללו, וכן נדון בשיטות עבודה מומלצות לאבטחת המערכת שלך באמצעות חומת אש בפלטפורמת לינוקס. כל הפעולות יודגמו על א שרת וירטואלי עם גישה לשורש.
הגדרת חומת אש בלינוקס
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
איפה שם הוא שם השירות. לדוגמה, כדי לאפשר תעבורה עבור 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
איפה לשלוט הוא סוג הכלל (למשל, יציאה, שירות, חוק עשיר וכו'), ו כלל_מפרט הוא המפרט של הכלל עצמו.
לאחר ביצוע שינויים בתצורת חומת האש, יש צורך לשמור ולהחיל אותם. כדי לשמור שינויים, השתמש בפקודה:
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-שמור ו iptables-restore כלי עזר יכולים לעזור בזה. כדי לשמור את הכללים, הזן את הפקודה:
iptables-save > /etc/iptables/rules.v4
זה שומר את כללי iptables הנוכחיים בקובץ rules.v4. כדי לשחזר לאחר אתחול מחדש, הזן:
iptables-restore < /etc/iptables/rules.v4
פקודה זו משחזרת את הכללים מהקובץ rules.v4.
סיכום
הגדרת חומת אש בלינוקס באמצעות חומת אש או iptables היא היבט חשוב בהבטחת אבטחת השרת. שני הכלים מציעים אמצעים אמינים לניהול תעבורת רשת והגנה על המערכת מפני גישה בלתי מורשית ומתקפות סייבר. הבחירה בין חומת אש לבין iptables תלויה בצרכים וההעדפות הספציפיות של המשתמש, בהתחשב בפונקציונליות ובחוזקות השונות שלהם.