Czy istnieje sposób, aby uruchomić po prostu zapisz z zaporą ogniową w RHEL7?

11

Zaczynam korzystać z RHEL7 i dowiaduję się trochę o zmianach związanych z systememd.

Czy istnieje sposób działania /sbin/service iptables savew zaporze ogniowej?

$ /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

Najbliższa równoległość, jaką mogę znaleźć w Dokumentacji, to --reload:

Reload the firewall without loosing state information:
$ firewall-cmd --reload

Ale nie mówi wprost, czy oszczędza, czy nie.

Peter Souter
źródło

Odpowiedzi:

21

Wersja zapory ogniowej w RHEL 7.0 nie ma skryptu „zapisz” i nie ma możliwości skopiowania działającej konfiguracji zapory do konfiguracji stałej. Zapisujesz zmianę zapory ogniowej za pomocą zapory ogniowej, dodając --permanentją do wiersza poleceń. Bez tego każda wprowadzona zmiana będzie tymczasowa i zostanie utracona po ponownym uruchomieniu systemu.

Na przykład:

firewall-cmd --add-service=http                 # Running config
firewall-cmd --add-service=http --permanent     # Startup config

Późniejsze (po wersji RHEL 7) zapory ogniowe zawierają sposób na zapisanie działającej konfiguracji, która jest teraz dostępna w Fedorze i RHEL 7.1 . W takim przypadku polecenie jest po prostu:

firewall-cmd --runtime-to-permanent
Michael Hampton
źródło
2
Aby kontynuować komentarz Michaela Hamptona, stwierdziłem, że musiałem zrestartować usługę firewalld („systemctl restart firewalld”) po uruchomieniu „firewall-cmd --runtime-to-permanent”, aby reguły zapory zostały poprawnie zapisane, szczególnie po konieczności ręcznego usunięcia niektórych reguł za pomocą iptables. Wygląda na to, że firewalld buforuje niektóre reguły, więc „firewall-cmd --reload” może ponownie ustanowić reguły z firewalld, które powinny zostać usunięte za pomocą polecenia „--runtime-to-permanent”.
Antony Nguyen,
2
Zauważ, że polecenie --runtime-to-permanent nie pojawia się po zakończeniu tabulacji, ale tak naprawdę jest (testowane w systemie CentOS 7.5).
dodexahedron
@AntonyNguyen nie powinieneś używać poleceń iptables, gdy firewalld zarządza regułami. FIrewalld nie ma możliwości dowiedzenia się o zmianie (musiałby okresowo odpytywać, co zabiłoby działanie zapory ogniowej ze względu na jej konstrukcję, która została naprawiona przez nftables). Użyj 'firewall-cmd --direct --passthrough ipv4 -A DO PRZODU ... -j DROP '
AdamKalisz
0

Musiałem dodać usługę SIP i niektóre adresy IP

w katalogu / usr / lib / firewalld / services / dodałem sip.xml na podstawie innych plików usługi xml.

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SIP</short>
  <description>This is SIP, Yo! </description>
  <port protocol="udp" port="5060"/>
</service>

Następnie dodałem usługę SIP do zapory ogniowej

# firewall-cmd --add-service=sip --permanent 

Następnie dodałem adresy IP do usługi w /etc/firewalld/zones/public.xml

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description></description>
  <service name="dhcpv6-client"/>
  <service name="http"/>
  <service name="ssh"/>
  <service name="https"/>

  <rule family="ipv4">
    <source address="x.x.x.x/32"/>
    <service name="sip"/>
    <accept/>
  </rule>

</zone>

możesz także dodać LOG, jeśli dodasz poziom rejestrowania

  <rule family="ipv4">
    <source address="x.x.x.x/32"/>
    <service name="sip" 
    <log prefix="sip" level="info"/>
    <accept/>
  </rule>

po dodaniu reguł do strefy uruchom

# firewall-cmd --reload

sprawdź swoje iptables - wszystko powinno być gotowe.

Alex N.
źródło