ชุดกฎของ iptables อยู่ที่ไหนใน Ubuntu 12.04


8

Ubuntu 12.04 LTS - iptables v1.4.12

TLDR:

ชุดกฎของ iptables ถูกบันทึกไว้เมื่อiptables-save <ruleset-name>ใด

คำอธิบาย :

ตามคำตอบนี้วิธีการพื้นฐานในการบันทึกกฎของ iptables คือการเรียกใช้

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

และหลังจากนั้นโหลด / กู้คืนกฎเหล่านี้ใน/etc/network/interfacesลักษณะ:

iface eth0 inet static
        ....
        pre-up iptables-restore < /etc/iptables/rules.v4
        pre-up ip6tables-restore < /etc/iptables/rules.v6

... /etc/network/if-pre-up.dหรือวางเหล่านี้เป็นเชลล์สคริปต์ใน


สิ่งนี้สามารถทำให้ง่ายขึ้นโดยการติดตั้งiptables-persistentแพคเกจ

sudo apt-get install iptables-persistent
inovoke-rc.d iptables-persistent save
update-rc.d iptables-persistent defaults

ต่อไปนี้บทเรียนบางอย่างฉันพยายามที่จะเรียกใช้service iptables status(คำสั่งที่ไม่มีอยู่ / ไม่รู้จักสำหรับiptablesรุ่น / แพ็คเกจที่มาพร้อมกับ 12.04) และพบผลลัพธ์ที่น่าสนใจนี้:

Aborting iptables initd: unknown command(s): "status".                                                               
  ...                                                                                  
  save <ruleset>                                                                                                    
     save the current ruleset                                                                                       
  load <ruleset>                                                                                                    
     load a ruleset                                                                                                 
   ...                                                                                                   
Saved rulesets:                                                                                                     
  active, inactive                                                                                 
...     

ดูเหมือนจะมีกฎสองชุดที่ฉันสามารถโหลด ( activeและinactive) ...

.. แต่เก็บไว้ที่ไหน

ฉันหาตำแหน่งของพวกเขาไม่ได้เนื่องจากใช้งาน / ไม่ได้ใช้งานเป็นคำค้นหาที่ค่อนข้างแย่และdpkg-query -L iptablesไม่ได้ช่วยอะไรเช่นกัน

ในขณะที่ฉันกำลังเตรียมเซิร์ฟเวอร์ของฉันด้วยpuppet/ chefจะเป็นการดีหากได้ทราบว่ามีบางที่ที่ฉันสามารถวาง rulesets ของฉันและเพิ่ม shell shell ธรรมดา/etc/networking/if-pre-upเพื่อโหลดเหล่านี้

จากนั้นฉันสามารถจัดการiptables-persistentแพ็คเกจที่ไม่ยืดหยุ่นเนื่องจากไม่อนุญาตให้โหลดชุดกฎที่แตกต่างกัน

ขอบคุณสำหรับความช่วยเหลือของคุณ.

คำตอบ:


4

iptables เก็บกฎไว้ในหน่วยความจำ แต่สามารถสร้างชุดกฎที่สร้างขึ้นiptables-save ruleset-nameได้ในไฟล์

/ var / lib / iptables / ruleset ชื่อ

iptables-restore <ruleset-name>เหล่านี้สามารถเรียกคืนโดยกล่าวอ้าง

ฉันยืนยันได้แค่นี้กับ Ubuntu 12.04.03 LTS - บางทีอาจมีการเปลี่ยนแปลงตำแหน่งนี้ในแพ็คเกจ iptables รุ่นที่ใหม่กว่า

ฉันคิดว่าสิ่งที่ต้องการ/etc/iptables/rulesets.dจะเป็นสถานที่ที่มีเหตุผลมากขึ้นในการจัดเก็บเหล่านี้

บันทึกเส้นทางการกำหนดค่าใน/etc/init.d/iptablesบรรทัดที่27และหลังจากนั้นใช้โดยที่จะเรียกinitd_save()initd_counters()

libdir=/var/lib/iptables   

# ...

initd_counters () {                                                                                         
 if test "${enable_save_counters:-false}" = true; then                                                     
    echo -n " with counters"                                                                                
    $iptables_save -c > "$ruleset"                                                                          
  else                                                                                                      
    $iptables_save | sed '/^:/s@\[[0-9]\{1,\}:[0-9]\{1,\}\]@[0:0]@g' > "$ruleset"                           
  fi                                                                                                        
}        

initd_save () {                                                                                             
  rm -f $autosave                                                                                           
  ruleset="${libdir}/$@"                                                                                    
  echo -n "Saving iptables ruleset: save \"$@\""                                                            
  initd_counters                                                                                           
  echo "."                                                                                                  
}          

#cat / etc / os-release NAME = "Ubuntu" รุ่น = "12.04.4 LTS, Pangolin ที่แม่นยำ" ID = ubuntu ID_LIKE = debian PRETTY_NAME = "Ubuntu แม่นยำ (12.04.4 LTS)" VERSION_ID = "12.04" # iptables- บันทึก ruleset.1 พบข้อขัดแย้งที่ไม่รู้จักใน commandline นี่ไม่ได้ผล
Rondo

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