ฉันคิดเกี่ยวกับสองสิ่งเกี่ยวกับ iptables มาระยะหนึ่งแล้วผู้ที่มองหาบทเรียนเหล่านี้ส่วนใหญ่เป็นผู้เริ่มต้นและประการที่สองหลายคนมองหาสิ่งที่ค่อนข้างเรียบง่ายและมีรายละเอียดอยู่แล้ว
ตัวอย่างนี้ใช้สำหรับเว็บเซิร์ฟเวอร์แต่คุณสามารถเพิ่มกฎและปรับให้เข้ากับความต้องการของคุณได้อย่างง่ายดาย
เมื่อคุณเห็นการเปลี่ยนแปลง "x" สำหรับ ip ของคุณ
#!/bin/bash
# เราทำความสะอาดตาราง iptables -F iptables -X # เราทำความสะอาด NAT iptables -t nat -F iptables -t nat -X # mangle table สำหรับสิ่งต่างๆเช่น PPPoE, PPP และ ATM iptables -t mangle -F iptables -t mangle -X # นโยบายฉันคิดว่านี่เป็นวิธีที่ดีที่สุดสำหรับผู้เริ่มต้นและ # ก็ยังไม่แย่ฉันจะอธิบายเอาต์พุต (เอาต์พุต) ทั้งหมดเนื่องจากเป็นการเชื่อมต่อขาออก # อินพุตเราทิ้งทุกอย่างและไม่ควรส่งต่อเซิร์ฟเวอร์ iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Keep state. ทุกอย่างที่เชื่อมต่อแล้ว (สร้างขึ้นแล้ว) จะถูกทิ้งไว้เช่น iptables นี้ -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT # Loop device iptables -A INPUT -i lo -j ACCEPT # http, https เราไม่ได้ระบุอินเทอร์เฟซเนื่องจาก # เราต้องการให้เป็นสำหรับ iptables ทั้งหมด -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh เฉพาะภายในและจากช่วงของ iptables ของ ip นี้ -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT # การตรวจสอบเช่นหากมี zabbix หรือบริการ snmp อื่น ๆ iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp ping ดีขึ้นอยู่กับคุณ iptables -A INPUT -p icmp -s 192.168 xx / 24 - i $ intranet -j ACCEPT #mysql ที่มี postgres คือพอร์ต 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ยอมรับ #sendmail bueeeh หากคุณต้องการส่งเมล #iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # IP ของเซิร์ฟเวอร์ - wan 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 เดียวกันของเซิร์ฟเวอร์ของฉันผ่าน wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ เอกซ์ทราเน็ต -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
เช่นเคยฉันรอความคิดเห็นของคุณโปรดติดตามในบล็อกนี้ขอบคุณ