Linux 防火墙配置错误,端口被恶意扫描

Linux防火墙配置错误导致端口被恶意扫描?这份排查与加固指南请收好

刚接触Linux服务器运维的朋友,常常会遇到一个棘手的问题:明明装了防火墙,服务器端口还是被公网扫描器频繁探测。
很多时候,这并不是防火墙没装,而是配置不合理,导致端口裸奔。
本文将带你从零开始,检查并修复常见的Linux防火墙配置错误,有效防御恶意端口扫描。

准备工作:先摸清底牌

在动手修改防火墙之前,先确认两件事:

  • 防火墙工具是哪款?主流Linux发行版常用 iptables(传统)或 firewalld(新版CentOS/RHEL 7+),Ubuntu也支持 ufw
  • 当前正在监听哪些端口?运行以下命令查看系统监听端口:
ss -tlnp

或(老系统用)

netstat -tlnp

重点关注 0.0.0.0:端口:::端口 的条目,表示该端口对所有IP开放。如果这些端口在防火墙规则中没有限制来源IP,就相当于对公网裸奔

第一步:检查当前防火墙规则是否出错了

使用 firewalld(CentOS/RHEL 8+)

sudo firewall-cmd --list-all

输出会包含 ports:services: 等行。
例如看到 ports: 3306/tcp,表示MySQL端口已开放。如果本应只允许内网访问的端口出现在这里,就是配置错误

使用 iptables(传统)

sudo iptables -L -n --line-numbers

检查 Chain INPUT 下是否有允许所有来源访问目标端口的规则,例如:

ACCEPT     tcp  --  0.0.0.0/0   0.0.0.0/0   tcp dpt:22

这样的规则意味着任何人都能访问SSH端口,非常危险。

使用 ufw(Ubuntu)

sudo ufw status numbered

查看是否开放了不必要的端口。

第二步:修复配置错误,精准放行必要端口

修复原则:只允许必要的来源IP访问特定端口,其他一律拒绝

场景1:仅允许内网访问MySQL(3306)

  • firewalld
sudo firewall-cmd --permanent --zone=internal --add-source=192.168.1.0/24
sudo firewall-cmd --permanent --zone=internal --add-port=3306/tcp
sudo firewall-cmd --reload
  • iptables
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -j DROP
  • ufw
sudo ufw allow from 192.168.1.0/24 to any port 3306
sudo ufw deny 3306  # 注意顺序:先允许,后拒绝(ufw默认按顺序处理)

场景2:删除冗余的对外开放规则

  • firewalld:移除端口
sudo firewall-cmd --permanent --remove-port=3306/tcp
sudo firewall-cmd --reload
  • iptables:删掉对应行(先用 iptables -L -n --line-numbers 找到行号)
sudo iptables -D INPUT 行号
  • ufw:删除规则编号(通过 sudo ufw status numbered 查看)
sudo ufw delete 编号

第三步:验证修复效果,确认扫描已失效

  1. 查看新规则:重复第一步的命令,确认不必要的端口已关闭,或者来源IP已限制。
  2. 主动扫描测试:在另一台机器或使用在线端口扫描工具(如 [yougetsignal.com/tools/open-ports]())扫描服务器公网IP。之前开放的端口现在应显示“closed”或“filtered”,而非“open”
  3. 查看系统日志:检查是否有来自恶意扫描的拒绝记录。
sudo journalctl -u firewalld | grep -i denied
sudo tail -f /var/log/messages | grep -i drop

如果看到大量 DROP 条目,说明防火墙已经生效,恶意扫描被拒绝。

避坑指南

  • 别忘记保存规则iptables 规则重启后失效,需执行 sudo iptables-save > /etc/iptables/rules.v4(Ubuntu)或 sudo service iptables save(CentOS 6)。firewalldufw 会自动持久化。
  • 千万别在远程连接中关闭SSH端口:如果错误地封掉了自己的SSH端口(22),将无法再远程登录。建议先加一条允许自己IP的规则,或用 screen 等工具保留回退路径。
  • 内网服务不要在公网防火墙放行:数据库、Redis等内部组件,永远只绑定内网IP或通过防火墙限制来源IP。使用 ss -tlnp 核对监听地址是否为 127.0.0.1 或内网地址。
  • 默认规则策略iptables 默认策略建议设为 DROP(丢弃),只放行明确允许的流量。修改默认策略:sudo iptables -P INPUT DROP,但执行前确保已放行SSH。

高频问题解答

Q: 为什么我关掉了端口,扫描器仍然显示开放?
A: 可能原因:1) 防火墙未重载配置;2) 服务本身监听在 0.0.0.0,但防火墙规则没有生效;3) 云服务商的安全组开放了该端口,需同步检查云平台控制台。

Q: firewalld 和 iptables 能同时用吗?
A: 不建议。二选一,否则规则会混乱。新系统优先用 firewalld,更友好。

Q: 如何临时关闭防火墙应急?
A: sudo systemctl stop firewalld(firewalld)或 sudo iptables -P INPUT ACCEPT(iptables),但记得事后恢复。

总结

Linux防火墙配置错误是端口被恶意扫描的头号原因。
通过本文的步骤,你可以快速定位并修复常见错误:检查规则 → 精确放行 → 验证 → 持久化。
记住:最小权限原则 + 默认拒绝 + 内网隔离,能大幅降低服务器暴露风险。
如果你在处理类似问题,建议按顺序执行一遍,遇到异常优先回看避坑部分。
安全加固不是一次性的,定期审查规则同样重要。

分享到:
上一篇
用 AI 写 Python 脚本,导致服务器被封禁
下一篇
宝塔面板安装失败?多半是这几个坑
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意