การติดตั้ง 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