Wo sind die Regelsätze von iptables unter Ubuntu 12.04 gespeichert?

8

Ubuntu 12.04 LTS - iptables v1.4.12

TLDR:

Wo werden die Regelsätze von iptables beim Aufrufen gespeichert iptables-save <ruleset-name>?

Erklärung :

Nach dieser Antwort wird die grundlegende Methode zum Speichern der Regeln von iptables aufgerufen

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

und danach Laden / Wiederherstellen dieser Regeln /etc/network/interfaceswie folgt:

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

... oder diese in ein Shell-Skript einfügen /etc/network/if-pre-up.d.


Dies kann durch die Installation des iptables-persistentPakets vereinfacht werden .

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

Nach einigen Tutorials habe ich versucht aufzurufen service iptables status(ein nicht existierender / unbekannter Befehl für die iptablesVersion / das Paket, das mit 12.04 vorinstalliert ist) und fand diese interessante Ausgabe:

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

Es scheint zwei Regelsätze zu geben, die ich laden kann ( activeund inactive) ...

.. aber wo sind diese gespeichert ?

Ich kann ihren Standort nicht finden, da aktiv / inaktiv ziemlich schlechte Suchbegriffe sind und dpkg-query -L iptablesauch nicht helfen.

Da ich meine Server mit puppet/ chefversorge, wäre es schön zu wissen, ob es einen Ort gibt, an dem ich meine Regelsätze platzieren und ein einfaches Shell-Skript hinzufügen kann /etc/networking/if-pre-up, um diese zu laden.

Dann könnte ich das iptables-persistentPaket weglassen , das nicht so flexibel ist, da es nicht das Laden verschiedener Regelsätze erlaubt.

Danke für Ihre Hilfe.

Nicolai Fröhlich
quelle

Antworten:

4

iptables speichert die Regeln im Speicher, aber der von erstellte Regelsatziptables-save ruleset-name befindet sich in der Datei

/ var / lib / iptables / Regelsatzname

Diese können durch Aufrufen wiederhergestellt werden iptables-restore <ruleset-name>.

Ich kann dies nur für Ubuntu 12.04.03 LTS bestätigen - möglicherweise hat sich dieser Speicherort in späteren Versionen des iptables-Pakets geändert.

Ich denke, so etwas /etc/iptables/rulesets.dwäre ein logischerer Ort gewesen, um diese aufzubewahren.

Der Speicherpfad wird in /etc/init.d/iptablesZeile 27 konfiguriert und anschließend von initd_save()den Aufrufen verwendet 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 "."                                                                                                  
}          
Nicolai Fröhlich
quelle
#cat / etc / os-release NAME = "Ubuntu" VERSION = "12.04.4 LTS, präzises Pangolin" ID = ubuntu ID_LIKE = debian PRETTY_NAME = "Ubuntu präzise (12.04.4 LTS)" VERSION_ID = "12.04" # iptables- Regelsatz speichern.1 Unbekannte Argumente in der Befehlszeile gefunden Dies scheint nicht zu funktionieren
Rondo
gleiche Ausgabe hier
verbunden