Apakah ada cara untuk menjalankan simpan dengan firewalld di RHEL7?

11

Saya mulai menggunakan RHEL7 dan belajar sedikit tentang perubahan yang datang dengan systemd.

Apakah ada cara untuk tampil /sbin/service iptables savedi 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.

Paralel terdekat yang dapat saya temukan dari Dokumentasi adalah --reload:

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

Tapi itu tidak secara eksplisit mengatakan apakah itu menabung atau tidak.

Peter Souter
sumber

Jawaban:

21

Versi firewalld di RHEL 7.0 tidak memiliki skrip "save" dan tidak ada cara untuk menyalin konfigurasi firewall yang sedang berjalan ke konfigurasi permanen. Anda menyimpan perubahan firewall dengan firewalld dengan menambahkan --permanentke baris perintah membuat perubahan. Tanpa itu, perubahan apa pun yang Anda buat bersifat sementara dan akan hilang ketika sistem restart.

Sebagai contoh:

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

Versi firewalld (pasca-RHEL 7) kemudian menyertakan cara untuk menyimpan konfigurasi yang sedang berjalan, dan ini tersedia sekarang di Fedora dan di RHEL 7.1 . Dalam hal ini perintahnya sederhana:

firewall-cmd --runtime-to-permanent
Michael Hampton
sumber
2
Untuk melanjutkan komentar Michael Hampton, saya menemukan bahwa saya harus me-restart layanan firewalld ("systemctl restart firewalld") setelah menjalankan "firewall-cmd --runtime-to-permanent" agar aturan firewall dapat disimpan dengan benar, terutama setelah harus menghapus beberapa aturan secara manual melalui iptables. Tampaknya firewalld mem-cache beberapa aturan, sehingga "firewall-cmd --muat ulang" dapat melembagakan kembali aturan dari firewalld yang seharusnya dihapus melalui perintah "--runtime-to-permanent".
Antony Nguyen
2
Perhatikan bahwa perintah --runtime-to-permanent tidak muncul dalam penyelesaian tab, tetapi sebenarnya ada (diuji pada sistem CentOS 7.5).
dodexahedron
@AntonyNguyen Anda seharusnya tidak menggunakan perintah iptables ketika firewalld mengelola aturan. FIrewalld tidak memiliki cara untuk mengetahui perubahan tersebut (perlu melakukan polling secara berkala dan itu akan mematikan kinerja firewall karena desainnya, yang keduanya diperbaiki oleh nftables) menggunakan 'firewall-cmd --direct --passthrough ipv4
-SANGSANG ... -J
0

Saya perlu menambahkan layanan SIP dan beberapa IP

di direktori / usr / lib / firewalld / services / saya menambahkan sip.xml berdasarkan file layanan xml lainnya.

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

Kemudian saya menambahkan layanan sip ke firewalld

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

Kemudian saya menambahkan IP ke layanan di /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>

Anda juga dapat menambahkan LOG jika Anda menambahkan level pencatatan

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

setelah Anda menambahkan aturan ke zona Anda, jalankan

# firewall-cmd --reload

periksa iptables Anda - Anda harus siap.

Alex N
sumber