服务器防火墙拦截恶意扫描:新手配置实操指南

开头:恶意扫描不是小事,学会防火墙拦截是关键

如果你的服务器突然变慢、日志里出现大量重复IP尝试登录SSH,或者被安全厂商告知“存在被扫描风险”,那你需要立刻配置服务器防火墙拦截恶意扫描。
本文分三套方案(iptables、fail2ban、宝塔面板),从零开始,让你亲手关上门。

准备条件:开始前先确认三件事

  • 你有服务器的 root 权限 或能使用 sudo。
  • 系统为 Linux(以 CentOS 7/8、Ubuntu 20.04 为例)。
  • 如果你用宝塔面板,确保已安装 Nginx 或 Apache(防火墙功能需面板支持)。

方案一:用 iptables 手动封 IP(适合临时且精准)

iptables 是 Linux 自带防火墙,直接操作内核过滤包。
以下命令需谨慎,建议先备份当前规则:

# 保存现有规则(CentOS)
iptables-save > /root/iptables.rules.bak
# Ubuntu 使用 iptables-persistent 或 netfilter-persistent

1. 查看当前有哪些恶意 IP

先通过 lastb 或 journalctl 筛选出尝试登录失败的 IP:

lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head -10

把排名靠前且不认识的 IP 记下来。

2. 用 iptables 阻止单个 IP

iptables -A INPUT -s 192.168.1.100 -j DROP

替换 192.168.1.100 为实际恶意 IP。
这条规则会丢弃来自该 IP 的所有数据包。

3. 限制对 SSH 端口的尝试频率(防暴力扫描)

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

效果:同一 IP 在 60 秒内建立超过 4 次 SSH 新连接,后续连接会被丢弃。

4. 保存规则使其重启生效

CentOS 7:service iptables save(需安装 iptables-services)
Ubuntu:iptables-save > /etc/iptables/rules.v4

方案二:fail2ban——自动拦截、省心省力

fail2ban 会扫描日志文件,把尝试多次失败的 IP 自动加入防火墙黑名单。

安装与配置

# CentOS
yum install epel-release -y && yum install fail2ban -y
# Ubuntu
apt update && apt install fail2ban -y

创建本地配置文件 /etc/fail2ban/jail.local:

[DEFAULT]
bantime  = 3600         # 封禁1小时
findtime  = 600         # 检测10分钟内的失败次数
maxretry = 3            # 超过3次就封

[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s

启动并验证

systemctl enable fail2ban --now
fail2ban-client status sshd

你会看到被封的 IP 列表。
如果想手动解封某个 IP:fail2ban-client set sshd unbanip 192.168.1.100。

方案三:宝塔面板防火墙(适合不会命令行的用户)

登录宝塔后台 -> 点击左侧“安全” -> 在“防火墙”标签下:

  • 放行端口:确保 80、443 等业务端口已放行。
  • 屏蔽 IP:点击“添加规则”,选择“屏蔽”,填入恶意 IP。
  • 使用“CC防御”:可在“网站” -> 对应站点 -> “高级设置”中开启防 CC,限制单 IP 连接数。

宝塔面板会帮你自动调用 iptables,无需手动输入命令。

避坑指南:新手最容易翻车的三个地方

  1. 把自己封在外面:操作 iptables 前,先用 iptables -P INPUT ACCEPT 设默认允许,配置完成后再改回 DROP。更安全:先开一个 SSH 会话做探测,不要关闭当前连接。
  2. fail2ban 没有生效:检查日志路径是否正确(用 fail2ban-client status sshd 看 Currently failed 数量是否为 0),如果系统使用 Journald 日志,需按官方文档调整 logpath。
  3. 宝塔防火墙规则和系统 iptables 冲突:宝塔会覆盖自定义 iptables 规则,建议统一在面板中管理;如果手动添加规则后重启面板,可能丢失,需在面板“安全”里添加。

效果验证:怎么知道拦截成功?

  • 执行 iptables -L -n,查看是否有 DROP 条目。
  • 用 fail2ban-client status sshd 能看到 banned IP list。
  • 在宝塔面板“安全 -> 防火墙”中查看已屏蔽 IP。
  • 更直观:从另一台机器用被屏蔽的 IP 尝试 SSH,应直接超时或拒绝连接。

常见问题解答

Q:我不想封整个 IP,能只限制端口扫描吗?
A:可以用 hashlimit 模块限制每分钟新建连接数,如:iptables -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-name http --hashlimit-above 30/minute --hashlimit-burst 60 -j DROP。

Q:我的服务器被 DDoS 攻击,这些方法够用吗?
A:针对应用层 CC 攻击,fail2ban 和 iptables 有一定效果;但大流量 DDoS 需要云厂商的清洗服务(如阿里云高防、Cloudflare)。

Q:重启后规则全丢了怎么办?
A:确保保存了规则(service iptables save)并启用 iptables-services 服务;fail2ban 会自动恢复,宝塔面板每次启动也会重新加载。

结语

配置服务器防火墙拦截恶意扫描并不难,关键在于选对方案并做好持久化。
建议零基础用户先用宝塔面板 + fail2ban 组合,业务稳定后再深入 iptables 自定义规则。
如果你在操作过程中遇到“规则没生效”或“把自己封禁”,请回头检查避坑部分,多半能解决。

分享到:
上一篇
服务器硬件选购住宅家用机型:家用服务器硬件选购指南
下一篇
服务器后门进程隐藏检测方法,新手也能看懂的操作指南
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意