Debian系统中,UFW(Uncomplicated Firewall) 是推荐的轻量级防火墙工具(基于iptables封装,简化操作),而iptables 则提供更底层的网络包过滤功能。以下是两者的详细配置步骤及注意事项:
UFW的设计目标是“简单易用”,适合大多数日常场景(如家庭服务器、小型网站)。
sudo apt update && sudo apt install ufw
sudo ufw enable
系统会提示“Command may disrupt existing ssh connections”,输入 y 确认(若已通过SSH连接,UFW会自动允许SSH端口,无需担心断开)。
设置默认拒绝所有入站连接(防止未授权访问),允许所有出站连接(保障服务器正常访问外网):
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3306/tcp
sudo ufw allow from 192.168.1.100
sudo ufw deny from 192.168.1.101
sudo ufw allow from 192.168.1.100 to any port 22
sudo ufw status
sudo ufw status verbose
sudo ufw delete allow 22/tcp
sudo ufw reload
日志可帮助排查防火墙拦截的问题(如误拦截正常访问):
sudo ufw logging on
日志默认存储在 /var/log/ufw.log。
iptables是Linux内核自带的防火墙工具,功能强大但配置复杂,适合需要精细控制流量的场景(如企业级服务器)。
sudo apt update && sudo apt install iptables
编辑规则文件(避免直接操作命令行,防止误操作):
sudo nano /etc/iptables.rules
添加以下内容(示例:允许SSH、HTTP、HTTPS、ICMP(ping),拒绝其他入站):
*filter
# 允许本地回环接口(本地服务通信)
-A INPUT -i lo -j ACCEPT
# 允许已建立的连接和相关的流量(如SSH反向隧道)
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许所有出站流量
-A OUTPUT -j ACCEPT
# 允许SSH(端口22)
-A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP(端口80)
-A INPUT -p tcp --dport 80 -j ACCEPT
# 允许HTTPS(端口443)
-A INPUT -p tcp --dport 443 -j ACCEPT
# 允许ping(ICMP类型8:echo请求)
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# 拒绝所有其他入站流量
-A INPUT -j REJECT --reject-with icmp-host-prohibited
# 拒绝所有转发流量(若服务器不作为路由器)
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
保存并退出(Ctrl+O→Enter→Ctrl+X)。
sudo iptables-restore < /etc/iptables.rules
创建启动脚本,确保系统重启后规则依然生效:
sudo nano /etc/network/if-pre-up.d/iptables
添加以下内容:
#!/bin/sh
/sbin/iptables-restore < /etc/iptables.rules
赋予执行权限:
sudo chmod +x /etc/network/if-pre-up.d/iptables
sudo iptables-save > /etc/iptables.rules
sudo iptables-restore < /path/to/backup.rules
sudo cp /etc/iptables.rules /etc/iptables.rules.bak),避免配置错误导致无法访问。通过以上步骤,你可根据需求选择UFW或iptables配置Debian防火墙,有效保护服务器免受非法访问。