Чи є спосіб запустити просто зберегти за допомогою firewalld в RHEL7?


11

Я починаю користуватися RHEL7 і дізнаюся трохи про зміни, які відбуваються із системою.

Чи є спосіб виступити /sbin/service iptables saveв 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.

Найближча паралель, яку я можу знайти з Документації --reload:

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

Але він прямо не говорить, економить чи ні.

Відповіді:


21

Версія firewalld в RHEL 7.0 не має сценарію "збереження" і жодного способу скопіювати працюючу конфігурацію брандмауера у постійну конфігурацію. Ви зберігаєте зміну брандмауера за допомогою firewalld, додаючи --permanentв командний рядок внесення змін. Без цього будь-які внесені вами зміни є тимчасовими та втрачаються при перезапуску системи.

Наприклад:

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

Пізніші (post-RHEL 7) версії firewalld включають спосіб збереження запущеної конфігурації, і це тепер доступно у Fedora та RHEL 7.1 . У цьому випадку команда проста:

firewall-cmd --runtime-to-permanent

2
Щоб продовжити коментар Майкла Гемптона, я виявив, що мені довелося перезапустити службу firewalld ("systemctl перезапустити firewalld") після запуску "firewall-cmd - time-time-to permanent", щоб правила брандмауера були збережені правильно, особливо після видалення деяких правил вручну через iptables. Здається, firewalld кешує деякі правила, тому "firewall-cmd --reload" може повторно встановити правила з firewalld, які повинні були бути видалені за допомогою команди "--runtime to permanent".
Антоні Нгуєн

2
Зауважте, що команда --runtime to permanent - не відображається при завершенні вкладки, але насправді вона є (протестована в системі CentOS 7.5).
додексаедр

@AntonyNguyen не слід використовувати команди iptables, коли firewalld керує правилами. FIrewalld не має можливості знати про зміни (потрібно було б періодично опитуватись, і це призведе до знищення продуктивності брандмауера через його дизайн, який Btw фіксується nftables) використовувати 'firewall-cmd --direct --passthrough ipv4 -А Вперед ... -j
ДРОП

0

Мені потрібно було додати службу SIP та деякі IP-адреси

у каталог / usr / lib / firewalld / services / Я додав sip.xml на основі інших файлів служб xml.

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

Потім я додав службу sip до firewalld

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

Потім я додав IP-адреси до сервісу в /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>

Ви також можете додати LOG, якщо ви додасте рівень журналу

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

після додавання правил до зони, виконайте виконання

# firewall-cmd --reload

перевірити свої iptables - у вас все повинно бути налаштовано.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.