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

推荐订阅源

GbyAI
GbyAI
Martin Fowler
Martin Fowler
I
InfoQ
腾讯CDC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
爱范儿
爱范儿
Microsoft Security Blog
Microsoft Security Blog
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
D
Docker
博客园 - 三生石上(FineUI控件)
Y
Y Combinator Blog
博客园 - Franky
Engineering at Meta
Engineering at Meta
B
Blog
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research
Jina AI
Jina AI
V
Visual Studio Blog

灰叶的笔记

Linux逻辑卷2-扩容/常用命令汇总 | 灰叶的笔记 Dockerfile 容器镜像构建 | 灰叶的笔记 Linux 查看内存和实际物理内存大小不一致 | 灰叶的笔记 GCP创建泛域名证书(域名托管在CloudFlare) | 灰叶的笔记 Docker基础指令-镜像相关 | 灰叶的笔记 Docker基础指令-容器相关 | 灰叶的笔记 GCP和AWS使用PCCW专线互联 | 灰叶的笔记 使用 OpenTelemetry 采集日志推送至 GCP Cloud Logging | 灰叶的笔记 vim编辑器常用操作 | 灰叶的笔记 Linux主机是否被入侵的11个排查步骤 | 灰叶的笔记 Ubuntu 安装 Docker-CE | 灰叶的笔记 公用云Linux快照创建磁盘挂载问题 | 灰叶的笔记 ubuntu 安装图形化桌面 | 灰叶的笔记 iptables基础命令与filter表相关命令 | 灰叶的笔记 Linux逻辑卷 | 灰叶的笔记 UCloud CentOS6.X修改hostname | 灰叶的笔记 软件源安装Dokcer | 灰叶的笔记 Ubuntu系统启用root用户ssh远程登录 | 灰叶的笔记 Windows Server关闭IE增强 | 灰叶的笔记 windows云服务器开启媒体声音 | 灰叶的笔记 MySQL5.7多实例部署 | 灰叶的笔记 nc网络工具 | 灰叶的笔记 WinServer2008云服务器系统盘可压缩空间不足 | 灰叶的笔记 Rocky Linux8.5 UCloud官方镜像进入单用户模式 | 灰叶的笔记 UCloud官方Linux 镜像进入单用户模式汇总 | 灰叶的笔记 Debian10 UCloud官方镜像进入单用户模式 | 灰叶的笔记 CentOS6 UCloud官方镜像进入单用户模式 | 灰叶的笔记 CentOS7/8 UCloud官方镜像进入单用户模式 | 灰叶的笔记 Ubuntu UCloud官方镜像进入单用户模式 | 灰叶的笔记 几个检查本机的网络连接的工具(linux) | 灰叶的笔记
Fail2Ban-Linux防SSH暴力破解工具 | 灰叶的笔记
huiye · 2024-08-20 · via 灰叶的笔记

一、简介

Fail2Ban是一款入侵防御工具,可以在一定程度上保护服务器免受ssh暴力破解、 ftp/http密码穷举等场景的攻击,它通过使用指定的正则表达式(也称为过滤规则)进行扫描日志文件(/var/log),并根据配置信息来封禁多次访问失败的IP。Fail2Ban封禁IP主要通过向Linux内的防火墙中更新规则来实现

github项目地址: https://github.com/fail2ban/fail2ban

二、安装

RHEL/Rocky/CentOS

# yum install -y fail2ban
# systemctl start fail2ban
# systemctl enable fail2ban

Ubuntu/Debian

# sudo apt install -y fail2ban

三、修改配置

1、Fail2Ban的配置文件默认都在 /etc/fail2ban/目录里:jail.conf与fail2ban.conf,升级Fail2Ban时,文件会被覆盖。如果需要修改配置文件,建议是复制出来一份local文件进行修改或者创建一个新的 jail.local 文件,并且Fail2Ban启动时会自动读取conf和local文件,local文件的优先级更高。

# cd /etc/fail2ban
# cp jail.conf jail.local
# cp fail2ban.conf fail2ban.local

2、jail.local配置详解

[DEFAULT]模块是Fail2Ban的全局模块, 对所有服务模块生效,当然也可以在具体的服务模块下添加参数,局部变量优先级大于全局变量

[DEFAULT]
#此参数为加白的网段、IP,可以是域名、网段或单个IP,空格隔开。
ignoreip = 127.0.0.1/8
#设置被封锁的时间间隔,如下表示10分钟,可以是秒(s)、分钟(m)、小时(h)、天(d),不带单位则默认为s,-1表示永久封锁。
bantime  = 10m
#检测的间隔时间,在间隔时间内,当>=maxtretry设置的失败次数,则触发限制,禁止访问。
findtime  = 10m
#findtime时间内的最大失败次数
maxretry = 5
#需要采取的行动,和当前系统使用的防火墙相关
banaction = firewallcmd-ipset

注:填写 banaction时 要确定当前的系统上安装了什么防火墙或安全软件,linux上通常是 iptables, firewalld, ufw这三个工具, 可以通过查看  /etc/fail2ban/action.d/ 目录下的文件来找到  fail2ban 支持的 banaction 列表。

  • iptables:ssh禁止来源IP访问场景通常设置 banaction 为 iptables-ipset 或者直接使用 iptables
  • firewalld:ssh禁止来源IP访问场景通常设置 banaction 为 firewallcmd-ipset
  • ufw:可以直接设置 banaction 为 ufw

[sshd]模块:启用sshd模块需要在  jail.local 文件中找到 [sshd] 模块,并将 enabled 参数改为true

[sshd]
enabled = true        #启用该模块
port = 22                 #ssh端口
logpath = /var/log/auth.log  #日志路径
backend = %(sshd_backend)s   #后台管理程序,默认由systemd接管,无需修改

注:

1、如果配置文件中无该模块,可以自行手动添加

2、logpath 参数和 linux 发行版本有关:

  • RHEL/Rocky/CentOS:logpath = /var/log/secure
  • Ubuntu/Debian:logpath = /var/log/auth.log

上面 [DEFAULT] 中使用到的部分参数,也可以用在 [sshd] 模块中, 局部变量优先级大于全局变量,如下

[sshd]
enabled = true
port = 22
logpath = /var/log/secure
backend = %(sshd_backend)s
ignoreip = 127.0.0.1/8 ::1 10.10.0.0/16 172.16.0.0/16
bantime = 1m
findtime = 1m
maxretry = 1
banaction = firewallcmd-ipset

该配置表示,一分钟内如果ssh登陆失败1次,则封锁访问的IP一分钟,同时排除本地回环地址和一些内网网段。(参数含义见 [DEFAULT] 模块处解析,实际请根据业务需求进行配置

修改完配置文件后重启服务生效

# systemctl restart fail2ban

测试下效果,第一次ssh连接故意输错密码,第二次ssh连接就已经连接不上了,等待一分钟后又能继续连接

Fail2Ban-Linux防SSH暴力破解工具

四、常用命令汇总

查看日志文件

# less /var/log/fail2ban.log

查看启用的模块列表

# fail2ban-client status

Fail2Ban-Linux防SSH暴力破解工具

查看 sshd 模块封堵的 IP 列表

# fail2ban-client status sshd

Fail2Ban-Linux防SSH暴力破解工具

取消 sshd 模块中被封堵的 IP

# fail2ban-client set sshd unbanip 85.209.11.27