אבטחת הרשת שלך באמצעות Iptables - Proxy - NAT - IDS: חלק 1

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

תוכן זה מבוסס על הספר "לינוקס - ניהול מערכות ותפעול שירותי רשת" - סבסטיאן BOBILLIER

ניתוב וסינון

כדי לדבר ולהבין על ניתוב נוכל להגדיר תחילה מה הפונקציה של הנתב? לשם כך אנו יכולים לומר כי לנתב, בנוסף ליצירת רשת ומאפשר חיבור עם ציוד אחר (בידיעה שנוכל לעשות זאת עם AP, Switch, Hub או אחרים) יש את היכולת לחבר שתי רשתות שונות זו לזו.

נתב

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

לינוקס כנתב.

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

/proc/sys/net/ipv4/ip_forward

שם נגלה שמדובר בקובץ שמכיל רק אפס "0", מה שעלינו לעשות זה לשנות אותו ל" 1 "כדי להפעיל את ההתנהגות הזו. לרוע המזל זה נמחק כשאנחנו מפעילים מחדש את המחשב, כדי להשאיר אותו מופעל כברירת מחדל עלינו להשתמש בפקודה:

sysctl net.ipv4.ip_forward=1

או ערוך אותו ישירות בקובץ /etc/sysctl.conf. בהתאם להפצה תצורה זו יכולה להיות גם בקובץ  /etc/sysctl.d/.

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

route -n

o

netstat -nr

שתי הפקודות צריכות להחזיר אותו דבר.

צילום מסך מ- 2014-09-30 18:23:06

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

נניח שללינוקס שלי יש שני ממשקי רשת, הראשון כולל חיבור לאינטרנט שהרשת שלו היא 172.26.0.0 והשני (10.0.0.0) כולל מחשבים מרשת מקומית אחרת. אם אנו רוצים לנתב חבילות לרשת אחרת נוכל להשתמש:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

באופן כללי זה:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

אם אנו נותנים מסלול -נ לא משנה אם רשת זו קיימת או לא, ניתוב זה יתוקן בטבלה שלנו.

צילום מסך מ- 2014-09-30 18:31:35

אם אנו רוצים לבטל את הניתוב האמור נוכל להשתמש בו

route del -net 10.0.0.0 netmask 255.0.0.0

Iptables.

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

  • לוחות:  בעצם יכולים להיות שני שולחנות, לסנן, לסינון מנות ו  נת לתרגם כתובות, כלומר לעבור מרשת אחת לרשת אחרת.
  • שרשראות: השרשרת מתייחסת לסוג התנועה אותה אנו רוצים לסנן או לשחות, כלומר לאיזו תנועה אנו מיישמים את הטבלאות? והם יכולים להיות:  קלט: תנועה נכנסת, תפוקה: תנועה יוצאת או קָדִימָה: תנועה שעוברת דרכה, אבל זה לא חיבור ראוי.
  • זה עשוי גם להופיע מאמן, המשמש לטיפול בחבילה בצורה מסוימת לאחר הניתוב שלה.
  • פעולות: פעולות הן בעצם הפעולה שיש לבצע עם השרשרת. פעולה זו יכולה להיות יְרִידָה, שפשוט הורס את התנועה או לְקַבֵּל. המאפשר לתנועה לבצע פעולה כזו.

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

מדיניות חומת האש.

באופן כללי, חומת אש עובדת באופן טבעי בשתי דרכים:

  1. אפשר את כל התעבורה למעט, או
  2. אל תאפשר שום תנועה למעט ...

כדי להחיל מדיניות, השתמש IPTABLES - שרשרת פעולה

כאשר המחרוזת מייצגת את סוג התנועה (INPUT, OUTPUT, FORWARD, POSTROUTING ...) והפעולה היא DROP או ACCEPT.

בואו נסתכל על דוגמא.

צילום מסך מ- 2014-09-30 18:53:23

 

כאן אנו רואים שבהתחלה הצלחתי לפינג, ואז אמרתי ל- IPTABLES שכל תעבורת ה- OUTPUT הייתה DROP או אסורה. ואז אמרתי ל- IPTABLES לקבל את זה.

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

iptables -P קלט DROP iptables -P OUTPUT DROP iptables -P DROP FORWARD
אם תקנון זה חל, לא יהיה להם שום סוג של חיבור
.

כדי לחזור אנו כותבים אותו דבר ומחליפים את DROP ב- ACCEPT.

בשלב זה, מכיוון שכל התעבורה נדחית, אנו מתחילים לספר ל- IPTABLES שלנו איזו תנועה יכולה להיות לה.

התחביר הוא:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

Donde:

מחרוזת = INPUT, OUTPUT או FORWARD

origin_ip = מקור החבילות, זה יכול להיות IP יחיד או רשת ובמקרה זה עלינו לציין את המסכה).

יעד_איפ לאן החבילות הולכות. זה יכול להיות IP יחיד או רשת ובמקרה זה עלינו לציין את המסכה).

פרוטוקול = מציין את הפרוטוקול המשמש את החבילות (icmp, tcp, udp ...)

יציאה = נמל היעד של התנועה.

פעולה = DROP או קבל.

לדוגמה:

 

צילום מסך מ- 2014-09-30 19:26:41

כל המדיניות המוגבלת חלה.

צילום מסך מ- 2014-09-30 19:27:42

לאחר מכן אנו מוסיפים את הכללים כדי להיות מסוגלים לתעבור דרך יציאה 80 HTTP ו- 443 HTTPS, עם פרוטוקול TCP. ואז יציאה 53 הוא מוחל על לקוח ה- DNS לפתור את התחומים, אחרת לא תנווט. זה עובד עם פרוטוקול udp.

השורה:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

זה בגלל הדברים הבאים: כאשר אתה מגיש בקשת HTTP למשל, אתה מתחבר ליציאה 80 של השרת, אך השרת להחזרת המידע צריך להתחבר אליך דרך כל יציאה. (בדרך כלל גדול מ- 1024).

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

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

אני מקווה שאהבתם את המידע הזה. בהמשך אני אדבר על NAT, Proxy ותסריטים ל- Firewal.


תוכן המאמר עומד בעקרונותינו של אתיקה עריכתית. כדי לדווח על שגיאה לחץ כאן.

12 תגובות, השאר את שלך

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

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

*

*

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

  1.   רוגליו פינטו דיג'ו

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

  2.   Heber דיג'ו

    מאמר מצוין. אני מצפה לחלק השני.

  3.   מילטון דיג'ו

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

  4.   פאסטוד דיג'ו

    שלום Jlcmux,

    מצוין, ממש אהבתי את זה, מתי הצד השני יהיה זמין?

    ברכות ותודה על השיתוף

    1.    @Jlcmux דיג'ו

      תודה על התגובה.

      שלחתי את החלק השני אתמול, במהלך היום אני חושב שהם יפרסמו אותו.

      ברכות.

  5.   ישראל דיג'ו

    חבר מאמר טוב מאוד @ Jlcmux, באמת למדתי איתו מאז שהוא הבהיר כמה ספקות שהיו לי במשך זמן מה, אגב לא אכפת לך לחלוק את הספר של מקור המאמר, של סבסטיאן BOBILLIER, ובכן slau2s ועכשיו לראות את החלק השני, salu2s.

    1.    @Jlcmux דיג'ו

      שלום תודה על התגובה לישראל.

      מתברר שיש לי את הספר בצורה פיזית. אבל מצאתי את הקישור הזה ב- Google ספרים. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      אני חושב שזה שלם.

  6.   אריאל דיג'ו

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

    1.    @Jlcmux דיג'ו

      ובכן, אני חושב שהיתרונות והחסרונות תלויים בתרחיש שבו אתה מתכוון ליישם זאת. מדוע בוודאי אינך מתכוון לקנות מכשיר UTM או משהו כזה לביתך? ואולי גם עבור עסק קטן שלא יכול להרשות לעצמו. זה גם טוב כתרגיל, מכיוון שהוא עוזר לך להבין את כל ההיגיון של זה ותוכל להגדיר טוב יותר FWall ייעודי. בנוסף לכך כמעט כל המכשירים האלה באמת מה שיש להם הוא Embedded Linux.

      ברכות.

  7.   אריאל דיג'ו

    שלום, שאלה, האם אתה יכול ליצור ממשק "מלאכותי" בלינוקס לניתוב דומה בין רשתות? (סגנון מעקב אחר מנות) לעבודה עם מכונות וירטואליות? למשל אם יש לי eth0 (כי יש לי כמובן כרטיס בודד) האם אני יכול ליצור eth1 כדי ליצור רשת אחרת? מורה טוב מאוד!

    1.    אלב דיג'ו

      בלינוקס תוכלו ליצור ממשקים וירטואליים, כמובן. אם יש לך eth0, אתה יכול לקבל eth0: 0, eth0: 1, eth0: 2 ... וכו '

  8.   צ'ינולוקו דיג'ו

    כל כך טוב, תודה על השיתוף