配置Debian郵件服務器的防火墻是保障郵件服務安全的關鍵步驟,需根據使用的防火墻工具(如ufw、iptables、firewalld)調整規則,確保郵件傳輸、遠程管理等必要流量通過,同時阻止非法訪問。
ufw(Uncomplicated Firewall)是Debian默認的簡化防火墻工具,適合新手快速配置。
sudo apt update
sudo apt install ufw
sudo ufw enable # 啟用ufw(默認拒絕所有入站流量)
郵件服務器需開放以下端口:
sudo ufw allow ssh
sudo ufw allow 25/tcp # SMTP
sudo ufw allow 465/tcp # SMTPS
sudo ufw allow 143/tcp # IMAP
sudo ufw allow 993/tcp # IMAPS
sudo ufw allow 110/tcp # POP3
sudo ufw allow 995/tcp # POP3S
sudo ufw allow dns
sudo ufw allow http
sudo ufw allow https # 可選
sudo ufw default deny incoming # 拒絕所有未明確允許的入站流量
sudo ufw default allow outgoing # 允許所有出站流量(可選,根據需求調整)
sudo ufw status verbose # 查看當前規則(顯示詳細信息)
ufw規則修改后會自動保存,無需額外操作。若需重載規則:
sudo ufw reload
iptables是Linux內核級防火墻工具,適合需要精細控制的場景。
sudo apt update
sudo apt install iptables
編輯/etc/iptables.rules文件(若不存在則創建),添加以下內容:
*filter
:INPUT ACCEPT [0:0] # 初始化INPUT鏈(允許所有輸入,后續規則覆蓋)
:FORWARD ACCEPT [0:0] # 初始化FORWARD鏈(允許轉發)
:OUTPUT ACCEPT [0:0] # 初始化OUTPUT鏈(允許所有輸出)
# 允許已建立的連接和回環接口
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT
# 允許必要端口
-A INPUT -p tcp --dport 22 -j ACCEPT # SSH
-A INPUT -p tcp --dport 25 -j ACCEPT # SMTP
-A INPUT -p tcp --dport 465 -j ACCEPT # SMTPS
-A INPUT -p tcp --dport 143 -j ACCEPT # IMAP
-A INPUT -p tcp --dport 993 -j ACCEPT # IMAPS
-A INPUT -p tcp --dport 110 -j ACCEPT # POP3
-A INPUT -p tcp --dport 995 -j ACCEPT # POP3S
-A INPUT -p tcp --dport 53 -j ACCEPT # DNS
-A INPUT -p udp --dport 53 -j ACCEPT # DNS
# 記錄被拒絕的流量(便于排查)
-A INPUT -j LOG --log-prefix "iptables denied: " --log-level 4
# 拒絕所有其他入站流量
-A INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
sudo iptables-save > /etc/iptables.rules # 保存規則到文件
sudo iptables-restore < /etc/iptables.rules # 加載規則
創建啟動腳本/etc/network/if-pre-up.d/iptables:
sudo sh -c 'echo "/sbin/iptables-restore < /etc/iptables.rules" > /etc/network/if-pre-up.d/iptables'
sudo chmod +x /etc/network/if-pre-up.d/iptables # 賦予執行權限
重啟網絡服務使設置生效:
sudo systemctl restart networking
firewalld是動態防火墻管理工具,支持區域和服務的概念,適合需要頻繁調整規則的場景。
sudo apt update
sudo apt install firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --add-service=ssh # 允許SSH
sudo firewall-cmd --permanent --add-port=25/tcp # 允許SMTP
sudo firewall-cmd --permanent --add-port=465/tcp # 允許SMTPS
sudo firewall-cmd --permanent --add-port=143/tcp # 允許IMAP
sudo firewall-cmd --permanent --add-port=993/tcp # 允許IMAPS
sudo firewall-cmd --permanent --add-port=110/tcp # 允許POP3
sudo firewall-cmd --permanent --add-port=995/tcp # 允許POP3S
sudo firewall-cmd --permanent --add-service=dns # 允許DNS
sudo firewall-cmd --permanent --add-service=http # 可選:允許HTTP
sudo firewall-cmd --permanent --add-service=https # 可選:允許HTTPS
# 重新加載規則使更改生效
sudo firewall-cmd --reload
編輯/etc/firewalld/zones/public.xml(默認區域),添加以下內容:
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>Public Zone</description>
<service name="ssh"/>
<port protocol="tcp" port="25"/>
<port protocol="tcp" port="465"/>
<port protocol="tcp" port="143"/>
<port protocol="tcp" port="993"/>
<port protocol="tcp" port="110"/>
<port protocol="tcp" port="995"/>
<service name="dns"/>
<service name="http"/>
<service name="https"/>
</zone>
重新加載firewalld:
sudo firewall-cmd --reload
sudo firewall-cmd --list-all # 查看當前區域的規則
/etc/iptables.rules、/etc/firewalld/zones),避免誤操作導致服務器無法訪問。--source參數限制特定IP訪問(如僅允許公司IP訪問SSH):sudo ufw allow from 192.168.1.0/24 to any port 22 # ufw示例
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept' # firewalld示例
verbose模式、iptables的LOG規則),及時發現異常流量。通過以上步驟,可為Debian郵件服務器配置安全、有效的防火墻規則,保護服務器免受非法訪問。