惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学
G
Google Developers Blog
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
J
Java Code Geeks
U
Unit 42
云风的 BLOG
云风的 BLOG
阮一峰的网络日志
阮一峰的网络日志
N
Netflix TechBlog - Medium
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
Docker
V
Visual Studio Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Help Net Security
V
V2EX
T
Tailwind CSS Blog

记录生活,精彩一刻

彩虹网盘二次开发:更新前台,后台原样保留 拿到检查报告,压在心头的石头终于落地 人到中年,小事与心事 周末骑行日记:风景挺好,状态不行,好在有碗面 享受 AI 给的错觉,也别丢了清醒 核心影视优化记录:视频源从时好时坏到稳定能看 DeepSeek 涨价之后,普通个人开发者有点难受 今日撸猫 不会抓老鼠的猫 Zdir 网盘 图床 Typecho 专用上传插件 NetDiskImg 分享 给 Typecho 写文章时添个顺手的素材库,顺便支持了 S3 存储 一树“剃头”两树生,养盆景就是养心态 自己泡的茉莉蜜茶,甜不甜我说了算 抗大路,骑到腿软的一天 正规备案,基于S3存储,免费开放注册 收拾车库、降薪、律师费,普通人的周末实录 平台迁移擅自改动定价,IDC 服务商不能把成本转嫁到老用户 忙里偷闲,给盆景“善后”的一晚 腾讯云 EdgeOne 国内站 福利 与之前兑换没冲突 速度上车 打工人的快乐,就藏在这十几分钟的晚霞里 外地支援这事,从帮忙变成了义务 我又没忍住,又去找AI帮忙了,这次还好没翻车 我用AI写插件翻车了,留言区炸了,最近还是消停点吧 当探店吃播撞上《网络测评规范》 Typecho 插件推荐 UploadPlugin Typecho 站内搜索插件 SiteSearch(BUG) 留一个烂员工,毁掉整个团队,你怎么看? 牙齿治疗决策,还是想保住这颗牙 极为罕见的闪电画面,“上行闪电”又称“逆闪” 到现在不知道怎么介绍自己 十年之约走到一半,2026年我们还在
服务器 SSH 老提示 connection is closed by foreign host,...
Huo · 2026-09-11 · via 记录生活,精彩一刻

xk59syxa

今天打算给手里这几台服务器更新一下系统,并清理一下系统垃圾,但是这台服务器今天抽风,SSH 时好时坏,连不上的时候就报 connection is closed by foreign host。你说气不气人,它又不是一直坏,ping 是通的,端口也开着,过几分钟再试,嘿,又好了。这种毛病最磨人,我第一反应就是网络不行,或者机房抽风。

一开始我还怀疑是不是自己 IP 被 fail2ban 给封了,或者路上哪台设备在捣鬼。折腾半天才发现,跟网络半毛钱关系没有。服务器好着呢,负载几乎为零,大半年没重启过,稳得一批。

后来我好不容易挤进服务器,翻了一眼 sshd 日志,傻眼了。有一个 IP 是 5.231.242.201,同时挂着十几个连接,在那儿一个劲试 root 密码,短短两小时失败了两千多次。旁边还有一整个网段的机器在轮着爆破,主要是 77.83.39.x 这一段,什么 77.83.39.60、77.83.39.89、77.83.39.101、77.83.39.118、77.83.39.235、77.83.39.239 这些,十几个地址换来换去地试。另外还冒出个 92.118.39.59,也在那儿跟着凑热闹。量太大了,直接把 sshd 的一个保护开关给顶爆了。

这个开关叫 MaxStartups,默认值是 10:30:100,意思就是同时没认证的连接一旦超过 10 个,新进来的连接就会被随机踢掉。人家攻击者把这个额度占满以后,我这个正常用户的连接也跟着遭殃,随机就被丢了,客户端看着就是 connection is closed by foreign host。等攻击缓一缓,额度空出来,我又能连上了。所以才是这么个时好时坏的鬼样子。

找到病根,剩下就好办了。先把攻击来源在防火墙里手动封了,5.231.242.201 这个单 IP,还有 77.83.39.0/24 整个网段,加上 92.118.39.59,全给它关进去。然后就是把 fail2ban 修好,让机器以后自己会封,省得每次都得我手动来。

修 fail2ban 的时候又踩了个坑,这里多说两句。这机器是 Debian 12,日志走的是 systemd 的 journald,默认压根没有 /var/log/auth.log 这个文件,fail2ban 默认配置找不到日志,服务一直就是挂着的。更坑的是,sshd 日志在 journal 里的单元名是 ssh.service,不是 fail2ban 默认匹配的 sshd.service。这俩地方不改对,fail2ban 永远读不到日志,封 IP 更是没门。

改完配置重新把 fail2ban 拉起来,它当场就从历史日志里揪出十几个攻击 IP,全给自动封了。再回头看日志,攻击直接清零,SSH 也老实了,连着试了几十次都不带掉线的。

最后把这次碰到的可疑 IP 贴出来,看到的兄弟自己服务器里留意一下,能封就早点封:
5.231.242.201

77.83.39.0/24 这一整段(里面 77.83.39.17、60、89、95、99、101、112、118、119、122、147、217、226、235、238、239、240 都在轮着扫)

92.118.39.59

回头想想就一句话,SSH 报 connection is closed by foreign host,先别急着怪自己网络,看看服务器是不是正被爆破。防护工具光装没用,得确认它真在跑。再有余力,密码登录换成密钥,默认端口改一改,这两下能挡掉一多半的麻烦。

好吧,我承认这一次是 AI(DeepSeek) 的功劳。