Tuesday, March 11, 2025

จัดการ iRedmail Firewall ที่มาครอบ Firewalld (firewall-cmd)

 การติดตั้ง iRedmail เวอร์ชั่นหลัง ๆ หากเราเลือกให้ใช้ iRedmail firewall แทน firewalld ที่มากับระบบลีนุกส์เช่น CentOS, Ubuntu การปรับแต่ง Firewall rule เช่น การ add port, server ด้วยคำสั่ง firewall-cmd มักไม่มีปัญหา

คำสั่งเพิ่ม Ip Public เพื่อมาคุยกับ port 25

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="202.210.110.10/32" port port=25 protocol=tcp accept'

วันนี้ใช้ firewall-cmd add rule ที่เกี่ยวกับ IP Addr (Internal/Public) เพื่อมาคุยกับ port 25 พบว่า หลังจากแอดกฎได้แล้ว เมื่อทำการลบกฎทิ้งจะรัน firewall-cmd --reload เพื่อบันทึกไม่ได้ 


การจัดการ Firewall บน Mail Server ที่ใช้ iRedMail ควรเน้นไปที่การแก้ไขไฟล์ /etc/firewalld/zones/iredmail.xml โดยตรง หลีกเลี่ยงการใช้ Rich Rules ร่วมกับ Ipset และทำความเข้าใจโครงสร้าง Firewall ของ iRedMail อย่างละเอียด

ให้เข้าไปจัดการในไฟล์ iredmail.xml

//--iredmail.xml--//

[root@mx ~]# vim /etc/firewalld/zones/iredmail.xml

<?xml version="1.0" encoding="utf-8"?>

<zone>

  <short>Mail services</short>

  <description>Allow access to mail services from external network.</description>

  <service name="http"/>

  <service name="https"/>

  <service name="smtp-submission"/>

  <service name="pop3"/>

  <service name="pop3s"/>

  <service name="imap"/>

  <service name="imaps"/>

  <service name="ssh"/>

  <port port="465" protocol="tcp"/>

  <rule family="ipv4">

    <source address="192.168.20.154/32"/>

    <port port="25" protocol="tcp"/>

    <accept/>

  </rule>

  <rule family="ipv4">

    <source ipset="my_ip_rf_set"/>

    <port port="25" protocol="tcp"/>

    <accept/>

  </rule>

  <rule family="ipv4">

    <source ipset="orisma"/>

    <port port="25" protocol="tcp"/>

    <accept/>

  </rule>

  <rule family="ipv4">

    <source address="202.210.110.10/32"/>

    <port port="25" protocol="tcp"/>

    <accept/>

  </rule>

</zone>

//--end--//

: เพื่อบันทึก


firewall-cmd --reload


//-------check firewalld rules ----------//

#firewall-cmd --list-all

iredmail (active)

  target: default

  icmp-block-inversion: no

  interfaces: ens192 ens224

  sources:

  services: http https imap imaps pop3 pop3s smtp-submission ssh

  ports: 465/tcp

  protocols:

  forward: no

  masquerade: no

  forward-ports:

  source-ports:

  icmp-blocks:

  rich rules:

        rule family="ipv4" source address="202.210.110.10/32" port port="25" protocol="tcp" accept

        rule family="ipv4" source address="192.168.20.154/32" port port="25" protocol="tcp" accept

#firewall-cmd --permanent --list-all

iredmail

  target: default

  icmp-block-inversion: no

  interfaces:

  sources:

  services: http https imap imaps pop3 pop3s smtp-submission ssh

  ports: 465/tcp

  protocols:

  forward: no

  masquerade: no

  forward-ports:

  source-ports:

  icmp-blocks:

  rich rules:

        rule family="ipv4" source address="192.168.20.154/32" port port="25" protocol="tcp" accept

        rule family="ipv4" source address="202.210.110.10/32" port port="25" protocol="tcp" accept

# firewall-cmd --list-all --zone=iredmail

iredmail (active)

  target: default

  icmp-block-inversion: no

  interfaces: ens192 ens224

  sources:

  services: http https imap imaps pop3 pop3s smtp-submission ssh

  ports: 465/tcp

  protocols:

  forward: no

  masquerade: no

  forward-ports:

  source-ports:

  icmp-blocks:

  rich rules:

        rule family="ipv4" source address="202.210.110.10/32" port port="25" protocol="tcp" accept

        rule family="ipv4" source address="192.168.20.154/32" port port="25" protocol="tcp" accept

No comments: