Iptables הוא כלי חומת אש גמיש במיוחד שנבנה עבור מערכות הפעלה לינוקס. בין אם אתה חנון לינוקס מתחיל או מנהל מערכת, כנראה שיש דרך מסוימת ש- iptables יכולים להועיל לך. המשך לקרוא כשאנו מראים לך כיצד להגדיר את חומת האש הרב-תכליתית ביותר של לינוקס.
אודות iptables
iptables הוא כלי חומת אש בשורת הפקודה המשתמש בשרשראות מדיניות כדי לאפשר או לחסום תנועה. כאשר חיבור מנסה להתבסס על המערכת שלך, iptables מחפש כלל ברשימה שלו כדי להתאים אותו אליו. אם הוא לא מוצא כזה, הוא נוקט בפעולת ברירת המחדל.
iptables כמעט תמיד מותקן מראש בכל הפצת לינוקס. כדי לעדכן / להתקין אותו, פשוט אחזר את חבילת iptables:
sudo apt-get להתקין iptables
ישנן חלופות GUI לטאבלטים כמו יוצר מחלוקות , אבל iptables לא ממש קשה ברגע שיש לך כמה פקודות למטה. אתה רוצה להיות זהיר במיוחד בעת קביעת התצורה של כללי iptables, במיוחד אם אתה SSH מכניס לשרת, מכיוון שפקודה אחת שגויה יכולה לנעול אותך לצמיתות עד שתתוקן ידנית במכונה הפיזית.
סוגי שרשראות
iptables משתמש בשלוש שרשראות שונות: קלט, קדימה ופלט.
קֶלֶט - שרשרת זו משמשת לשליטה בהתנהגות עבור חיבורים נכנסים. לדוגמה, אם משתמש מנסה SSH למחשב / שרת שלך, iptables ינסו להתאים את כתובת ה- IP והיציאה לכלל בשרשרת הקלט.
קָדִימָה - שרשרת זו משמשת לחיבורים נכנסים שאינם מועברים באופן מקומי. חשוב על נתב - נתונים נשלחים אליו תמיד אך לעתים נדירות מיועדים לנתב עצמו; הנתונים פשוט מועברים ליעד שלהם. אלא אם כן אתה מבצע איזשהו ניתוב, NATing או משהו אחר במערכת שלך שדורש העברה, אפילו לא תשתמש בשרשרת זו.
יש דרך אחת בטוח לבדוק אם המערכת שלך משתמשת / זקוקה לשרשרת הקדמית או לא.
iptables -L -v
צילום המסך לעיל הוא של שרת שפועל כבר כמה שבועות ואין לו מגבלות על חיבורים נכנסים או יוצאים. כפי שאתה יכול לראות, שרשרת הקלט עיבדה 11GB של חבילות ושרשרת הפלט עיבדה 17GB. לעומת זאת, השרשרת הקדמית לא זקוקה לעיבוד חבילה אחת. הסיבה לכך היא שהשרת אינו מבצע העברה כלשהי או משמש כמכשיר מעבר.
תְפוּקָה - שרשרת זו משמשת לחיבורים יוצאים. לדוגמא, אם תנסה לבצע פינג ל- howtogeek.com, iptables יבדקו את שרשרת הפלט שלה כדי לראות מה הכללים לגבי פינג ו- howtogeek.com לפני שתקבל החלטה להתיר או לשלול את ניסיון החיבור.
האזהרה
למרות שפינג מארח חיצוני נראה כמו משהו שיצטרך לחצות רק את שרשרת הפלט, זכור שכדי להחזיר את הנתונים, ישתמש גם בשרשרת הקלט. כאשר אתה משתמש ב- iptables כדי לנעול את המערכת שלך, זכור כי הרבה פרוטוקולים ידרשו תקשורת דו כיוונית, כך שיהיה צורך להגדיר כראוי את שרשראות הקלט והפלט. SSH הוא פרוטוקול נפוץ שאנשים שוכחים לאפשר בשתי הרשתות.
התנהגות ברירת מחדל של שרשרת המדיניות
לפני שתיכנס ותגדיר חוקים ספציפיים, תרצה להחליט מה תהיה התנהגות ברירת המחדל של שלוש הרשתות. במילים אחרות, מה ברצונך ש- iptables יעשו אם החיבור אינו תואם לכללים הקיימים?
כדי לראות מה שרשת המדיניות שלך מוגדרת כעת לעשות עם תנועה ללא תחרות, הפעל את
iptables -L
פקודה.
כפי שאתה יכול לראות, השתמשנו גם בפקודה grep כדי לספק לנו תפוקה נקייה יותר. בצילום המסך ההוא, הרשתות שלנו מביאות כעת תנועה.
לא פעם, תרצה שהמערכת שלך תקבל חיבורים כברירת מחדל. אלא אם כן שינית את כללי שרשרת המדיניות בעבר, יש להגדיר הגדרה זו כבר. כך או כך, הנה הפקודה לקבל חיבורים כברירת מחדל:
iptables - מדיניות קבלת קלט
iptables - מדיניות OUTPUT קבלה
iptables - מדיניות קבלה מקדימה
כברירת מחדל לכלל הקבלה, תוכל להשתמש ב- iptables כדי לשלול כתובות IP ספציפיות או מספרי יציאה, תוך שתמשיך לקבל את כל החיבורים האחרים. נגיע לפקודות האלה תוך דקה.
אם אתה מעדיף להכחיש את כל החיבורים ולציין ידנית אילו חיבורים ברצונך לאפשר להתחבר, עליך לשנות את מדיניות ברירת המחדל של הרשתות שלך כדי לרדת. פעולה זו ככל הנראה תועיל רק לשרתים המכילים מידע רגיש ורק אי פעם מחוברים אליהם אותן כתובות IP.
iptables - מדיניות INPUT DROP
iptables - מדיניות OUTPUT DROP
iptables - מדיניות טפטוף קדימה
תגובות ספציפיות לחיבור
כאשר מדיניות ברירת המחדל שלך בשרשרת מוגדרת, תוכל להתחיל להוסיף כללים ל- iptables כדי שתדע מה לעשות כאשר היא נתקלת בחיבור מכתובת IP או יציאה מסוימת. במדריך זה נעבור על שלושת "התגובות" הבסיסיות והנפוצות ביותר.
לְקַבֵּל - אפשר את החיבור.
יְרִידָה - שחרר את הקשר, התנהג כאילו זה מעולם לא קרה. זה הכי טוב אם אתה לא רוצה שהמקור יבין שהמערכת שלך קיימת.
לִדחוֹת - אל תאפשר את החיבור, אלא שלח שגיאה בחזרה. זה הכי טוב אם אתה לא רוצה שמקור מסוים יתחבר למערכת שלך, אבל אתה רוצה שיידעו שחומת האש שלך חסמה אותם.
הדרך הטובה ביותר להראות את ההבדל בין שלושת הכללים הללו היא להראות איך זה נראה כאשר מחשב מנסה לבצע פינג למכונת לינוקס עם iptables מוגדרים לכל אחת מההגדרות הללו.
מתיר את החיבור:
ביטול הקשר:
דוחה את החיבור:
מתיר או חוסם חיבורים ספציפיים
עם הגדרת רשתות המדיניות שלך, כעת תוכל להגדיר טבלאות ipt כדי לאפשר או לחסום כתובות ספציפיות, טווחי כתובות ויציאות. בדוגמאות אלה נגדיר את החיבורים ל
יְרִידָה
, אבל אתה יכול להחליף אותם ל
לְקַבֵּל
אוֹ
לִדחוֹת
, בהתאם לצרכים שלך ואיך הגדרת את רשתות המדיניות שלך.
הערה: בדוגמאות אלה נשתמש
iptables -A
לצרף כללים לשרשרת הקיימת. iptables מתחיל בראש הרשימה ועובר על כל כלל עד שהוא מוצא אחד שהוא תואם. אם אתה צריך להוסיף כלל מעל אחר, אתה יכול להשתמש בו
iptables -I [chain] [number]
כדי לציין את המספר שהוא צריך להיות ברשימה.
חיבורים מכתובת IP אחת
דוגמה זו מראה כיצד לחסום את כל החיבורים מכתובת ה- IP 10.10.10.10.
iptables -A INPUT -s 10.10.10.10 -j DROP
חיבורים ממגוון כתובות IP
דוגמה זו מראה כיצד לחסום את כל כתובות ה- IP בתחום הרשת 10.10.10.0/24. אתה יכול להשתמש במסיכת רשת או בסימן קו נטוי סטנדרטי כדי לציין את טווח כתובות ה- IP.
iptables -A INPUT -s 10.10.10.0/24 -j DROP
אוֹ
iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP
חיבורים ליציאה ספציפית
דוגמה זו מראה כיצד לחסום חיבורי SSH מתאריך 10.10.10.10.
iptables -A INPUT -p tcp --port ssh -s 10.10.10.10 -j DROP
אתה יכול להחליף את "ssh" בכל פרוטוקול או מספר יציאה. ה
-p tcp
חלק מהקוד אומר ל- iptables באיזה סוג חיבור הפרוטוקול משתמש. אם חוסמת פרוטוקול המשתמש UDP ולא TCP, אז
-p udp
יהיה צורך במקום זאת.
דוגמה זו מראה כיצד לחסום חיבורי SSH מכל כתובת IP.
iptables -A INPUT -p tcp --port ssh -j DROP
מדינות חיבור
כפי שהזכרנו קודם, הרבה פרוטוקולים ידרשו תקשורת דו כיוונית. לדוגמה, אם ברצונך לאפשר חיבורי SSH למערכת שלך, שרשתות הקלט והפלט יצטרכו להוסיף להם כלל. אבל מה אם אתה רק רוצה ש- SSH ייכנס למערכת שלך יתאפשר? האם הוספת כלל לשרשרת הפלט לא תאפשר גם ניסיונות SSH יוצאים?
זה המקום בו נכנסות מצבי חיבור, שנותנים לך את היכולת שאתה צריך כדי לאפשר תקשורת דו כיוונית אך רק מאפשרים ליצור קשרים בכיוון אחד. בדוק דוגמה זו, שבה חיבורי SSH מ- 10.10.10.10 מותרים, אך חיבורי SSH עד 10.10.10.10 אינם מורשים. עם זאת, המערכת מותרת להחזיר מידע על SSH כל עוד ההפעלה כבר הוקמה, מה שמאפשר תקשורת SSH בין שני המארחים הללו.
iptables -A INPUT -p tcp --port ssh -s 10.10.10.10 -m מצב - מדינה חדש, הוקם -j קבלה
iptables -A OUTPUT -p tcp - ספורט 22 -d 10.10.10.10 -m מדינה - מדינה שהוקמה -j קבלה
שמור שינויים
השינויים שאתה מבצע בכללי ה- iptables שלך יימחקו בפעם הבאה ששירות ה- iptables יופעל מחדש, אלא אם כן תבצע פקודה לשמירת השינויים. פקודה זו יכולה להיות שונה בהתאם להפצה שלך:
אובונטו:
sudo / sbin / iptables-save
Red Hat / CentOS:
/ sbin / שירות iptables לשמור
אוֹ
/etc/init.d/iptables לשמור
פקודות אחרות
ציין את כללי ה- iptables שהוגדרו כעת:
iptables -L
הוספת ה-
-בְּ
אפשרות תתן לך מידע על מנות ובתים, והוספה
-n
יפרט הכל באופן מספרי. במילים אחרות - שמות מארחים, פרוטוקולים ורשתות רשומים כמספרים.
כדי למחוק את כל הכללים שהוגדרו כעת, תוכל להוציא את פקודת ההדחה.
iptables -F