使用Fail2ban保护服务器SSH
659 字
3 分钟
使用Fail2ban保护服务器SSH

前言
在查看CDN服务器的日志过程中,突然想去看ssh的日志,结果一看,总有很多服务器暴力破解,为此想给服务器加上Fail2ban保护SSH的想法(加上后发现也没多大用,如有问题请指出。)
环境
服务器系统:Debian 12
教程
更新:2024年7月9日
更新及下载安装Fail2ban
分别执行以下指令
apt updateapt install fail2ban -y备份Fail2ban配置文件
首先进入Fail2ban的目录
cd /etc/fail2ban/现在我们可以看到目前目录下是这样的

然后执行下方指令复制一遍配置文件,这样则会优先使用jail.local的配置
cp jail.conf jail.local配置sshd
然后就是编辑文件,这里我使用的是vi
vi jail.local我们往下面找到JAILS区[sshd]部分(大约在第275行)
修改为以下配置
[sshd]ignoreip = 127.0.0.1/8 # 白名单enabled = true # 规则启用filter = sshd # 过滤规则(一般不变)port = 22 # 端口maxretry = 2 # 最大尝试次数findtime = 300 # 发现周期 单位sbantime = 600 # 封禁时间,单位s。-1为永久封禁banaction = iptables-multiport # 禁用方式#logpath = /var/log/auth.log # SSH 登陆日志位置backend = systemd # 获取 SSH 文件修改的后端(设置了这个那么 logpath 将会无效)然后键盘上输入
设置启用Fail2ban和启动Fail2ban
执行以下指令,分别启用和启动
systemctl enable fail2bansystemctl start fail2ban检查Fail2ban运行状态
执行以下指令检查Fail2ban是否正常运行
systemctl status fail2ban在Active后显示active (running),则代表Fail2ban正常运行
root@u:/etc/fail2ban# systemctl status fail2ban● fail2ban.service - Fail2Ban Service Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2023-01-04 10:14:58 CST; 7h ago Docs: man:fail2ban(1) Process: 451 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS) Main PID: 460 (fail2ban-server) Tasks: 5 (limit: 1150) Memory: 18.4M CPU: 19.749s CGroup: /system.slice/fail2ban.service └─460 /usr/bin/python3 /usr/bin/fail2ban-server -xf startJan 04 10:14:58 u systemd[1]: Starting Fail2Ban Service...Jan 04 10:14:58 u systemd[1]: Started Fail2Ban Service.Jan 04 10:15:00 u fail2ban-server[460]: Server ready执行以下指令检查Fail2ban的sshd规则是否正常运行
fail2ban-client status sshd出现以下信息则为正常运行
root@u:/etc/fail2ban# fail2ban-client status sshdStatus for the jail: sshd|- Filter| |- Currently failed: 2| |- Total failed: 5| `- File list: /var/log/auth.log`- Actions |- Currently banned: 0 |- Total banned: 1 `- Banned IP list:上面的Banned IP list为当前被封禁的IP列表
Debian12 安装F2B后无法正常启动问题
这个是因为不再使用/var/log/auth.log记录日志,可以通过
apt install rsyslog或配置backend = systemd来解决,上方配置已经使用第二种方法。
最后感谢您的阅读,如有问题请指出,谢谢。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
Alpine 中以二进制方式部署 EasyTier
部署介绍如何在 Alpine Linux 中以二进制方式部署 EasyTier,包括环境准备、OpenRC 开机自启配置、TUN 模式启用,以及非 root 用户运行时通过 setcap 授予 CAP_NET_ADMIN 权限解决网卡创建失败问题。
2
解决 VS Code 中 Claude Code 新版插件无法使用
技术2025-10-17
3
Nginx 通过 AutoIndex 实现目录浏览功能
技术2024-08-06
4
Docker 自建 Umami 网站流量统计工具
技术2024-07-23
5
K8s 环境下使用 HostNetwork 模式部署 Envoy Gateway
k8s2025-12-10
随机文章随机推荐

