咸鱼

咸鱼是以盐腌渍后,晒干的鱼

0%

fail2ban防暴力破解攻击

fail2ban 是一个用于防止暴力破解攻击的工具,它可以监控系统日志文件,当检测到异常的登录尝试时,会自动封禁对应的 IP 地址。以下是使用 fail2ban 的基本步骤和示例:

1. 安装 fail2ban

在不同的 Linux 发行版上,安装 fail2ban 的命令有所不同。

在 Ubuntu/Debian 上

1
2
sudo apt-get update
sudo apt-get install fail2ban

在 CentOS/RHEL 上

1
2
sudo yum install epel-release
sudo yum install fail2ban

2. 配置 fail2ban

fail2ban 的配置文件通常位于 /etc/fail2ban 目录下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sudo systemctl enable --now fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vim /etc/fail2ban/jail.local
```ini
[DEFAULT]
# 封禁时长(秒)
bantime = 3600
# 检测时间范围(秒)
findtime = 600
# 允许的最大失败次数
maxretry = 5

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log

复制配置文件

为了避免在更新 fail2ban 时覆盖你的配置,通常会复制默认配置文件来进行修改。

1
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

编辑 jail.local 文件

你可以使用任何文本编辑器打开 jail.local 文件进行编辑。以下是一个简单的示例,用于封禁多次 SSH 登录失败的 IP 地址:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[DEFAULT]
# 封禁时长(秒)
# bantime = 3600
# 封禁 1 天(可改为 -1 永久封禁)
bantime = 1d
# 检测时间范围(秒)
findtime = 600
# 允许的最大失败次数,达到封禁
maxretry = 5
# 忽略本地IP
ignoreip = 127.0.0.1/8 ::1
# 自动检测日志后端
backend = auto

注意:新版本(如v0.11.2)上面配置位于根节点下(非[DEFAULT]

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
# 对SSHD可以更严格
maxretry = 3

3. 启动和管理 fail2ban

启动 fail2ban 服务

1
sudo systemctl start fail2ban

设置开机自启

1
sudo systemctl enable fail2ban

查看 fail2ban 状态

1
sudo systemctl status fail2ban

4. 查看和管理封禁列表

查看当前封禁的 IP 地址

1
sudo fail2ban-client status sshd

解封某个 IP 地址

1
sudo fail2ban-client set sshd unbanip 192.168.1.100

解释

  • bantime:指定封禁 IP 地址的时长,单位为秒。
  • findtime:指定在多长时间内检测登录失败次数,单位为秒。
  • maxretry:指定允许的最大登录失败次数。
  • [sshd]:表示针对 SSH 服务进行配置。
  • enabled:是否启用该配置。
  • port:指定监控的端口。
  • filter:指定使用的过滤规则。
  • logpath:指定监控的日志文件路径。

5. 手动触发检查

若你想即刻检查 /var/log/auth.log 并依据配置进行封禁操作,可使用如下命令:

1
sudo fail2ban-client reload

此命令会重新加载 fail2ban 的配置,让其马上检查日志文件并按照配置规则对符合条件的 IP 进行封禁。

6. 主动封禁

1
sudo fail2ban-client set sshd banip 218.92.0.247