Files
StudyDiary-20261009/10-WebClipper/【新提醒】外网环境下使用fail2ban保护账号 - 攻略分享 飞牛私有云论坛 fnOS.md
CrazyJasonwell e97be9ac8c commit all
2026-10-09 22:06:40 +08:00

93 lines
2.3 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\[i=s\] 本帖最后由 神经蛙\_r9959 于 2024-11-18 14:05 编辑 \[/i\]
背景
> 使用nas的小伙伴通常会用ddns或者IPV6把服务暴露到公网,方便访问,一旦暴露到公网,不可避免的会被扫描爆破,一旦被爆破对我们来说也是一个灾难,可能好几年的图片都丢失,所以最好还是加一道防护,防止爆破,这里我是用fail2ban对账号进行保护
#### 1.安装fail2ban
```null
#1. 安装fail2ban
sudo apt install fail2ban
```
#### 2\. 添加日志过滤的配置
```null
#
sudo vim /etc/fail2ban/filter.d/trim_main.conf
```
```null
#以下内容写入到/etc/fail2ban/filter.d/trim_main.conf
[Definition]
failregex = MAINEVENT:.*"template":"LoginFail".*"IP":"<HOST>"
ignoreregex =
```
#### 3\. 设置要ban的规则
```null
#
sudo vim /etc/fail2ban/jail.local
```
```null
#把下面配置写入jail.local
[DEFAULT]
# 忽略的IP地址列表,局域网内的ip不做限制
ignoreip = 127.0.0.1/8 192.168.1.0/24
# 默认的禁用时间(秒)
bantime = 3600
# 最大失败尝试次数
maxretry = 5
# 日志级别
loglevel = 3
[trim_main]
enabled = true
filter = trim_main
logpath = /var/log/syslog
maxretry = 5
bantime = 3600
findtime = 600
#若想ban掉某个ip,不让他访问飞牛服务器任何端口,就用这个配置
#action = iptables-allports[name=trim_main, port="all"]
#只ban 掉飞牛5667端口访问权限
action = iptables-multiport[name=trim_main, port="5667", protocol=tcp]
```
以上参数可根据自己的需求做调整,比如密码错误次数,ban的时间长短,还有ban的端口,因为我对外暴露的就一个5667端口,所以这里我就ban了5667,如果想直接ban掉ip的所有访问权限,直接把 `action = iptables-allports[name=trim_main, port="all"]`的注释去掉,把5667那个配置注释即可
#### 4\. fail2ban基本用法
```null
#启动
sudo systemctl start fail2ban
#停止
sudo systemctl stop fail2ban
# 重启
sudo systemctl stop fail2ban
# 查看被ban的ip
sudo fail2ban-client banned
# 解除某个被ban的ip
sudo fail2ban-client set trim_main unbanip x.x.x.x
#开机启动fail2ban
sudo systemctl enable fail2ban
# 禁止开机启动
sudo systemctl disable fail2ban
```
#### 5.飞牛的服务日志查看
```null
sudo tail -f /var/log/syslog
```