¿Hay alguna forma de correr solo ahorrando con firewalld en RHEL7?

11

Estoy empezando a usar RHEL7 y aprendiendo un poco sobre los cambios que vienen con systemd.

¿Hay alguna manera de actuar /sbin/service iptables saveen 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.

El paralelo más cercano que puedo encontrar en la documentación es --reload:

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

Pero no dice explícitamente si está ahorrando o no.

Peter Souter
fuente

Respuestas:

21

La versión de firewalld en RHEL 7.0 no tiene script "guardar" y no hay forma de copiar la configuración del firewall en ejecución a la configuración permanente. Guarda un cambio de firewall con firewalld agregando --permanenta la línea de comando que realiza el cambio. Sin él, cualquier cambio que realice es temporal y se perderá cuando se reinicie el sistema.

Por ejemplo:

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

Las versiones posteriores (posteriores a RHEL 7) de firewalld incluyen una forma de guardar la configuración en ejecución, y ahora está disponible en Fedora y en RHEL 7.1 . En este caso el comando es simplemente:

firewall-cmd --runtime-to-permanent
Michael Hampton
fuente
2
Para continuar con el comentario de Michael Hampton, descubrí que tenía que reiniciar el servicio firewalld ("systemctl restart firewalld") después de ejecutar "firewall-cmd --runtime-to-permanent" para que las reglas del firewall se guarden correctamente, especialmente después de tener que eliminar algunas reglas manualmente mediante iptables. Parece que firewalld almacena algunas reglas en caché, por lo que un "firewall-cmd --reload" puede restablecer reglas de firewalld que deberían haberse eliminado mediante el comando "--runtime-to-permanent".
Antony Nguyen
2
Tenga en cuenta que el comando --runtime-to-permanent no aparece al completar la pestaña, pero de hecho, está allí (probado en un sistema CentOS 7.5).
dodexahedron
@AntonyNguyen, no deberías usar los comandos de iptables cuando firewalld administra las reglas. FIrewalld no tiene forma de conocer el cambio (necesitaría sondear periódicamente y eso mataría el rendimiento del firewall debido a su diseño, que por cierto está arreglado por nftables) use 'firewall-cmd --direct --passthrough ipv4 -A ADELANTE ... -j DROP '
AdamKalisz
0

Necesitaba agregar el servicio SIP y algunas IP

en el directorio / usr / lib / firewalld / services / agregué sip.xml basado en otros archivos de servicio xml.

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

Luego agregué servicio de sorbos a un firewalld

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

Luego agregué IP al servicio en /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>

También puede agregar LOG si agrega nivel de registro

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

después de agregar reglas a su zona, ejecute

# firewall-cmd --reload

verifique sus iptables: debería estar todo listo.

Alex N
fuente