从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

    • Linux 命令学习

    • 文本处理三剑客

    • Linux安全

      • SSH 登录方式的防护
      • Fail2Ban
        • 介绍
        • 安装 Fail2Ban
        • 配置 Fail2Ban 防护 SSH
        • 查看 SSH 防护效果
        • 封禁 IP 管理
        • 日常维护
        • 补充
        • 参考
    • Docker

  • 计算机网络

  • 数据库

  • 编程工具

  • 装机

  • 计算机基础
  • Linux
  • Linux安全
2024-01-08
目录

Fail2Ban

# 30.Fail2Ban

Fail2Ban 是一款入侵防御软件,可以保护服务器免受暴力攻击,开源在 GitHub (opens new window)。

‍

# 介绍

简单来说,Fail2Ban 的功能就是可以记录登录失败(例如 SSH,MySQL 等服务)的次数,如果失败太多次就禁用登录的 IP,还可以邮件通知,这样可以防止短时间内有大量暴力破解。

注意:Fail2Ban 能够降低错误认证尝试的速度,但是它不能消除弱认证带来的风险。假如一款服务使用了弱密码,那么别人一猜就对了,那么 Fail2Ban 也无能为力。 ‍

# 安装 Fail2Ban

# Ubuntu
apt update && apt install fail2ban

# Centos
yum install fail2ban -y
1
2
3
4
5

# 配置 Fail2Ban 防护 SSH

自己从头开始配置是比较麻烦的,我们进入 fail2ban 的目录,直接复制一份配置文件:

cd /etc/fail2ban 
cp fail2ban.conf fail2ban.local
cp jail.conf jail.local
1
2
3

​jail.local​ 文件如果存在的话,可以自行备份下。

修改 jail.local​ 配置文件,启动 sshd 策略:vim jail.local​

定位到 285 行左右(是在 [sshd]​ 的下面配置),添加一行 enabled = true​:

[sshd]
280 
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode   = normal
enable  = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
1
2
3
4
5
6
7
8
9
10

修改 sshd 策略:

vim fail2ban.local
1

‍ 最后一行,添加如下内容:(如果你使用 Ubuntu,则注释第 6 行,取消注释第 9 行)

[sshd]
enabled = ture
port = 22   # 注意改成自己对应的ssh端口
filter =sshd
# CentOS
logpath = /var/log/secure

# Ubuntu
# logpath = /var/log/auth.log
maxretry = 5   # 最大尝试次数
bantime = 1800 #封禁时间,单位s。-1为永久封禁
1
2
3
4
5
6
7
8
9
10
11

重启即可生效:

systemctl restart fail2ban  # 重启
fail2ban-client status      # 查看状态
fail2ban-client status sshd # 查看sshd的详细状态
1
2
3

# 查看 SSH 防护效果

我们可以看 Fail2Ban 的日志:

vim /var/log/fail2ban.log
1

‍ 刚配置好,就可以发现不少攻击了:​

​​​​

可以看到日志里显示 221.215.21.91 尝试登录了 5 次;

日志最后两行显示,已经禁用(Ban)了 2 个 IP 了。

# 封禁 IP 管理

可以通过 status 命令查看被封的 IP:最后一行的 2 个 IP 就是目前封禁了的

$ fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed:	1
|  |- Total failed:	11
|  `- Journal matches:	_SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned:	2
   |- Total banned:	2
   `- Banned IP list:	64.227.77.213 119.191.58.66
1
2
3
4
5
6
7
8
9
10

‍ 解封某个 IP:

fail2ban-client set sshd unbanip 64.227.77.213
1

‍ 可以看到该 IP 又在尝试登录了(也就是解封了):

​​ ‍

如果自己被封了,可以在云服务器厂商的控制台里登录并解封自己。

# 日常维护

这里总结一下 Fail2Ban 常用的命令:

# 启动服务
systemctl start fail2ban.service

# 开机启动
systemctl enable fail2ban.service

# 日志文件
cat /var/log/fail2ban.log

# 查看 fail2ban 的运行状态
fail2ban-client status				   		  


# 查看 jail 的详细信息,可以看到被封的 ip
fail2ban-client status sshd			


# 解封 ip
fail2ban-client set sshd unbanip 123.123.123.2 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 补充

Fail2Ban 除了用来保护 SSH 的暴力破解之外,还可用于 MySQL,Apache、Nginx 等,官网 (opens new window)是这样说的:

support for a lot of services (sshd, apache, qmail, proftpd, sasl, asterisk, etc)

# 参考

Fail2Ban 官方用户手册 (opens new window)

Fail2Ban 简介与使用_正阳 Liu 的博客 (opens new window)

fail2ban--服务器遭遇暴力破解的福音-小薛薛 snow 的博客 (opens new window)

【云知梦】Fail2ban 高阶实践_哔哩哔哩 (opens new window)

Fail2ban 高阶实践/CentOS8/RHEL8/Rocky8 课程 (opens new window) ‍

上次更新: 2025/5/9 14:55:39
SSH 登录方式的防护
教程简介

← SSH 登录方式的防护 教程简介→

最近更新
01
语雀文档一键下载至本地教程
07-04
02
要成功,就不要低估环境对你的影响
07-03
03
血泪教训:电子设备要定期开机
07-02
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式