使用fail2ban保护OpenWRT的luci登录页面

        为了方便管理我的OpenWRT,我使用了IPV4/IPV6公网直接访问我的OpenWRT。但是又觉得LUCI页面暴露在公网不够安全,所以研究了一下fail2ban发现用这个工具可以一定程度的保护好登录页面的安全。

        安装了fail2ban之后发现并没有适用于luci登录页面的规则,于是乎我看了一下其它规则,发现都是基于正则表达式匹配错误日志,而我本人对正则表达式略有研究,所以直接自己写了一个luci的登录失败匹配规则。

        废话不多说,直接上教程。

1.安装fail2ban

# 1 登录你的 OpenWRT
ssh root@192.168.1.1

# 2 更新 opkg
opkg update

# 3 安装 fail2ban
opkg install fail2ban

2.创建 luci 登录失败匹配规则

# 使用 vi / vim 编辑 luci 规则文件
vim /etc/fail2ban/filter.d/luci.conf


# ========== 文件内容 开始

# fail2ban filter configuration for luci


[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf


[Definition]


_daemon = luci

prefregex = ^%(__prefix_line)s<F-CONTENT>(?:[Ff]ailed).+</F-CONTENT>$

failregex = ^[Ff]ailed\s+login\s+on\s+/.*\s+for\s+.+\s+from\s+<HOST>(:\d+)?$

ignoreregex = 

# ========== 文件内容 结束

3.创建 fail2规则 

# 创建 fail2ban 规则目录 (默认不存在)
mkdir /etc/fail2ban/jail.d/

# 编辑 luci 规则
vim /etc/fail2ban/jail.d/luci.local

# ========== 文件内容 开始

[luci]
enabled  = true
filter   = luci
action   = iptables[name=LUCI, port=http, protocol=tcp]
logpath  = /tmp/log/system.log
maxretry = 5
bantime  = 604800


# ========== 文件内容结束

fail2ban规则中 port=http 就是默认的80端口 如果你的登录页面是 443可以用 https 也可以直接使用 443或者80或者其它实际的端口号

maxretry 就是密码错误次数 错误次数达到这个就封禁这个IP

bantime 就是封禁时间 (秒)

logpath = 具体的日志文件路径 

OpenWRT默认没有保存日志文件需要手动到 luci界面配置

         默认将系统日志写入文件是灰色的,也就是不写入。我们需要填入 /tmp/log/system.log 到里面,然后保存应用之后,OpenWRT才会把日志写入我们指定的路径。

4.重启fail2ban 并查看规则是否生效

# 重启 fail2ban
fail2ban-client restart

# 查看 fail2ban 状态
fail2ban-client status
# 执行这个命令后应该看到 Jail list里面有 luci
# Status
# |- Number of jail:      2
# `- Jail list:   luci, sshd


# 查看 luci 的错误次数以及封禁装
fail2ban-client status luci
#执行这个命令后应该会看到
# Status for the jail: luci
# |- Filter
# |  |- Currently failed: 0
# |  |- Total failed:     0
# |  `- File list:        /tmp/log/system.log
# `- Actions
#    |- Currently banned: 0
#    |- Total banned:     0
#    `- Banned IP list:

# 然后为了验证效果 你可以在OpenWRT的登录页面输错密码登录后 再执行 fail2ban-client status luci 就会看到 Currently failed 和 Total failed 数量增加了 错误次数达到 设定的值 就会封禁这个IP

至此大功告成

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值