<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SSH on JiangYM's Blog</title><link>https://jiangym.top/tags/ssh/</link><description>Recent content from JiangYM's Blog</description><generator>Hugo</generator><language>zh-cn</language><managingEditor>xxx@example.com (JiangYM)</managingEditor><webMaster>xxx@example.com (JiangYM)</webMaster><copyright>本博客所有文章除特别声明外，均采用 BY-NC-SA 许可协议。转载请注明出处！</copyright><lastBuildDate>Fri, 09 Oct 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://jiangym.top/tags/ssh/index.xml" rel="self" type="application/rss+xml"/><item><title>fail2ban 装了半个月，封禁数是 0，我反而睡得更踏实了</title><link>https://jiangym.top/post/fail2ban-zero-bans-layered-defense-oct-2026/</link><pubDate>Fri, 09 Oct 2026 09:00:00 +0800</pubDate><author>xxx@example.com (JiangYM)</author><guid>https://jiangym.top/post/fail2ban-zero-bans-layered-defense-oct-2026/</guid><description>
<![CDATA[<h1>fail2ban 装了半个月，封禁数是 0，我反而睡得更踏实了</h1><p>作者：JiangYM（xxx@example.com）</p>
        
          <p>十一那天扒 nginx 日志写了篇 25 万发扫描的文章，结尾还很嘴硬，说静态站玩家用 return 444 就够了，fail2ban 那套复杂的就不用了。结果没过几天就真香了，fail2ban 现在在我这台 1 核小鸡上跑得欢实。今天把这事交代一下，顺便聊聊为什么封禁数是 0 我还挺高兴。</p>
<p>先看现状。装完之后我上去盘了一眼 <code>lastb</code>，btmp 里失败登录记录从 10 月 1 号到现在就两条，干净得像刚装完系统。不是攻击变少了，是我这台机器对扫描器来说基本隐形了：SSH 端口老早改成 2825，全网瞎扫 22 端口的机器人连门朝哪开都摸不到；HTTP 那边 nginx 的 444 规则天天在掐垃圾流量。所以 fail2ban 上岗半个月，一次出手的机会都没有。</p>
<p>那为什么还要装？这就要说到我之前想法里偷懒的地方了。444 和改端口这两招，本质都是&quot;让扫描器看不见我&quot;，属于隐身流。但隐身有个前提，就是你真的没被盯上。哪天我的域名被谁挂到什么字典里了，或者来了个专门对着 IP 扫全端口的，nmap 跑一圈 2825 照样现形。隐身流最怕的就是隐身失败的那一刻没有任何兜底，被人从发现一路平推到沦陷。</p>
<p>fail2ban 补的就是这个位置。它不管你看没看见我，只要你在 SSH 上连续输错 5 次密码，或者对着 nginx 打了 3 次可疑路径，防火墙直接拉黑，SSH 那个 jail 一关就是一整天。我现在的配置很保守：sshd jail maxretry 5、bantime 86400，nginx-botsearch jail maxretry 3、bantime 3600。放着不动，让它自己看门。</p>
<p>资源这块也交代下，毕竟 1.9G 内存每一兆都是抠出来的。fail2ban 是 Python 写的，跑起来十几兆，相比它能兜底的场景，这价格我出得起。而且它是 systemd 服务，重启机器自己拉起来，完全不用管，这种装完就能忘的东西在我的运维哲学里是加分项。</p>
<p>顺便说下实际效果怎么验证。<code>fail2ban-client status sshd</code> 一敲，能看到 Currently banned 和 Total banned。我这里俩都是 0。第一反应是这玩意是不是白装了，后来想明白了：各层防线都在干活，扫描器根本活不到出现在 fail2ban 面前的那一步，它当然没业绩。这跟打 DOTA 买眼一个道理，眼位放了一整局没被排、也没抓到人，不代表眼是白买的，只是威胁在更外圈就被处理掉了。真等到眼位开始抓人，说明局势已经有点不对劲了。</p>
        
        <hr><p>本文2026-10-09首发于<a href='https://jiangym.top/'>JiangYM's Blog</a>，最后修改于2026-10-09</p>]]></description><category>技术</category></item></channel></rss>