清夏晚风

Linux 安全加固(Fail2Ban保护SSH和NGINX)

本页最后更新时间:2022年8月23日

参考教程

利用Fail2Ban保护你的服务器(Fail2Ban使用教程)

简介:

fail2ban 是 Linux 上的一个著名的开源入侵保护服务框架,它可以监控多个系统的日志文件(例如:/var/log/auth.log 或者 /var/log/secure)并根据检测到的任何可疑的行为自动触发不同的防御动作。事实上,fail2ban 在防御对SSH服务器的暴力密码破解上非常有用,同时它也可以通过监控web服务器的日志(如Nginx、Apache)从而实现异常IP自动封禁。

安装 Fail2Ban

CentOS (yum包管理器)

1
sudo yum install fail2ban

Debian&Ubuntu (apt包管理器)

1
sudo apt install fail2ban

调整 Fail2Ban 配置文件

1
nano /etc/fail2ban/jail.conf

在配置文件的“[DEFAULT]”区,你可以在此定义所有受监控的服务的默认参数,另外在特定服务的配置部分,你可以为每个服务(例如SSH,Apache等)设置特定的配置来覆盖默认的参数配置。

这三个是比较重要配置项,默认值如下

1
2
3
4
5
6
# 封禁时间
bantime = 10m
# 在多长时间内
findtime = 10m
# 最大失败次数
maxretry = 5

它的意思是:在10分钟内,如果失败超过5次,那么就将这个IP丢到小黑屋里10分钟。

配置SSH登录保护

在配置区块中找到SSH servers字样的配置片段,然后默认配置就如下图所示,可以看到这个已经是配置好了,我们只需要在前面加一个enabled = true标记这个配置片段已经启用就行了。

Fail2Ban_ssh配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[sshd]
# 启用封禁规则
enabled = true
# 这里ssh就等价于你的ssh端口了,不用再特意把端口号写上去了
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

# 自定义封禁规则
# 封禁时间
bantime = 3600h
# 在多长时间内
findtime = 24h
# 最大失败次数
maxretry = 3
# 封禁动作,拉入IP黑名单,禁止该IP访问SSH端口
banaction = iptables-multiport
# 上述规则意思是:在24小时内ssh验证失败三次,将此IP封禁3600小时(150天)

按需求修改代码并使用以下代码重启服务

1
2
3
4
5
6
# 开启自启动
sudo systemctl enable fail2ban
# 启动服务
sudo systemctl start fail2ban
# 查看服务状态
sudo systemctl status fail2ban

看到提示running就OK了

如果我们在启动后又修改了配置文件的话,可以使用重载命令来使配置文件生效:

1
2
3
4
#重启服务(推荐)
sudo systemctl restart fail2ban
#重载配置
sudo systemctl reload fail2ban

查看封禁列表

接着我们可以来检查一下装了 fail2ban 的服务器的封禁列表,使用fail2ban-client status [监狱名称]来查看封禁列表

1
2
3
4
5
6
7
8
9
10
[root@server ~]# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 4
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 82.116.189.56

解封命令是fail2ban-client set [监狱名称] unbanip [封禁IP]

1
fail2ban-client set sshd unbanip 82.116.189.56

这行命令就可以解封在sshd监狱中的这个IP

配置NGINX过载保护

  • Title:
  • Author: 清夏晚风
  • Created at : 2026-01-13 16:48:23
  • Updated at : 2026-01-13 16:48:23
  • Link: https://blog.kimikkorow.eu.org/计算机基础/操作系统相关/操作系统使用相关/Linux/公共基础/Linux 安全加固/Fail2Ban 保护SSH和NGINX/
  • License: This work is licensed under CC BY-NC-SA 4.0.