Gdzie są przechowywane zestawy reguł iptables na Ubuntu 12.04?

8

Ubuntu 12.04 LTS - iptables v1.4.12

TLDR:

Gdzie są zapisywane zestawy reguł iptables podczas wywoływania iptables-save <ruleset-name>?

Objaśnienie :

Zgodnie z tą odpowiedzią przywołuje się podstawowy sposób zapisywania reguł iptables

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

a następnie ładowanie / przywracanie tych zasad, /etc/network/interfacestakich jak:

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

... lub umieszczając je w skrypcie powłoki /etc/network/if-pre-up.d.


Można to uprościć, instalując iptables-persistentpakiet.

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

Po kilku samouczkach próbowałem wywołać service iptables status(nieistniejące / nieznane polecenie dla iptableswersji / pakietu, które jest wstępnie zainstalowane z 12.04) i znalazłem to interesujące wyjście:

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

Wydaje się, że istnieją dwa zestawy reguł, które mogę załadować ( activei inactive) ...

.. ale gdzie są one przechowywane ?

Nie mogę znaleźć ich lokalizacji, ponieważ aktywne / nieaktywne są dość złymi wyszukiwanymi hasłami i dpkg-query -L iptablesteż nie pomaga.

Ponieważ udostępniam moim serwerom puppet/ chefmiło byłoby wiedzieć, że jest miejsce, w którym mogę umieścić moje zestawy reguł i dodać prosty skrypt powłoki, aby /etc/networking/if-pre-upje załadować.

Następnie mógłbym pominąć iptables-persistentpakiet, który nie jest tak elastyczny, ponieważ nie pozwala na ładowanie różnych zestawów reguł.

Dzięki za pomoc.

Nicolai Fröhlich
źródło

Odpowiedzi:

4

iptables przechowuje reguły w pamięci, ale zestaw reguł utworzony przez iptables-save ruleset-namemożna znaleźć w pliku

/ var / lib / iptables / rulesset-name

Można je przywrócić, wywołując iptables-restore <ruleset-name>.

Mogę to tylko potwierdzić dla Ubuntu 12.04.03 LTS - być może ta lokalizacja zmieniła się w późniejszych wersjach pakietu iptables.

Myślę, że coś takiego /etc/iptables/rulesets.dbyłoby bardziej logicznym miejscem do ich przechowywania.

Ścieżka zapisu jest konfigurowana w /etc/init.d/iptableslinii 27, a następnie używana przez, initd_save()która wywołuje 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
źródło
#cat / etc / os-release NAME = „Ubuntu” VERSION = „12.04.4 LTS, Precise Pangolin” ID = ubuntu ID_LIKE = debian PRETTY_NAME = „Ubuntu precyzyjny (12.04.4 LTS)” VERSION_ID = „12.04” # iptables- zapisz zestaw reguł.1 W wierszu poleceń znaleziono nieznane argumenty To nie wydaje się działać
Rondo
ten sam problem tutaj
połączenia