从 01 开始 从 01 开始
首页
  • 计算机简史
  • 数字电路
  • 计算机组成原理
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • 数据库
  • JavaSE
  • Java 高级
  • JavaEE

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

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

    • Spring基础
  • 主流框架

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

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Node
  • Windows 使用技巧
  • 最全面的输入法教程
  • 浏览器
  • 终端软件
  • 装机
  • 笔记类软件
  • Markdown
  • 各大平台
  • 远程控制
  • RSS
  • 图片类工具
  • Office
  • 手机
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 教程简介
  • 英语学习方法论
  • 字母
  • 音标
  • 单词
  • 语法
  • 英语兔的相关视频
  • Larry 想做技术大佬的相关视频
  • 驾驶技能
  • 住房相关
  • 厨艺
  • 关于税
  • 理财
  • 睡眠
  • 皮肤
  • 口腔健康
  • 学会呼吸
  • 健身日志
  • 电影

    • 电影推荐
  • 漫画

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

    • Steam
    • 三国杀
    • 求生之路
  • 反腐
  • GFW
  • 404 内容
  • 审查与自我审查
  • 互联网
  • 2022
  • 2023
  • 2024
  • 2025
  • 关于本站
  • 关于博主
  • 网站动态
  • 公告栏
  • 友人帐
  • 从零开始搭建一个博客
  • 搭建邮件服务器
  • 本站分享
  • 文章分类
  • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 计算机简史
  • 数字电路
  • 计算机组成原理
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • 数据库
  • JavaSE
  • Java 高级
  • JavaEE

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

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

    • Spring基础
  • 主流框架

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

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Node
  • Windows 使用技巧
  • 最全面的输入法教程
  • 浏览器
  • 终端软件
  • 装机
  • 笔记类软件
  • Markdown
  • 各大平台
  • 远程控制
  • RSS
  • 图片类工具
  • Office
  • 手机
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 教程简介
  • 英语学习方法论
  • 字母
  • 音标
  • 单词
  • 语法
  • 英语兔的相关视频
  • Larry 想做技术大佬的相关视频
  • 驾驶技能
  • 住房相关
  • 厨艺
  • 关于税
  • 理财
  • 睡眠
  • 皮肤
  • 口腔健康
  • 学会呼吸
  • 健身日志
  • 电影

    • 电影推荐
  • 漫画

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

    • Steam
    • 三国杀
    • 求生之路
  • 反腐
  • GFW
  • 404 内容
  • 审查与自我审查
  • 互联网
  • 2022
  • 2023
  • 2024
  • 2025
  • 关于本站
  • 关于博主
  • 网站动态
  • 公告栏
  • 友人帐
  • 从零开始搭建一个博客
  • 搭建邮件服务器
  • 本站分享
  • 文章分类
  • 文章归档
  • 计算机历史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

    • Linux命令学习

    • 文本处理三剑客

    • 尚硅谷Docker实战教程

    • Linux安全

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

  • Git

  • 计算机小知识

  • 数据库

  • 计算机基础
  • 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)

‍

上次更新: 2024/9/30 16:43:12
SSH 登录方式的防护
课程概述

← SSH 登录方式的防护 课程概述→

最近更新
01
2025 年 2 月记
02-28
02
最全面的浏览器教程-完结撒花
02-16
03
这个工具可以轻松搞到你的浏览器账户密码!
02-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式