ביליתי קצת זמן במחשבה על שני דברים לגבי הטבלאות האלה: רוב אלה שמחפשים הדרכות אלה הם מתחילים ושנית, רבים כבר מחפשים משהו פשוט למדי וכבר משוכלל.
דוגמה זו מיועדת לשרת אינטרנט, אך תוכלו להוסיף בקלות כללים נוספים ולהתאים אותם לצרכים שלכם.
כאשר אתה רואה שינוי "x" עבור מכשירי ה- ip שלך
#!/bin/bash
# אנו מנקים שולחנות iptables -F iptables -X # אנו מנקים NAT iptables -t nat -F iptables -t nat -X # שולחן מנגל לדברים כמו PPPoE, PPP ו- iptables של כספומט -t mangle -F iptables -t mangle -X # מדיניות אני חושב שזו הדרך הטובה ביותר למתחילים ו # עדיין לא רע, אני אסביר את הפלט (פלט) הכל בגלל שהם חיבורים יוצאים #, קלט אנחנו זורקים הכל, ושום שרת לא צריך להעביר. iptables -P INPUT DROP iptables -P OUTPUT מקבלים iptables -P FORWARD DROP # אינטראנט LAN אינטראנט = eth0 # Extranet wan extranet = eth1 # שמור על מצב. כל מה שכבר מחובר (הוקם) נותר כמו iptables זה -מצב INPUT -m - state ESTABLISHED, RELATED -j ACCEPT # Loop device. iptables -A INPUT -i lo -j ACCEPT # http, https, אנחנו לא מציינים את הממשק כי # אנחנו רוצים שזה יהיה כל iptables -A INPUT -p tcp --port 80 -j קבל iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh רק באופן פנימי ומתוך טווח זה של iptables ip -A INPUT -p tcp -s 192.168.xx / 24 -i $ אינטראנט --port 7659 -j ACCEPT # ניטור למשל אם יש להם zabbix כמה iptables של שירות snmp אחר - A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j קבל # icmp, פינג טוב זה תלוי בך iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql עם postgres הוא port 5432 iptables -A INPUT -p tcp -s 192.168.xx - sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh אם אתה רוצה לשלוח קצת דואר # iptables -A OUTPUT -p tcp --port 25 -j קבל # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" IP IP של שרת - ה- IP האמיתי של השרת שלך LAN_RANGE = "192.168.xx / 21 "# LAN טווח של הרשת שלך או vlan # Ip שלך שלעולם לא אמור להיכנס לאקסטרא-נט,זה להשתמש במעט לוגיקה אם יש לנו ממשק WAN בלבד, הוא לעולם לא צריך להיכנס לתעבורה מסוג LAN דרך ממשק זה SPOOF_IPS = "0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0 .16 / XNUMX "# פעולת ברירת מחדל - לביצוע כאשר כלל כלשהו תואם ל- ACTION =" DROP "# חבילות עם אותו IP של השרת שלי דרך iptables wan -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # חבילות עם טווח LAN עבור ה- wan, אני מגדיר את זה ככה למקרה שיש לך # רשת מסוימת, אבל זה מיותר עם כלל # הבא בפנים הלולאה "עבור" iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## כל רשתות SPOOF אינן מורשות על ידי wan ל- ip $ SPOOF_IPS לעשות iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION done
כמו תמיד אני ממתין לתגובות שלך, הישאר מעודכן בבלוג זה, תודה
זה עוזר לי להמשיך ללמוד קצת יותר תודות שהועתקו.
אתה מוזמן, שמח לעזור
אני ממש מצטער, אבל יש לי שתי שאלות (ואחת במתנה 😉):
האם היית מגיע עם תצורה זו כדי שאפאצ'י יפעל ויסגור את השאר למעט SSH?
# אנו מנקים שולחנות
iptables -f
iptables-X
אנו מנקים את NAT
iptables -t nat -F
iptables -t nat -X
iptables -A INPUT -p tcp -port 80 -j קבל
ssh רק באופן פנימי ומתוך מגוון זה של ip
iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ אינטראנט -port 7659 -j קבל
שאלה שנייה: האם 7659 היציאה משמשת ב- SSH בדוגמה זו?
ושלישי ואחרון: באיזה קובץ יש לשמור תצורה זו?
תודה רבה על ההדרכה, חבל שאתה כל כך מתחיל ולא יכול לנצל אותה היטב.
זה הכלל שאתה צריך עבור http מ- apache
iptables -A INPUT -p tcp -port 80 -j קבל
אך עליך גם להצהיר על מדיניות ברירת המחדל של ירידה (זה נמצא בתסריט)
iptables -P DROP קלט
iptables -P OUTPUT קבלה
iptables - P דרופון קדימה
וזה כי אם אתה מרוחק, זה יזרוק אותך.
iptables -A INPUT -m state –state ESTABLISHED, RELATED -j קבלה
אם 7659 הוא הנמל של ה- ssh בדוגמה, כברירת מחדל הוא 22, אם כי אני ממליץ להחליף ליציאה "לא ידועה"
איש אני לא יודע, כמו שאתה רוצה ... firewall.sh ואתה שם אותו ב- rc.local (sh firewall.sh) כך שהוא יפעל אוטומטית, זה תלוי באיזו מערכת הפעלה יש לך, יש קבצים שבהם אתה יכול לשים את הכללים ישירות.
Eii טוב מאוד אחי התסריט שלך, מנתח אותו .... האם אתה יודע כיצד אוכל לדחות את כל בקשות המשתמשים שלי לאתר ספציפי? .... אבל באתר זה יש הרבה שרתים ...
אני ממליץ על אפשרויות אחרות:
1) אתה יכול ליצור אזור מזויף ב- DNS שלך ...
2) אתה יכול למקם פרוקסי עם acl
אמברגו חטא
עבור iptables אתה יכול לחבב את זה ... זה לא תמיד האפשרות הטובה ביותר (יש דרכים נוספות)
הבלוג של iptables -A INPUT.desdelinux.ne -j DROP
iptables -A OUTPUT -d בלוג.desdelinux.net -j DROP
תגיד לי אם זה עבד
תודה על התשובה, הכל התבהר. שאלתי לגבי הנמל כי הופתעתי להשתמש ב- 7659, מכיוון שהנמלים הפרטיים מתחילים ב- 49152 וזה יכול להפריע לשירות כלשהו או משהו כזה.
שוב, תודה על הכל, זה נחמד!
ברכות.
ברודידל, איך אוכל ליצור איתך קשר? מאוד מעניין את התסריט שלך.
soulofmarionet_1@hotmail.com
השורה הקודמת "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" היא למנוע מזיוף של המכונה שלך? או שמא ייתכן שחבילה מורעלת כלשהי נכנסת ויכולה לצאת עם אותו מקור מורעל ולכן הכלל נכלל גם ב- OUTPUT?
תודה רבה על ההבהרה !!!
זהו סקריפט ה- iptables שלי, הוא שלם מאוד:
# franes.iptables.אוורירי
# doc.iptables.airoso: iptables למורשת ול nft
#
# יציאות חומת אש
##############################
#! / bin / bash
#
# נקה את המסך
################################# התחלת /etc/f-iptables/default.cfg |||||
ברור
# השאירו שורה ריקה
הד
ייצא כן = »» לא = »הד כבוי»
# המשתנים שניתן לשנות כדי לאפשר גישה
####################### משתנים לשינוי עם $ yes או $ no
ייצוא hayexcepciones = »$ no»
# יש יוצאים מן הכלל: $ כן כדי לאפשר למארחים יוצאי דופן ו- $ לא להשבית
יצוא הייפ = »$ no»
# הייפ: $ כן כדי לאפשר פינג לצדדים שלישיים ו- $ לא להכחיש
ייצוא haylogserver = »$ no»
# haylogeosserver: $ כן כדי להיות מסוגל להיכנס tcp $ לא כדי לא להיות מסוגל להיכנס tcp
######
###################### משתנים לשינוי הוספת "," או עם טווחי ":"
חריגים מייצוא = »baldras.wesnoth.org»
# חריגים מאפשרים מארחים בודדים או מרובים מחומת האש או ללא ערך
ייצא שרת יומן = מחק, ipp, dict, ssh
# יציאות שרת tcp שנרשמות כשחבילות נכנסות
שרת אדום לייצא = 0/0
# redserver: הרשת ליציאות שרתים עדיפה רשת מקומית או מספר ips
לקוח ייצוא אדום = 0/0
# clientnet: הרשת ליציאות הלקוח עדיפה על כל הרשתות
ייצא servidortcp = מחק, ipp, dict, 6771
# servidortcp: יציאות שרת ה- tcp שצוינו
ייצא serverudp = מחק
#udpserver: יציאות שרת udp שצוינו
ייצוא clientudp = תחום, bootpc, bootps, ntp, 20000: 45000
#udp client: יציאות הלקוח udp שצוינו
ייצא clienttcp = דומיין, http, https, ipp, git, dict, 14999: 15002
# tcp client: יציאות הלקוח tcp שצוינו
############################### סוף סוף /etc/f-iptables/default.cfg |||||
################################## סוף סוף המשתנים לשינוי
חומת אש לייצא = $ 1 משתנים = $ 2
אם ["$ variables" = "$ NULL"]; ואז מקור /etc/f-iptables/default.cfg;
מקור אחר / etc / f-iptables / $ 2; fi
################################## או יחליף את המשתנים בקובץ .cfg
################################################################ ###################################################
חומת אש לייצוא = $ 1 משתני יצוא = $ 2
################################################ משתני מערכת אוטומטיים
אם ["$ firewall" = "מנותק"]; ואז מהדהד חומת אש מנותקת;
ייצוא activateserver = »$ no» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "לקוח"]; ואז מהדהד את הלקוח של חומת האש;
ייצוא activateserver = »$ no» activateclient = »» wet = »$ no»;
elif ["$ firewall" = "שרת"]; ואז מהדהד את שרת האש;
ייצוא activateserver = »» activateclient = »$ no» wet = »$ no»;
elif ["$ firewall" = "לקוח ושרת"]; ואז מהדהד את הלקוח ואת השרת;
שרת הפעלת ייצוא = »»; ייצוא activateclient = »»; ייצוא wet = »$ no»;
elif ["$ firewall" = "מותר"]; ואז מהדהד חומת אש מותרת;
ייצוא activateserver = »$ no» activateclient = »$ no» wet = »»;
אחר
$ check sudo echo iptables-legacy:
$ check sudo iptables-legacy -v -L INPUT
$ check sudo iptables-legacy -v -L OUTPUT
$ check sudo echo iptables-nft:
$ לבדוק sudo iptables-nft -v -L INPUT
$ לבדוק sudo iptables-nft -v -L OUTPUT
הד _____פרמטרים ____ $ 0 $ 1 $ 2
הד "יצוק ללא פרמטרים הוא רשימת טבלאות ipt."
הד "הפרמטר הראשון (אפשר iptables): מנותק או לקוח או שרת או לקוח ושרת או מותר."
הד "הפרמטר השני: (אופציונלי): קובץ default.cfg בוחר /etc/f-iptables/default.cfg"
הד "הגדרות משתנות:" $ (ls / etc / f-iptables /)
יציאה 0; fi
##################
הד
הד זורק 0 $ מנותקים או לקוח או שרת או לקוח ושרת או מתירנים או משתנים או מבלי להשתמש בפרמטר לרשימת iptables.
הד הקובץ $ 0 מכיל בתוכו כמה משתנים הניתנים לעריכה.
#################################### המשתנים לעיל הופעלו
#####################################
הד הגדרת משתני ה- iptables
משתנים שהופעלו על ידי הד
הד
############################# כללי ה- iptables
הד הגדרת iptables-legacy
sudo / usr / sbin / iptables-legacy -t filter -F
sudo / usr / sbin / iptables-legacy -t nat -F
sudo / usr / sbin / iptables-legacy -t mangle -F
sudo / usr / sbin / ip6tables-legacy -t filter -F
sudo / usr / sbin / ip6tables-legacy -t nat -F
sudo / usr / sbin / ip6tables-legacy -t mangle -F
sudo / usr / sbin / ip6tables-legacy -A INPUT -j DROP
sudo / usr / sbin / ip6tables-legacy -A OUTPUT -j DROP
sudo / usr / sbin / ip6tables-legacy -A FORWARD -j DROP
sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ haylogserver sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-legacy -A INPUT -s $ exceptions -j ACCEPT> / dev / null
$ הפעל שרת sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport -dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ הפעל את השרת sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport -dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport-sports $ clientudp -m state-state established -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport-sports $ clienttcp -m state-state established -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
sudo / usr / sbin / iptables-legacy -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ exceptions -j ACCEPT> / dev / null
$ הפעל שרת sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport-sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ הפעל שרת sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport-sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport -port ספורט $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-legacy -A OUTPUT -p icmp –icmp מסוג בקשת הד -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-legacy -A OUTPUT -j DROP
sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP
הד iptables-legacy מופעל
הד
הד הגדרת iptables-nft
sudo / usr / sbin / iptables-nft -t filter -F
sudo / usr / sbin / iptables-nft -t nat -F
sudo / usr / sbin / iptables-nft -t מנגל -F
sudo / usr / sbin / ip6tables-nft -t filter -F
sudo / usr / sbin / ip6tables-nft -t nat -F
sudo / usr / sbin / ip6tables-nft -t מנגל -F
sudo / usr / sbin / ip6tables-nft -A INPUT -j DROP
sudo / usr / sbin / ip6tables-nft -A OUTPUT -j DROP
sudo / usr / sbin / ip6tables-nft -A FORWARD -j DROP
sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j קבל> / dev / null
$ haylogserver sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
$ hayeexceptions sudo / usr / sbin / iptables-nft -A INPUT -s $ exceptions -j ACCEPT> / dev / null
$ הפעל שרת sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport -dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ הפעל שרת sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport -dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport-sports $ clientudp -m state-state established -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport -ports $ clienttcp -m state-state established -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
sudo / usr / sbin / iptables-nft -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j קבל> / dev / null
$ יש חריגים sudo / usr / sbin / iptables-nft -A OUTPUT -d $ exceptions -j ACCEPT> / dev / null
$ הפעל שרת sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport-sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ הפעל שרת sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport-sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport -port ספורט $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
$ hayping sudo / usr / sbin / iptables-nft -A OUTPUT -p icmp –icmp-type הד-בקשה -j ACCEPT> / dev / null
sudo / usr / sbin / iptables-nft -A OUTPUT -j DROP
sudo / usr / sbin / iptables-nft -A FORWARD -j DROP
הד iptables-nft מופעל
הד
$ wet sudo / usr / sbin / iptables-legacy -F> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A INPUT -m state-state שנקבע -j ACCEPT> / dev / null
$ sudo רטוב / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-legacy -A OUTPUT -j ACCEPT> / dev / null
$ סודו רטוב / usr / sbin / iptables-legacy -A FORWARD -j DROP> / dev / null
$ סודו רטוב / usr / sbin / iptables-nft -F> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A INPUT -m state-state שנקבע -j ACCEPT> / dev / null
$ סודו רטוב / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
$ wet sudo / usr / sbin / iptables-nft -A OUTPUT -j ACCEPT> / dev / null
$ סודו רטוב / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
#############################
הד זרקת $ 0 $ 1 $ 2
# יוצא מהתסריט
צא מ- 0
איך הייתי מגדיר כלל אם חומת האש הזו משתמשת בו לשער שלי והיה לו דיונון בתוך ה- LAN ???