มีวิธีการทำงานเพียงบันทึกด้วย firewalld ใน RHEL7 หรือไม่


11

ฉันเริ่มใช้ RHEL7 และเรียนรู้เล็กน้อยเกี่ยวกับการเปลี่ยนแปลงที่มาพร้อมกับ systemd

มีวิธีดำเนินการ/sbin/service iptables saveในไฟร์วอลล์หรือไม่

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

ไฟร์วอลล์รุ่นที่ใหม่กว่า (โพสต์ - RHEL 7) มีวิธีบันทึกการกำหนดค่าที่กำลังทำงานอยู่และตอนนี้มีให้ใน Fedora และRHEL 7.1แล้ว ในกรณีนี้คำสั่งคือ:

firewall-cmd --runtime-to-permanent

2
เพื่อแสดงความคิดเห็นต่อ Michael Hampton ฉันพบว่าฉันต้องเริ่มบริการ firewalld ใหม่ ("systemctl restart firewalld") หลังจากใช้งาน "firewall-cmd --runtime-to-ถาวร" เพื่อให้กฎไฟร์วอลล์ถูกบันทึกอย่างถูกต้องโดยเฉพาะ หลังจากต้องลบกฎบางอย่างด้วยตนเองผ่าน iptables ดูเหมือน firewalld จะแคชกฎบางอย่างดังนั้น "firewall-cmd --reload" อาจทำการจัดระเบียบกฎใหม่จาก firewalld ซึ่งควรถูกลบผ่านคำสั่ง "--runtime-to-ถาวร"
Antony Nguyen

2
โปรดทราบว่าคำสั่ง --runtime-to-Permanent ไม่ปรากฏขึ้นในความสมบูรณ์ของแท็บ แต่ที่จริงแล้วมี (ทดสอบในระบบ CentOS 7.5)
dodexahedron

@AntonyNguyen คุณไม่ควรใช้คำสั่ง iptables เมื่อ firewalld กำลังจัดการกฎ FIrewalld ไม่มีทางรู้การเปลี่ยนแปลง (มันจะต้องสำรวจความคิดเห็นเป็นระยะ ๆ และจะฆ่าประสิทธิภาพของไฟร์วอลล์เนื่องจากการออกแบบซึ่ง btw. ได้รับการแก้ไขโดย nftables) ใช้ 'firewall-cmd --direct --passthrough ipv4 - ไปข้างหน้า ... -j DROP '
AdamKalisz

0

ฉันต้องการเพิ่มบริการ SIP และ IP บางตัว

ในไดเร็กทอรี / usr / lib / firewalld / services / I เพิ่ม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>

คุณยังสามารถเพิ่มบันทึกได้หากคุณเพิ่มระดับการบันทึก

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

หลังจากคุณเพิ่มกฎในโซนของคุณแล้วให้ดำเนินการ

# firewall-cmd --reload

ตรวจสอบ iptables ของคุณ - คุณควรจะตั้งค่าทั้งหมด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.