home server 篇四:翻车的home server经验分享-[fail2ban]

2022-08-15 17:01:13 1点赞 20收藏 0评论

介绍

首先介绍下fail2ban是干嘛的,很简单,就是filter监视log,排查ban恶意IP,找到后丢进jail,被丢进jail后,action让那些ip不能继续尝试暴力破解了。你们要是看了authelia的文档也就知道authelia是自带fail2ban的,看看Security-Regulation就能明白。

但即使authelia ban了试图恶意突破它的ip,也只能保护ForwardAuth指向它的服务,其它的像jellyfin这类不能指向它的,依然在果奔,如下图的service3。翻车的home server经验分享-[fail2ban] good ip可以访问所有服务,bad ip因为被ban了,访问不了service1、service2和authelia,但是还是能访问service3的。翻车的home server经验分享-[fail2ban]

翻车的home server经验分享-[fail2ban]

然后我就在想怎么在一层里就能保护所有服务,所以就轮到fail2ban出场。翻车的home server经验分享-[fail2ban] 一开始我是不知道fail2ban的,又是在的时候看到的。这样无论是是在traefik这层,还是authelia这层,还是单独service这层,只要有恶意行为的IP就会被ban。如下图,good ip可以访问所有服务,bad ip一个服务都访问不了。翻车的home server经验分享-[fail2ban] 不过fail2ban官网里关于书写配置的说明相当骨干,对不懂代码的我非常不友好。翻车的home server经验分享-[fail2ban]

https://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Jails

翻车的home server经验分享-[fail2ban]

fail2ban

安装

我在ubuntu上使用fail2ban,网络配置依赖于nftables,但是这个镜像默认使用iptables,所以需要在action.d里override些配置才能用,不过都是用file形式,不用担心。然后我拿traefik做示范,这个示范只能监视traefik的BasicAuth的登陆,所以只有使用BasicAuth的服务被攻击超过5次时,才会触发ban action把恶意IP给ban了,其它没有使用BasicAuth的服务即使出现5次以上的无效登陆也不会触发ban action。不过要是恶意IP被ban了,那IP就无法访问traefik反代的任一服务了。翻车的home server经验分享-[fail2ban] 先建好文件夹,然后就是复制黏贴代码了,非常简单,除了port要改成自己用的之外,其它都不用修改。所以如果要用fail2ban,配置需要自己学怎么写。投机取巧的方法就是把所有ForwardAuth可以指向authelia全指向authelia,然后给authelia配置fail2ban,剩下不能这么干的,只能一步步做了。翻车的home server经验分享-[fail2ban]

翻车的home server经验分享-[fail2ban]

action.d/nftables-input.conf

[INCLUDES]
before = nftables.conf

[Init]
chain = f2b-chain-input
chain_hook = input

action.d/nftables-forward.conf

[INCLUDES]
before = nftables.conf

[Init]
chain = f2b-chain-forward
chain_hook = forward

filter.d/traefik-auth.conf

[Definition]
failregex = ^<HOST> - S+ [] "(GET|POST|HEAD) .+" 401 .+$
ignoreregex =

filter.d/traefik-botsearch.conf

[INCLUDES]
before = botsearch-common.conf

[Definition]
failregex = ^<HOST> - S+ [] "(GET|POST|HEAD) /<block> S+" 404 .+$

jail.d/traefik.conf

[traefik-auth]
enabled = true
banaction = nftables-forward
bantime = 86400
findtime = 600
port = 80,443,666
filter = traefik-auth
logpath = /var/log/traefik/access.log
maxretry = 5

[traefik-botsearch]
enabled = true
banaction = nftables-forward
bantime = 86400
findtime = 600
port = 80,443,666
filter = traefik-botsearch
logpath = /var/log/traefik/access.log
maxretry = 5

好了,所有的配置都写好了,是不是很简单。maxretry规定了最高重试次数,超过就ban。bantime规定了时间,单位是秒。所以上面的jail会在ip实施,在80,443,666任一端口,在600秒内,在BasicAuth里出现5次密码错误时,把ip ban 86400秒。

现在用docker compose建容器。把!全替换成空格。翻车的home server经验分享-[fail2ban]

翻车的home server经验分享-[fail2ban]

version: "3.5"

services:
!!fail2ban:
!!!!image: crazymax/fail2ban:latest
!!!!container_name: fail2ban
!!!!network_mode: "host"
!!!!cap_add:
!!!!!!- NET_ADMIN
!!!!!!- NET_RAW
!!!!volumes:
!!!!!!- "/home/用户名/docker/fail2ban/data:/data"
!!!!!!- "/home/用户名/docker/traefik/logs/access.log:/var/log/traefik/access.log:ro"
!!!!restart: always
!!!!environment:
!!!!!!- TZ=Asia/Shanghai
!!!!!!- F2B_LOG_TARGET=STDOUT
!!!!!!- F2B_LOG_LEVEL=INFO
!!!!!!- F2B_DB_PURGE_AGE=1d

使用

这样容器就建好了,来试下能不能ban ip。用portainer点进fail2ban容器的控制台,然后点连接,就进容器里了。不要介意我的access.log名字。

翻车的home server经验分享-[fail2ban]

fail2ban-client status

这样就能看到自己有什么jail。

fail2ban-client status jail的名字

这样就能看到自己jail有什么内容,主要看actions。

fail2ban-client set jail的名字 banip 目标IP

先试下ban 192.168.0.163。fail2ban-client set traefik-auth banip 192.168.0.163。然后用fail2ban-client status traefik-auth就能看到163被ban了。然后不需要在traefik里设置什么,163就访问不了任何traefik的服务了。

翻车的home server经验分享-[fail2ban]

unban就是在banip前加个un。

fail2ban-client set jail的名字 unbanip 目标IP

翻车的home server经验分享-[fail2ban]

Done,你们要是有什么不懂就去gayhub问,反正上面的配置我都看不懂。翻车的home server经验分享-[fail2ban]

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

任天堂 Nintendo Switch《舞力全开 Just Dance》 游戏兑换卡

任天堂 Nintendo Switch《舞力全开 Just Dance》 游戏兑换卡

169元起

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

258元起

Microsoft 微软 OFFICE 365 家庭版 会员

Microsoft 微软 OFFICE 365 家庭版 会员

106元起

WPS 金山软件 WPS 超级会员 3年卡

WPS 金山软件 WPS 超级会员 3年卡

328元起

Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储

Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储

299元起

Microsoft 微软 Office 365 个人版

Microsoft 微软 Office 365 个人版

106元起

Microsoft 微软 office365家庭版microsoft365增强版15个月

Microsoft 微软 office365家庭版microsoft365增强版15个月

273.05元起

Microsoft 微软 office专业版永久激活码office2019增强版终身版outlook密钥

Microsoft 微软 office专业版永久激活码office2019增强版终身版outlook密钥

249元起

Microsoft 微软 OFFICE 365 个人版 办公软件

Microsoft 微软 OFFICE 365 个人版 办公软件

198元起

WPS超级会员4年套餐pdf转word排版PPT润色模板素材店铺

WPS超级会员4年套餐pdf转word排版PPT润色模板素材店铺

暂无报价

WPS超级会员Pro套餐4年卡1488天官方正版pdf转word排版

WPS超级会员Pro套餐4年卡1488天官方正版pdf转word排版

729.6元起

国行版 Switch体感游戏套装 《健身环大冒险》

国行版 Switch体感游戏套装 《健身环大冒险》

269元起

WPS 金山软件 会员季卡

WPS 金山软件 会员季卡

59.85元起

Microsoft 微软 office365家庭版个人版激活密钥office2021账户激活

Microsoft 微软 office365家庭版个人版激活密钥office2021账户激活

198元起

微软(Microsoft))win10win11专业版批量式授权企业版嵌入式正版化解决方案win11家庭版

微软(Microsoft))win10win11专业版批量式授权企业版嵌入式正版化解决方案win11家庭版

1288元起

Microsoft 微软 Office2016小型企业版 MAC专用

Microsoft 微软 Office2016小型企业版 MAC专用

149元起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
20
扫一下,分享更方便,购买更轻松