הקדמה
A firewall is a system that provides network security by filtering incoming and outgoing network traffic based on a set of user-defined rules. In general, the purpose of a firewall is to reduce or eliminate the occurrence of unwanted network communications while allowing all legitimate communication to flow freely. In most server infrastructures, firewalls provide an essential layer of security that, combined with other measures, prevent attackers from accessing your servers in malicious ways.
מדריך זה יתייחס לפעולת הגדרות אש, עם דגש על אש בתוכנה מקובלת, כמו iptables ו־FirewallD, בהקשר של שרתי ענן. נתחיל עם הסבר קצר על חבילות TCP ועל סוגי האש השונים. לאחר מכן נדון במגוון נושאים הרלוונטיים לאש מקובלת. לבסוף, נספק קישורים למדריכים אחרים שיסייעו לך להגדיר אש בשרת שלך באופן עצמאי.
חבילות רשת TCP
לפני שנדון בסוגי האש השונים, נסתכל מהרה על איך נראה תעבורת רשת של פרוטוקול בקרת תעבורה (TCP).
תעבורת רשת TCP נעה ברשת באמצעות חבילות, שהן תפקידיהן מכילות כותרת חבילה – הכוללת מידע בקרתי כמו כתובות מקור ויעד, ומידע רצף חבילות – והנתונים (שכן נקרא גם תוכן). בזמן שהמידע הבקרתי בכל חבילה עוזר לוודא שהנתונים הקשורים אליה מועברים בצורה תקינה, הרכיבים שבו גם מספקים לאש מגוון דרכים להתאמת חבילות עם כללי אש.
חשוב לציין כי לקבלת חבילות TCP נכנסות בהצלחה דורשת מהנמען לשלוח חבילות אישור חוזרות לשולח. השילוב של המידע הבקרתי בחבילות הנכנסות והיצואות יכול לשמש לקביעת מצב החיבור (למשל, חדש, מוצלח, קשור) בין השולח והמקבל.
סוגים של חומות אש
בואו נדבר במהירות על שלושת סוגי החומות הבסיסיים של רשת: סינון חבילות (ללא מצב), מצבי, ושכבת היישום.
חומות אש לסינון חבילות, או ללא מצב, פועלות על ידי בדיקת חבילות יחידות בבדידות. לכן, הן לא מודעות למצב החיבור ויכולות רק לאפשר או לדחות חבילות על סמך כותרות חבילות יחידות.
חומות אש מצביות מסוגלות לקבוע את מצב החיבור של חבילות, מה שהופך אותן לגמישות יותר מחומות אש ללא מצב. הן פועלות על ידי איסוף חבילות קשורות עד שמצב החיבור יכול להיות קבוע לפני שהולכות בכלל כללי חומה על תעבורה.
חומות אש שכבתיות עוברות שלב נוסף על ידי ניתוח המידע שמועבר, מה שמאפשר לתעבורת הרשת להתאים לכללי חומה שספציפיים לשירותים או יישומים ספציפיים. אלו נקראות גם חומות אש מבוססות פרוקסי.
בנוסף לתוכנת הגנה בגדר כללית, שזמינה בכל מערכות ההפעלה המודרניות, ניתן גם לקבל תכונות של גישה מתקיימת באמצעות מכשירי החומה החומיים, כגון ראוטרים או מכשירי חומה. שוב, הדיון שלנו יתמקד בתוכנות חומה מתקיימות הרצות על השרתים שהן מיועדות להגן עליהם.
כללי חומת האש
כפי שצוין לעיל, תעבורת הרשת שעוברת דרך חומת אש מתאימה נגד כללי כדי לקבוע האם יש לאפשר עבורה או לא. דרך פשוטה להסביר מה נראות כללי חומת האש היא להציג כמה דוגמאות, ולכן נעשה זאת עכשיו.
נניח שיש לך שרת עם רשימת כללי חומת אש המתייחסים לתעבורה נכנסת:
- אפשר תעבורה נכנסת חדשה וקיימת אל ממשק הרשת הציבורי בפורט 80 ו-443 (תעבורת אינטרנט HTTP ו-HTTPS)
- הורד תעבורה נכנסת מכתובות ה-IP של העובדים לא טכניים במשרד שלך לפורט 22 (SSH)
- אפשר תעבורה נכנסת חדשה וקיימת מטווח ה-IP של המשרד שלך אל ממשק הרשת הפרטית בפורט 22 (SSH)
שים לב שהמילה הראשונה בכל אחד מהדוגמאות האלה היא או "קבל", "דחה" או "הפל". זה מציין את הפעולה שהגדרת האשף צריך לבצע במקרה שבו תעבור תעבודת רשת מסוימת את החוק. קבל אומר לאפשר לתעבודה לעבור, דחה אומר לחסום את התעבודה אך להשיב עם שגיאת "לא נמצא", ו־הפל אומר לחסום את התעבודה ולא לשלוח תשובה. שאר החוקים מורכבים מתנאי שבכל חבילה מתאימה.
כפי שמתברר, תעבודת הרשת מתאימה לרשימת חוקי אשף ברצף, או שרשרת, מהראשון עד האחרון. באופן מפורט יותר, לאחר שחוק נמצא, הפעולה המתאימה מוחלת על תעבודת הרשת השייכת. בדוגמה שלנו, אם עובד בחשבונאות ניסה להקים חיבור SSH לשרת, הוא יודח בהתבסס על חוק 2, לפני שנבדק חוק 3. מנהל מערכת, מצד שני, יוקבל כי הוא יתאים רק לחוק 3.
מדיניות ברירת מחדל
נפוץ ששרשרת של חוקי אשף לא תכסה באופן מפורש כל תנאי אפשרי. מכאן, שרשראות אשף חייבות תמיד להכיל מדיניות ברירת מחדל מפורטת, שמורכבת רק מפעולה (קבל, דחה או הפל).
נניח שהמדיניות הברירת מחדל עבור השרשרת הדוגמא שלמעלה הוגדרה כ זרוק. אם כל מחשב מחוץ למשרד שלך ינסה להקים חיבור SSH לשרת, התעבורה תיזורק מכיוון שהיא לא מתאימה לתנאים של שום כלל.
אם המדיניות הברירת מחדל הייתה מוגדרת כ קבל, כל אחד, חוץ מעובדי הטכנולוגיה שלך, היה יכול להקים חיבור לכל שירות פתוח על השרת שלך. זה היה משל לכיבוש פשוט של חומת אש מפני שהיא רק מונעת חלק קטן מעובדי החברה שלך.
תעבורה נכנסת ויוצאת
כיוון שתעבורת הרשת, מנקודת מבטו של השרת, יכולה להיות כלאה או יוצאת, חומת אש מתחזקת סט נפרד של כללים לכל אחד מהמקרים. תעבורה שמקורה במקום אחר, כלאה, מטופלת בדרך שונה מתעבורה יוצאת שהשרת שולח. נפוץ להרשות לשרת רוב התעבורה היוצאת מכיוון שבדרך כלל, השרת מאמין בעצמו. עם זאת, סט הכללים היוצאים יכול לשמש כדי למנוע תקשורת לא רצויה במקרה של כיבוש של השרת על ידי תוקפ או קובץ נכנס.
כדי למקסם את יתרונות האבטחה של חומת אש, עליך לזהות את כל הדרכים שברצונך שמערכות אחרות יתקשרו עם השרת שלך, ליצור כללים שמאפשרים אותם באופן ספציפי, ולאזור את כל התעבורה האחרת. עליך לשים לב שהכללים היוצאים המתאימים חייבים להיות במקום כך ששרת יאפשר לעצמו לשלוח אישורים יוצאים לחיבורים נכנים שנכנסים. בנוסף, מאחר ושרת דרך כלל צריך לייצר את התעבורה היוצאת שלו מסיבות שונות – לדוגמה, הורדת עדכונים או התחברות למסד נתונים – חשוב לכלול את המקרים הללו בסט הכללים היוצאים שלך גם.
כתיבת כללים יוצאים
נניח שחומת האש בדוגמתנו מוגדרת לסנן תעבורה יוצאת כברירת מחדל. זה אומר שכללי הקבלה הנכנסים שלנו יהיו ללא שימוש ללא כללי היציאה התואמים.
כדי להשלים את כללי חומת האש הנכנסים בדוגמה (1 ו-3), מהמקטע של כללי חומת האש, ולאפשר תקשורת תקנית בכתובות ובפורטים האלה, אנו יכולים להשתמש בכללי חומת אש יוצאים אלה:
- לאשר תעבורת יוצא יוצרת לממשק הרשת הציבורית על פורט 80 ו-443 (HTTP ו-HTTPS)
- לאשר תעבורה יוצאת יוצרת לממשק הרשת הפרטית על פורט 22 (SSH)
שים לב שאין צורך לכתוב כלל באופן מפורש עבור תעבורה נכנסת שמתבטלת (כלל נכנס 2), מכיוון שהשרת אינו צריך להקים או לאשר את החיבור הזה.
תוכנות וכלים לגיהוץ אש
עכשיו שעברנו על איך גיהוץ אש פועל, בואו נסתכל על חבילות תוכנה נפוצות שיכולות לעזור לנו להקים גיהוץ אש אפקטיבי. בעוד ישנן הרבה חבילות נוספות הקשורות לגיהוץ אש, אלו יעילים והם אלו שתפגשו ביותר.
Iptables
גיהוץ אש הוא גיהוץ אש סטנדרטי הכלול ברוב ההפצות של Linux כברירת מחדל (גרסה מודרנית נקראת nftables תתחיל לקחת את מקומו). זהו בעצם ממשק קדמי להתחברויות פסי הסינון של גיליון הלשוני של הקרנל שיכול לשנות את מגבלות הרשת של Linux. הוא פועל על ידי התאמה של כל חבילה שחוצה את ממשק הרשת נגד סט של כללים כדי להחליט מה לעשות.
כדי ללמוד כיצד להטמיע גיהוץ אש עם iptables, בדוק את הקישורים הללו:
- איך להגדיר גיהוץ אש באמצעות IPTables על Ubuntu 14.04
- כיצד ליישם תבנית סיסית של חומת אש עם Iptables על Ubuntu 14.04
- כיצד להגדיר חומת אש של Iptables כדי להגן על תעבורה בין השרתים שלך
UFW
UFW, שמקור השם שלה הוא Uncomplicated Firewall, היא ממשק ל Iptables שמיועד לפשט את התהליך של הגדרת חומת אש.
כדי ללמוד עוד על שימוש ב-UFW, יש לראות את המדריך הזה: כיצד להגדיר חומת אש עם UFW על שרת ענן Ubuntu ו-Debian.
FirewallD
FirewallD היא פתרון חומת אש מלאה הזמינה כבר בצורה ברירת מחדל על שרתי CentOS 7. תוך כדי, FirewallD משתמשת ב-Iptables להגדרת netfilter.
כדי ללמוד עוד על שימוש ב-FirewallD, יש לראות את המדריך הזה: כיצד להגדיר את FirewallD כדי להגן על שרת CentOS 7 שלך.
אם אתה מפעיל את CentOS 7 אך מעדיף להשתמש ב-iptables, עקוב אחר המדריך הזה: איך להעביר מ-FirewallD ל-Iptables על CentOS 7.
Fail2ban
Fail2ban הוא תוכנת מניעת התקפות שיכולה להגדיר באופן אוטומטי את הגדרות הגנת הגישה שלך כדי לחסום נסיונות כניסה כוח מעבר והתקפות DDOS.
כדי ללמוד עוד על Fail2ban, בדוק את הקישורים האלה:
- כיצד Fail2ban עובד כדי להגן על שירותים בשרת Linux
- איך להגן על SSH עם Fail2Ban ב-Ubuntu 14.04
- כיצד להגן על שרת Nginx עם Fail2Ban ב-Ubuntu 14.04
- כיצד להגן על שרת Apache עם Fail2Ban ב-Ubuntu 14.04
סיכום
עכשיו שאתה מבין כיצד גדרי אש פועלים, אתה צריך לחקור כיצד ליישם גדר אש שישפר את בטיחות השרת שלך על ידי השימוש בהדרכות למעלה.
אם ברצונך ללמוד עוד על איך גדרי אש פועלים, תבדוק את הקישורים האלה:
Source:
https://www.digitalocean.com/community/tutorials/what-is-a-firewall-and-how-does-it-work