filebrowser真是个好东西,轻量级web文件管理、共享,各种音频、mp4在线播放,最关键的是轻量级,可以在各种路由器上部署,个中好处我就不多介绍了,当然了缺点也很明显,就是简陋。filebrowser的安装使用方法我就不阐述了,网上大把。filebrowser官网
我使用了IPV4/IPV6公网直接访问我的filebrowser。但是又觉得filebrowser暴露在公网不够安全,所以研究了一下fail2ban发现用这个工具可以一定程度的保护好filebrowser的安全。
安装了fail2ban之后并没有适用于filebrowser的规则,于是乎我看了一下其它规则,发现都是基于正则表达式匹配错误日志,而我本人对正则表达式略有研究,所以直接自己写了一个filebrowser的匹配规则。该规则只匹配登录错误,带密码的分享打开页面就会生成一个错误日志,输入分享密码错误的日志与打开页面的日志一致,所以无法区分。
废话不多说,直接上教程。
1.安装fail2ban
# 1 登录你的 linux
ssh root@192.168.1.1
# 2 更新 apt 源
sudo apt update
# 3 安装 fail2ban
sudo apt install fail2ban
2.创建 filebrowser 的匹配规则
# 使用 vi / vim 编辑 filebrowser 规则文件
vim /etc/fail2ban/filter.d/filebrowser.conf
# ========== 文件内容 开始
# fail2ban filter configuration for filebrowser
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf
[Definition]
_daemon = filebrowser
prefregex = ^%(__prefix_line)s<F-CONTENT>/api/login.+</F-CONTENT>$
failregex = ^/api/login:\s+(?:401|403)\s+<HOST>(:\d+)?\s*<nil>$
ignoreregex =
# ========== 文件内容 结束
3.创建 fail2规则
# 创建 fail2ban 规则目录 (默认不存在)
mkdir /etc/fail2ban/jail.d/
# 编辑 luci 规则
vim /etc/fail2ban/jail.d/filebrowser.local
# ========== 文件内容 开始
[filebrowser]
enabled = true
filter = filebrowser
action = iptables[name=filebrowser, port=8088, protocol=tcp]
logpath = /home/user/.filebrowser/filebrowser.log
maxretry = 5
bantime = 604800
# ========== 文件内容结束
fail2ban规则中 port=http 就是默认的80端口 如果你的登录页面是 443可以用 https 也可以直接使用 443或者80或者其它实际的端口号
maxretry 就是密码错误次数 错误次数达到这个就封禁这个IP
bantime 就是封禁时间 (秒)
logpath = 具体的日志文件路径
filebrowser 配置
配置filebrowser的端口,日志都要与fail2ban里面保持一致。
# 编辑配置文件 filebrowser.json
# ====== 文件内容开始
{
"address": "0.0.0.0",
"port": 8088,
"database": "./filebrowser.db", #数据库文件路径
"log": "./filebrowser.log", #日志文件路径
"locale": "zh-cn",
"username": "admin", #后台默认用户名
"password": "", #后台默认密码
"root": "/",
# "cert": "./host.crt",
# "key": "./host",
"scope": "/"
}
# ====== 文件内容结束
# 启动 filebrowser
/usr/bin/filebrowser -c filebrowser.json
# 注意 log文件路径一定要跟 faile2ban内保持一致
4.重启fail2ban 并查看规则是否生效
# 重启 fail2ban
fail2ban-client restart
# 查看 fail2ban 状态
fail2ban-client status
# 执行这个命令后应该看到 Jail list里面有 filebrowser
# Status
# |- Number of jail: 2
# `- Jail list: filebrowser, sshd
# 查看 filebrowser 的错误次数以及封禁数
fail2ban-client status filebrowser
#执行这个命令后应该会看到
# Status for the jail: filebrowser
# |- Filter
# | |- Currently failed: 0
# | |- Total failed: 0
# | `- File list: /home/user/.filebrowser/filebrowser.log
# `- Actions
# |- Currently banned: 0
# |- Total banned: 0
# `- Banned IP list:
# 然后为了验证效果 你可以在 filebrowser 的登录页面输错密码登录后 再执行 fail2ban-client status filebrowser 就会看到 Currently failed 和 Total failed 数量增加了 错误次数达到 设定的值 就会封禁这个IP
至此大功告成