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)。firewalld 和 ufw 会自动持久化。
  • 千万别在远程连接中关闭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
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意