C'è un modo per eseguire solo salvare con firewalld in RHEL7?


11

Sto iniziando a utilizzare RHEL7 e sto imparando qualcosa sui cambiamenti che derivano da systemd.

C'è un modo per esibirsi /sbin/service iptables savein firewalld?

$ /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.

Il parallelo più vicino che posso trovare dalla documentazione è --reload:

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

Ma non dice esplicitamente se sta salvando o meno.

Risposte:


21

La versione di firewalld in RHEL 7.0 non ha script "salva" e non è possibile copiare la configurazione del firewall in esecuzione nella configurazione permanente. Si salva una modifica del firewall con firewalld aggiungendo --permanentalla riga di comando apportando la modifica. Senza di essa, qualsiasi modifica apportata è temporanea e andrà persa al riavvio del sistema.

Per esempio:

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

Le versioni successive (post-RHEL 7) di firewalld includono un modo per salvare la configurazione in esecuzione, e questo è ora disponibile in Fedora e in RHEL 7.1 . In questo caso il comando è semplicemente:

firewall-cmd --runtime-to-permanent

2
Per continuare sul commento di Michael Hampton, ho scoperto che dovevo riavviare il servizio firewalld ("systemctl restart firewalld") dopo aver eseguito "firewall-cmd - runtime-to-permanent" per salvare correttamente le regole del firewall, in particolare dopo aver rimosso alcune regole manualmente tramite iptables. Sembra che firewalld memorizzi nella cache alcune regole, quindi un "firewall-cmd --reload" potrebbe reintegrare le regole da firewalld che avrebbero dovuto essere rimosse tramite il comando "--runtime-to-permanent".
Antony Nguyen,

2
Si noti che il comando --runtime-to-permanent non viene visualizzato al completamento della scheda, ma è effettivamente lì (testato su un sistema CentOS 7.5).
dodexahedron,

@AntonyNguyen non dovresti usare i comandi iptables quando firewalld gestisce le regole. FIrewalld non ha modo di conoscere il cambiamento (avrebbe bisogno di effettuare il polling periodico e questo ucciderebbe le prestazioni del firewall a causa del suo design, che tra l'altro è riparato da nftables) usa 'firewall-cmd --direct --passthrough ipv4 -A AVANTI ... -j DROP '
AdamKalisz,

0

Avevo bisogno di aggiungere il servizio SIP e alcuni IP

nella directory / usr / lib / firewalld / services / ho aggiunto sip.xml in base ad altri file di servizio xml.

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

Quindi ho aggiunto il servizio SIP a un firewalld

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

Quindi ho aggiunto gli IP al servizio in /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>

è inoltre possibile aggiungere LOG se si aggiunge il livello di registrazione

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

dopo aver aggiunto le regole alla tua zona, esegui

# firewall-cmd --reload

controlla il tuo iptables - dovresti essere pronto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.