ฉันต้องการ iptables เพื่อกรองเพียงหนึ่งอินเตอร์เฟส eth0 ซึ่งหันหน้าไปทาง WAN สิ่งนี้สามารถทำได้? และฉันต้องการเปิดพอร์ต ftp และ ssh บน eth0
ฉันต้องการ iptables เพื่อกรองเพียงหนึ่งอินเตอร์เฟส eth0 ซึ่งหันหน้าไปทาง WAN สิ่งนี้สามารถทำได้? และฉันต้องการเปิดพอร์ต ftp และ ssh บน eth0
คำตอบ:
ดังนั้นสำหรับอินเทอร์เฟซทั้งหมด แต่อย่างใดอย่างหนึ่งที่คุณต้องการยอมรับการรับส่งข้อมูลทั้งหมดและบน eth0 คุณต้องการปล่อยทราฟฟิกที่เข้ามาทั้งหมดยกเว้น ftp และ ssh
ก่อนอื่นเราสามารถกำหนดนโยบายให้ยอมรับปริมาณการใช้งานทั้งหมดโดยค่าเริ่มต้น
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
จากนั้นเราสามารถรีเซ็ตกฎไฟร์วอลล์ของคุณ
iptables -F
ตอนนี้เราสามารถพูดได้ว่าเราต้องการอนุญาตการรับส่งข้อมูลขาเข้าบน eth0 ซึ่งเป็นส่วนหนึ่งของการเชื่อมต่อที่เราอนุญาตแล้ว
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
นอกจากนี้เราต้องการอนุญาตการเชื่อมต่อ ssh ขาเข้าบน eth0
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
แต่สิ่งใดก็ตามที่เข้ามาใน eth0 ควรถูกทิ้งไว้
iptables -A INPUT -i eth0 -j DROP
สำหรับความลึกที่มากกว่าเล็กน้อยดูรายการ wiki CentOSนี้
FTP เป็น trickier กว่า SSH เพราะมันสามารถใช้พอร์ตแบบสุ่มเพื่อดูคำถามก่อนหน้านี้
สิ่งนี้ควรทำงาน:
iptables -A INPUT -i eth1 -p all -j DROP
iptables -A INPUT -i eth0 -p all -j ACCEPT
ACCEPT
ทุกอย่างในอินเทอร์เฟซอื่น
ตัวเลือกในการระบุส่วนต่อประสานในกฎ iptables ของคุณคือ-i
: -i eth0
.
มันง่ายมากเมื่อคุณสร้างiptables
กฎจากนั้นคุณต้องระบุส่วนต่อประสาน ตัวเลือกในการระบุการ์ด LAN ที่iptables
ควรใช้คือ-i
กฎต่อไปนี้เป็นตัวอย่างที่ดีให้กับคุณ
iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset
กฎข้อสุดท้ายคือการปฏิเสธแพ็กเก็ตอื่นที่ไม่ตรงกับกฎ 2 ข้อแรก กฎทั้งหมดiptables
จะถูกดำเนินการตามลำดับที่กำหนดดังนั้นกฎในการปฏิเสธแพ็กเก็ตจะเป็นกฎสุดท้ายเสมอ