ฉันจะสร้างชุดกฎเฉพาะของ iptables ได้อย่างถาวรได้อย่างไร


42

มี "แนวปฏิบัติที่ดีที่สุด" หรือมาตรฐานเพื่อสร้างกฎ iptables บางอย่างถาวรหรือไม่ ฉันหมายถึง: ใช้โดยอัตโนมัติเมื่อรีบูตระบบหรือไม่

ฉันใช้ VPS กับ Ubuntu Server 10.04 LTS (Lucid Lynx)

ขอขอบคุณ.

แก้ไขใหญ่: ฉันไม่ต้องการกฎใด ๆ ที่จะคงอยู่ (เช่นiptables-persistentแพคเกจไม่) ฉันต้องการเฉพาะชุดที่เฉพาะเจาะจงของตัวเองที่จะโหลดใหม่ ... หากกฎอื่น ๆ จะถูกเพิ่มในที่สุดโดยการใช้ iptables เหล่านี้ควรจะถูกทิ้ง ...

คำตอบ:


51

วิธีที่ง่ายที่สุดคือการใช้ iptables-saveและ iptables-restoreเพื่อบันทึกกฎ iptables ที่กำหนดไว้ในปัจจุบันไปยังไฟล์และโหลดอีกครั้ง (เช่นเมื่อรีบูต)

ตัวอย่างเช่นคุณจะวิ่ง

sudo iptables-save | sudo tee /etc/iptables.conf

เพื่อบันทึกกฎ iptables ปัจจุบันของคุณ/etc/iptables.confแล้วใส่บรรทัดเหล่านี้ใน/etc/rc.local:

# Load iptables rules from this file
iptables-restore < /etc/iptables.conf

2
+1 คำตอบของคุณเหมาะกับคำถามต้นฉบับของฉัน มันทำให้ฉันตระหนักถึงสิ่งที่ฉันต้องการจริงๆดังนั้นฉันจึงต้องเปลี่ยนคำถามจาก "ฉันจะทำให้กฎ iptables ถาวรได้อย่างไร" เป็น "ฉันจะสร้างชุดกฎเฉพาะของ iptables ถาวรได้อย่างไร"
J. Bruni

ถ้าเป็นไปได้โปรดแก้ไขคำตอบของคุณเล็กน้อยเพื่อสะท้อนการเปลี่ยนแปลงของคำถาม ... ฉันยินดีที่จะยอมรับ! ฉันต้องใช้iptables-saveเพียงครั้งเดียวและโหลดซ้ำทุกครั้ง (iptables-restore ที่ /etc/rc.local ฟังดูดี)
J. Bruni

1
หากคุณได้รับpermission deniedเมื่อคุณพยายามที่จะใช้>แล้วนี้คำตอบที่กองมากเกินจะเป็นประโยชน์
David Tuite

2
ใช้sudo sh -c "iptables-save > /etc/iptables.conf"แทนsudo iptables-save > /etc/iptables.conf
Rajat Gupta

31

การอัปเดตด่วนสำหรับสิ่งนี้เนื่องจากคุณอาจใช้ 12.04 ในตอนนี้และทุกอย่างดีขึ้น

iptables-persistentแพคเกจแก้ปัญหานี้ ติดตั้ง,

sudo apt-get install iptables-persistent

กฎที่กำหนดไว้เมื่อติดตั้งแพคเกจจะถูกบันทึกและใช้ในการบู๊ตแต่ละครั้ง กฎที่โหลดใหม่ถูกยกเลิกเมื่อรีบูต

ไฟล์กำหนดค่าหากคุณต้องการเปลี่ยน (เมื่อiptables-persistentติดตั้งครั้งเดียว) คือ /etc/iptables/rules.v4หรือ /etc/iptables/rules.v6สำหรับ ipv4 และ ipv6 iptables ตามลำดับ


หากคุณทำการแก้ไข/etc/iptables/rules.v4คุณจะนำไปใช้อย่างไร [เป็นทางการ] ขณะนี้ฉันกำลังทำsudo iptables-restore < /etc/iptables/rules.v4
Bruno Bronosky

24

ดีกว่า/etc/rc.localคือการเพิ่มบรรทัด/etc/network/interfacesหลังจากบันทึกกฎของ iptable เช่นนี้

post-up iptables-restore < /etc/iptables.up.rules

หรือมันเป็นเดียวกันเพื่อใส่ในไฟล์/etc/network/if-down.d/หรือ/etc/network/if-post-down.d/หรือหรือ/etc/network/if-pre-up.d//etc/network/if-up.d/


1
@Kreker: โปรดอธิบายให้ชัดเจนว่าแนวทางของคุณดีกว่าดำเนินการกู้คืนสคริปต์จากrc.localไหน? วิธีการอื่นไม่ทำงานในบางกรณี?
Rajat Gupta

2
การเพิ่มลงในการกำหนดค่าเครือข่ายทำให้โหลดซ้ำหลังจากที่คุณเรียกใช้คำสั่ง "บริการเครือข่ายเริ่มต้นใหม่" ไม่ จำกัด เฉพาะการเริ่มระบบ
K. Darien Freeheart

4
ทำไมหนึ่ง iptables-restore โพสต์เมื่ออินเทอร์เฟซจะลง?
alphadogg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.