小服务器运维实录:给2核小服务器上fail2ban,再开BBR提速

举报
yd_292978551 发表于 2026/11/11 10:14:45 2026/11/11
【摘要】 手头有一台 2 核 2G 的小规格云服务器(Flexus / 轻量级同类配置),上面跑着一个个人小站和几个常驻服务。机器本身不贵,但有两个问题反复出现:第一,SSH 日志里每天都有大量陌生 IP 尝试爆破登录;第二,在弱网、跨运营商访问时页面打开明显发闷。本文记录我实际用过的两招:fail2ban 降噪 + 开启 BBR,以及几个顺手做的低成本加固,全部是小服务器上验证过的操作。 一、先看日...

手头有一台 2 核 2G 的小规格云服务器(Flexus / 轻量级同类配置),上面跑着一个个人小站和几个常驻服务。机器本身不贵,但有两个问题反复出现:第一,SSH 日志里每天都有大量陌生 IP 尝试爆破登录;第二,在弱网、跨运营商访问时页面打开明显发闷。本文记录我实际用过的两招:fail2ban 降噪 + 开启 BBR,以及几个顺手做的低成本加固,全部是小服务器上验证过的操作。

一、先看日志,确认问题再动手

动手之前先确认现象,别凭感觉调参数。

# 最近一天 SSH 登录失败有多少次
journalctl -u sshd --since "1 day ago" | grep -c "Failed password"
# 看看都是哪些 IP 在试
journalctl -u sshd --since "1 day ago" | grep "Failed password" | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head
# 机器上到底开了哪些端口
ss -tulpn

我的机器上,一天失败登录常常是几百次,来源 IP 分散在不同网段。这类扫描是互联网上的常态,挡不住,但可以大幅降低它带来的日志噪音和风险面。

二、fail2ban:让爆破 IP 自动进黑名单

fail2ban 的思路很简单:盯着 SSH 日志,某个 IP 在一段时间内失败次数超标,就用防火墙封它一段时间。

# Ubuntu / Debian
sudo apt update && sudo apt install -y fail2ban
# 启动并设开机自启
sudo systemctl enable --now fail2ban

不要直接改 jail.conf,在 /etc/fail2ban/jail.local 里写自己的配置(升级不会被覆盖):

[DEFAULT]
# 自己的出口 IP 写进白名单,别把自己锁在门外
ignoreip = 127.0.0.1/8 ::1 1.2.3.4
# 10 分钟内失败 5 次就封 1 小时
bantime = 3600
findtime = 600
maxretry = 5

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

把 1.2.3.4 换成你自己的固定出口 IP;如果是动态 IP,至少保证有一条可用的云控制台 VNC / 串口登录通道再开封禁。改完重启并检查:

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
# 看当前封了谁
sudo fail2ban-client status sshd | grep -A5 "Banned IP list"

效果:第二天再看日志,失败登录从几百次掉到个位数,剩下的大多是刚好卡在阈值下的零星尝试。注意 fail2ban 只能挡“反复试同一个 IP”的行为,换 IP 慢速试探防不住,它也不是密码策略的替代品。

三、开启 BBR:弱网环境下让传输更顺

BBR 是 Google 的拥塞控制算法,对丢包较多的弱网链路效果比较明显。先确认内核版本(一般要求 4.9 以上,现在的主流镜像都满足):

uname -r
# 看当前用的拥塞控制算法
sysctl net.ipv4.tcp_congestion_control

确认可用后写入配置并生效:

# /etc/sysctl.conf 末尾追加
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

sudo sysctl -p
# 验证
sysctl net.ipv4.tcp_congestion_control
lsmod | grep bbr

返回 bbr 且模块已加载即生效。我的实测感受:同一条跨网访问链路,大文件下载的波动小了,页面首字节时间在晚高峰时段有所改善;但 BBR 不是万能药——如果慢是因为 CPU 跑满或者磁盘 I/O 瓶颈,换拥塞算法没用。改前后可以用 curl -o /dev/null -s -w "%{time_total}\n" https://你的站点/一张图片 多测几次对比,别只凭一次感觉下结论。

四、顺手做的几个低成本加固

  1. SSH 只用密钥登录:sshd_config 里设 PasswordAuthentication no,改前务必确认密钥能登录,并先 sshd -t 检查配置语法,再重启服务。改配置时保持一个已登录的 SSH 会话别断,万一配错了还能从那个会话恢复。
  2. 及时打补丁:小服务器最常见的失守原因不是高级攻击,是长期不更新的已知漏洞。Debian/Ubuntu 上开 unattended-upgrades,只自动装安全更新。
  3. 盯紧磁盘:df -h 每周看一眼,日志是小盘最常见的杀手。给 /var/log 留出余量,必要时配 logrotate 压缩旧日志;磁盘用到 80% 就该处理,别等 100% 才发现服务写不进数据。
  4. 只开必要的端口:安全组 / 防火墙里只放行 22、80、443 和业务必需端口,管理后台不要直接暴露公网。

五、检查清单

  • [ ] fail2ban-client status sshd 能看到 jail 正常运行
  • [ ] sysctl net.ipv4.tcp_congestion_control 返回 bbr
  • [ ] 用新会话验证密钥登录正常,旧会话不断开
  • [ ] 第二天再看一次 SSH 失败日志,确认数量级下降

小结

小服务器运维拼的不是堆配置,而是“先量后改、改完验证、留好退路”。fail2ban 负责把噪音挡在门外,BBR 负责把弱网传输理顺,再加上密钥登录、及时补丁和磁盘巡检这三件小事,一台 2 核小机器也能跑得安稳。成本几乎为零,花的时间不到一小时,值得做一次。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。