关注分享主机优惠活动
国内外VPS云服务器

如何用Fail2ban保护Linux服务器?防止SSH暴力破解教程(linux保护机制)

如何用Fail2ban保护Linux服务器?防止SSH暴力破解教程

玩VPS的朋友们,今天咱们聊个实在的话题,一个只要你服务器的公网IP一暴露,就得天天面对的烦心事。

你可能觉得自己的小鸡(VPS)放在机房里,除了自己偶尔上去敲几行命令,平时根本没人搭理。但事实是,从你的服务器上线那一秒开始,它就已经被无数自动化的扫描脚本给盯上了。

这些脚本就像不知疲倦的苍蝇,7x24小时在网上乱撞,寻找着各种服务的默认端口,而它们最爱的,就是你那扇通往服务器核心的大门——SSH端口

不信?我给你个机会亲眼看看。

现在,马上登录到你任何一台Linux服务器,把下面这行命令粘贴进去,回车:

sudo grep "Failed password" /var/log/auth.log | less

这命令干了啥?它把你服务器的登录日志(auth.log)里,所有“密码错误”的记录全都翻了出来。

怎么样?看到屏幕上刷出来的那一长串来自世界各地的陌生IP了吗?是不是有点头皮发麻?没错,这些就是那些脚本留下的“犯罪证据”。它们正在用穷举法,拿着字典,一秒几百次地砸你家大门。

你的SSH密码,就是抵挡这场洪水唯一的防线。密码要是弱了,或者哪天不小心泄露了,服务器被拿下就是分分钟的事。

那我们除了设置一个长到自己都记不住的密码外,就没别的办法了吗?当然不是。

高手过招,不能光靠防守。今天我就教你怎么给你的服务器请一位全自动、铁面无私的“保安”。

这位保安的名字,叫Fail2ban


Table of Contents

Toggle

第一章:“主动防御”的艺术 —— Fail2ban是如何工作的?

在动手之前,你得先明白这玩意儿是怎么个工作原理,其实特简单。

  • 被动防御(你现在的状态): 你设了个巨复杂的密码,就像给门上了把超级锁。小偷想撬开得花个几百年。这挺好,但你得忍着他天天在你门口叮叮当当地试钥匙,烦不烦?
  • 主动防御(Fail2ban的玩法):
    • 打个比方: 你在门口装了个监控,告诉它一个规则:“谁要是5分钟内连续输错3次密码,甭管是谁,直接关门放狗,让他一个小时内别想再靠近我家大门!”
    • 技术上讲: Fail2ban就是个脚本,它会一直盯着你服务器的各种日志文件。一旦发现某个IP的行为符合你设定的“捣乱”规则(比如:10分钟内SSH登录失败5次),它就马上调用防火墙(比如iptables或者firewalld),把这个IP拉黑,关它一会儿“小黑屋”(比如1小时,或者更久)。

看明白了吧?Fail2ban让你的服务器从一个只能被动挨打的木桩,变成了一个会主动反击的练家子。

第二章:“哨兵”的入职手续 —— 安装与核心配置

行了,理论听够了,咱们动手把这位保安请上岗。

第一步:安装

在主流的Ubuntu/Debian系统上,安装简单得不能再简单了:sudo apt updatesudo apt install fail2ban -y

装完之后,服务会自动跑起来。这时候,保安其实已经悄悄开始工作了,只不过他用的是一套默认的规则,有点太“仁慈”,咱们得给他“特训”一下。

第二步:配置的“铁律”

你进到/etc/fail2ban/这个目录,会看到一个叫jail.conf的文件,这是它的主配置文件。

记住这个铁律:永远,永远不要直接改jail.conf这个文件!

  • 为啥? 因为这是官方的默认配置。你一升级Fail2ban,这个文件很可能就被新版本覆盖了,到时候你改的东西全白费!
  • 那该咋办? 正确的做法,是创建一个我们自己的配置文件,叫jail.local。Fail2ban启动时,会先读jail.conf,然后再读jail.local。如果两个文件里有同样的设置,它会听jail.local的。
    • 说白了: jail.conf是“说明书”,jail.local是你的“自定义便签”。有冲突时,以你的便签为准。

第三步:写我们自己的“便签” (jail.local)

  1. 先从默认配置文件复制一份过来当模板:sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  2. 然后,用你喜欢的编辑器打开我们自己的文件,我这里用nano:sudo nano /etc/fail2ban/jail.local

打开后别被那一大堆配置吓到,保护SSH的话,咱们就改几个关键的地方就行。

[DEFAULT]这个全局设置下面,找到这几项:

  • bantime = 10m
    • 这是啥: 就是关小黑屋的时间。默认10分钟,说实话太短了,攻击者喝杯茶的功夫就出来了。
    • 我建议: 至少改成bantime = 1h(关1小时),狠一点的直接bantime = 24h(关一天)。
  • findtime = 10mmaxretry = 5
    • 这是啥: 这俩要放一块看。意思是“如果在10分钟内,同个IP试错了5次,就拉黑”。
    • 我建议: 可以把maxretry改成3,更严格一些,没必要给那么多机会。

接下来,在编辑器里按Ctrl + W,搜索[sshd],直接跳到SSH专属的配置区域。

你就需要确认一件事,在[sshd]的下面,有没有这一行:

  • enabled = true
    • 这是啥: 意思就是“开启SSH监控”。如果它默认是false,或者被注释掉了,记得改成true

基本上,对SSH的防护,改这几项就足够了。保存退出(Ctrl+X,然后按Y,再按回车)。

第四步:让新规则生效

改完了配置,得跟保安说一声,让他按新规矩办事。

sudo systemctl restart fail2ban

搞定!从现在开始,你这位严格的保安,已经正式上岗了!

第三章:与你的“哨兵”对话 —— 日常管理与“特赦”

保安上岗了,我们怎么知道他干得好不好,或者怎么跟他沟通呢?用fail2ban-client这个命令就行。

  • 查看整体工作状态: sudo fail2ban-client status 这个会告诉你现在开了几个监控任务(Jail)。
  • 查看SSH监控的详细报告: sudo fail2ban-client status sshd 这个是我最常用的!它会告诉你SSH这边总共抓到过多少次捣乱的,更重要的是,会列出**当前正被关在小黑屋里的IP列表!**
  • “哎呀,是我自己手滑了!”—— 怎么把IP放出来? 难免有時候自己也会输错几次密码,结果被自家的保安给关外面了。别慌,你有管理员权限。sudo fail2ban-client set sshd unbanip 你的IP地址 敲完这行命令,你就能马上重新连接了。

【自己动手测试一下】 如果你还是有点不放心,想亲眼看看它到底有没有用,可以自己做个实验。打开手机的SSH客户端,连你的服务器,然后故意输错几次密码。很快你就会发现,手机连不上了。这时候,回到电脑上,执行sudo fail2ban-client status sshd,你就能在那个“Banned IP list”里看到你手机的公网IP。亲眼看过一次,你就会彻底信赖它了。

第四章:超越SSH —— 为你的“整个城堡”都配上“哨兵”

Fail2ban最牛的地方在于,它是个通用工具。它不光能保护SSH。说白了,只要你的某个服务会产生记录失败尝试的日志,Fail2ban就能保护它!

举个最常见的例子,你的WordPress网站后台,是不是也天天被人扫?没问题,一样可以给它配个保安!

  1. /etc/fail2ban/filter.d/目录里,新建一个wordpress.conf文件,用来定义怎么从日志里识别“WordPress登录失败”的行为。
  2. 回到jail.local文件,加一个新的[wordpress]配置段,告诉Fail2ban去监控Nginx或Apache的访问日志,并使用我们刚定义的那个规则。
  3. 重启Fail2ban。

就这么简单。之后,再有谁想暴力破解你的WP后台,试个几次就会发现网站直接访问不了了。

同理,FTP服务、邮件服务,甚至你自己写的应用,只要有日志,就能用Fail2ban来保护。它能成为你整个服务器统一的主动防御中心。


当你把Fail2ban配好,过个一两天,再回去用sudo fail2ban-client status sshd看看报告,你可能会惊讶地发现,那个“已封禁IP列表”里,已经有了几百上千条记录。

看着这个列表,你会获得一种前所未有的安全感。因为你知道,在你睡觉的时候,在你忙别的事的时候,这位忠诚的“保安”,正在后台默默地为你挡掉成千上万次的恶意试探。

从这一刻起,你的服务器,不再是一座需要你时时刻刻担惊受怕的孤岛。它,成了一座拥有了自我防御能力的智能堡垒。

未经允许不得转载:主机频道 » 如何用Fail2ban保护Linux服务器?防止SSH暴力破解教程(linux保护机制)

评论 抢沙发

评论前必须登录!