配置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邮件服务器配置安全、有效的防火墙规则,保护服务器免受非法访问。