אבטחת הרשת באמצעות Iptables - Proxy - NAT - IDS: PART 2

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

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

NAT והקשר של הדוגמה.

כאשר אנו מדברים על NAT, אנו יכולים לבלבל זאת עם ניתוב, מכיוון ששניהם אחראים על חיבור שתי רשתות שונות זו לזו. ההבדל האמיתי הוא שניתוב מוחל על מנת לעבור מרשת מקומית אחת לאחרת ורשת אחרת זו יכולה להתחבר לנתב ולצאת לאינטרנט.

ואילו כאשר אנו מדברים על NAT, אנו מדברים על ניתוב מנות מרשת מקומית או פרטית לרשת ציבורית או לאינטרנט. היא עושה זאת על ידי מיסוך החבילות על ידי הצבת ה- IP הציבורי איתו הוא עובר לאינטרנט. כלומר, איננו זקוקים לנתב מכיוון שה- IP הציבורי נמצא בבעלות ישירה של מחשב GNU / Linux.

נת

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

  • שהלינוקס שלנו נמצא בין הנתב של ספק השירות לרשת המקומית.

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

  • שללינוקס שלנו יש ממשק המחובר לרשת המקומית ודרך הממשק האחר הוא מקבל ישירות IP ציבורי שאיתו הוא מנווט.

המשמעות היא שעל לינוקס שלנו לעשות NAT כדי שהחבילות יוכלו להגיע לאינטרנט.

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

כדי לעשות NAT אנו משתמשים בתחביר

 iptables -t nat -A POSTROUTING -O eth1 -j MASQUERADE

איפה eth1 הוא הממשק שבו אנו מקבלים את ה- IP הציבורי, כלומר לאן אנו הולכים לאינטרנט.

MASQUERADE משמש כאשר ה- ip הוא ציבורי אך הוא יכול להשתנות לאורך זמן (דינמי). אחרת נוכל להשתמש ב- SNAT –to-source ip

יצירת סקריפט iptables

נניח אם כן: 172.26.0.0 היא הרשת המקומית שלנו ו- 81.2.3.4 היא ה- IP הציבורי שאיתו אנו עוברים לאינטרנט. (זה ip סטטי). יש לי את הממשקים eth0 (רשת מקומית)

eth1 (רשת ציבורית).

זה בעצם מורכב מיצירת סקריפט שניתן לקרוא לו מ /etc/init.d/firestop (למשל). ומתוך סקריפט זה אנו יכולים להתחיל, לעצור או לבדוק את מצב התצורה שלנו, כפי שאנו עושים עם כל שד מערכת.

נניח שכללי ה- IPTABLES שלי הם:

#! / bin / bash # חומת האש של הבית שלי. # שם קובץ / etc / firewall_on # מאת Jlcmux Twitter: @Jlcmux # # מדיניות בסיסית. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT כדי לשתף אינטרנט מ eth0 ל- eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT - למקור 81.2.3.4
# # אפשר חיבורים נכנסים שהתחילו ה- iptables שלי -מצב קדימה -מ -מדינה הוקמה, קשורים -j קבלה # # טבלאות תנועה יוצאות מורשות- A FORWARD -i eth0 -o eth1 -p tcp --port 80 -j חטיפות קבלה -A FORWARD -i eth0 -o eth1 -p tcp --port 443 -j קבלות טבליות -A FORWARD -i eth0 -o eth1 -p udp --port 53 -j קבל
אל לנו לשכוח לתת הרשאות ביצוע

הסבר:

התסריט בעצם מבצע את הפעולות הבאות:

  1. ראשית הגבל את כל הניווט, החיבורים והתנועה. (מדיניות בסיסית של חומת האש)
  2. ואז ליצור את ה- NAT עם היעד eth1. המציין שיש לנו ip ציבורי סטטי «81.2.3.4»
  3. זה פותח את היציאות הדרושות לקבלת חבילות החיבורים שיזמתי.
  4. מקבל תעבורת HTTP, HTTPS ויוצא DNS יוצאים.
הכללים מיועדים לתעבורת FORWARD מכיוון שאנו משתמשים בלינוקס שלנו כנתב, ולכן המדיניות משמשת לתעבורה שעוברת דרך לינוקס, כלומר היא משמשת כמתווך. משמעות הדבר היא כי הלינוקס שלנו לא באמת יכולה לנווט או לקבל נתונים באופן ישיר. זה חל רק על מחשבים המחוברים אליו, אך לא על עצמו

אם אנו רוצים להשתמש בציוד שלנו כדי לנווט עלינו לחזור על השורות ולהחליף קדימה ל- INPUT או OUTPUT לפי הצורך.

בטל סקריפט.

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

#! / bin / bash # חומת האש של הבית שלי. # שם קובץ / etc / firewall_off # מאת Jlcmux בטוויטר: @Jlcmux # # מחיקת כללי iptables -F # # החלת מדיניות ברירת מחדל (כל התעבורה מקובלת) iptables -P קלט קבל iptables -P OUTPUT קבלה iptables -P קדימה קבלה

אוטומציה.

עכשיו עלינו ליצור את התסריט בפנים /etc/init.d/ והשירות מתחיל אוטומטית ונוכל לנהל אותו בצורה נוחה יותר.

#! / bin / bash # חומת האש של הבית שלי. # שם קובץ /etc/init.d/ חומת אש # מאת Jlcmux טוויטר: @Jlcmux מקרה 1 $ בהתחלה) / etc / firewall_on ;; עצור) / etc / firewall_off ;; סטטוס) iptables -L ;; *) הד "תחביר שגוי. תקף = /etc/init.d/ התחלת חומת האש | עצור | סטטוס ;; esac

הסבר:

התסריט האחרון הזה שהכנסנו /etc/init.d/ עם השם חומת אש. אז אם אנחנו רוצים לנהל את חומת האש נוכל להשתמש בפקודה /etc/init.d/ התחלת חומת האש. באותו אופן אנו יכולים לעצור את זה או לראות את המדינה.

עכשיו אנחנו הולכים לערוך את הקובץ /etc/rc.local ושמנו משהו כמו: /etc/init.d/ התחלת חומת האש להתחיל עם המערכת.

גם כן. זה החלק השני. אני מקווה שזה מביא משהו לכולכם. בהמשך נראה פרוקסי ו- IDS.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   מטלטל דיג'ו

    אם אתה משתמש בדביאן קיימת חבילה ב- repo (iptables-persistent) שעושה בדיוק את זה, היא זורקת את הכללים הנוכחיים ב- /etc/iptables/rules.v4 או v6, תלוי במה שאתה משתמש ואז מחילה אותם עליך כאשר אתה מרים את המערכת.

  2.   Ocz דיג'ו

    בפועל, כדי לנקות את התצורה של חומת אש של iptables קונבנציונאלי (ושימוש ב- NAT לא יהיה זה מנקודת מבטי), ברוב המקרים יספיק שטיפת כלל ואיפוס מדיניות ברירת המחדל ל- ACCEPT.
    אבל בתיאוריה, וככל שידוע לי, בנוסף לזה אתה צריך גם לנקות את המחרוזות שאינן ברירת מחדל ולאפס את המונים. פעולות שיש לבצע תוך התחשבות כי בנוסף ל"סינון "ישנם טבלאות אחרות, (חובה לקרוא את הקובץ" / proc / net / ip_tables_names "לשם כך).

    אגב, האורתודוקסיה אומרת שחומת אש חייבת להיות כבר לפני שהרשת תהיה. אני לא יודע איך זה מושג במערכות לינוקס האחרות, אבל במערכות דביאן ניתן היה להתאים את התסריט ולהגדיר אותו בספריה "/etc/network/if-pre-up.d/".

    חומת אש טובה לכולם. 😉

  3.   NauTiluS דיג'ו

    שלום, ההודעה טובה מאוד. קראתי את כל 2 הכרכים.

    מחכה לבאות 🙂

  4.   אנונימי דיג'ו

    שאלה מבורותי, אנו ממשיכים עם iptables, אך למספר גרסאות גרעין יש לנו nftables, אני כבר בודק, השאלות הן, האם nftables זה משהו בטא בהשוואה ל- iptables? האם iptables ימשיכו לשמש זמן רב יותר?

    תודה.

    1.    יוקיטרו דיג'ו

      nftables כולל את כל הפונקציות של iptables, ip6tables, arptables ו- ebtables, והכל משתמש בתשתית חדשה הן בשטח הליבה והן במרחב המשתמשים, מה שמבטיח ביצועים טובים יותר ופונקציונליות משופרת. nftables יחליפו את iptables ואת כל הכלים האחרים שהוזכרו, אך לא בינתיים, לא לפחות עד שיהיה שימוש נרחב יותר ב- nftables ככאלה.

  5.   אלכסנדר דיג'ו

    פוסט טוב מאוד, רציתי לקרוא עוד מכיוון שהוא מוסבר היטב .. ברכות תודה תרומה נהדרת

  6.   אברה דיג'ו

    שלום! טוב מאוד שניהם מפרסמים.
    כתרומה תוכל להוסיף לסוף בחלק זה:

    "עכשיו אנחנו הולכים לערוך את הקובץ /etc/rc.local ולשים משהו כמו: /etc/init.d/ התחלה של חומת האש כך שהיא תתחיל במערכת."

    הוסף זאת ל- rc.local.

    אם [-x /etc/init.d/ חומת אש]; לאחר מכן
    /etc/init.d/ התחלת חומת האש
    fi

    מה שאומר שאם ל- "חומת אש" יש הרשאות ביצוע, בצע אותה, אם לא.
    אם אתה רוצה ש"חומת האש "לא תתחיל, אתה רק צריך להסיר את ההרשאות.

    לדוגמא: chmod + x /etc/init.d/ חומת אש
    לגרום לו לרוץ בכל סטארט-אפ או ...
    chmod -x /etc/init.d/ חומת אש
    להשבית אותו לחלוטין.

    ברכות!