home server 篇五:云“fail2ban” [Crowdsec]

2022-08-16 13:24:29 1点赞 9收藏 1评论

介绍

上篇的fail2ban是在受攻击时才采取行动,如果可以在攻击前就把恶意ip给ban了,岂不是更好。Crowdsec就差不多是这种服务,用户受攻击时上传攻击者的ip到云,然后云再把恶意ip分发给其它用户,理论上该ip就不能再攻击其他使用Crowdsec的用户了,起码是4个小时内。当然在一个ip还没发起攻击前是不会把它当成恶意ip的。

云“fail2ban” [Crowdsec]

Crowdsec行为和配置都非常像fail2ban,都要监听log,但它是SaaS服务,支持ipv4和ipv6,意味着用户需要和提供商合作提供基本的信息,才能ban恶意IP。所以在自己服务器里的Crowdsec只是个客户端,不算自建服务。

从日志来看,它的确在干活:crowdsecurity/community-blocklist: added 11528 entries, deleted 11502 entries。我没有认真看过官网,翻了几次车连耐心都没了,所以不知道怎么看blocklist,要是某天我动态ip变了,然后不幸的变到blocklist里的其中一个,也不知道怎么办,看日志是7天刷新一次,难道要关容器。算了,被ban的话只ban 4小时,等出问题后再解决吧。我发这些翻车文章的目的就是在钓大佬出来写更详细的教程给我抄,我相信只要铒放的够多就能钓出一个。

安装

要建一个叫acquis.yaml的文件,在后面才需要用。这次拿traefik和authelia做示范。

filenames:
!!- /var/log/traefik/access.log
labels:
!!type: traefik
---
filenames:
!!- /var/log/authelia.log
labels:
!!type: authelia

然后就可以用crowdsec的dockercompose了。

version: '3.0'
services:
!!crowdsec:
!!!!image: crowdsecurity/crowdsec:latest
!!!!container_name: crowdsec
!!!!environment:
!!!!!!PGID: "1000"
!!!!!!TZ: Asia/Shanghai
!!!!volumes:
!!!!!!- /home/用户名/docker/crowdsec/crowdsec:/etc/crowdsec/
!!!!!!- /home/用户名/docker/crowdsec/crowdsec/acquis.yaml:/etc/crowdsec/acquis.yaml
!!!!!!- /home/用户名/docker/crowdsec/data:/var/lib/crowdsec/data/
!!!!!!- /home/用户名/docker/traefik/logs/access.log:/var/log/traefik/access.log:ro
!!!!!!- /home/用户名/docker/authelia/config/authelia.log:/var/log/authelia.log/:ro
!!!!networks:
!!!!!!- traefik_proxy
!!!!restart: unless-stopped

networks:
!!traefik_proxy:
!!!!external: true

建好后用这个在容器里确认crowdsec有好好的在读log。不要理traefik.log,有用的是access.log。

cscli metrics

云“fail2ban” [Crowdsec]

crowdsec只是搜集信息,要执行操作的话还需要bouncer。Traefik的bouncer是献者写的,所以是beta版。https://hub.crowdsec.net/

云“fail2ban” [Crowdsec]

首先需要在crowdsec里请求BOUNCER的API_KEY,bouncer的名字随便取,例如bouncer-traefik:

cscli bouncers add bouncer-traefik

妥善保管这个API_KEY,弄丢了就要把crowdsec的相关文件全删了再来一遍了。

docker-compose.yml:

version: '3.0'

services:
!!crowdsec:
!!!!image: crowdsecurity/crowdsec:latest
!!!!container_name: crowdsec
!!!!environment:
!!!!!!PGID: "1000"
!!!!!!COLLECTIONS: "crowdsecurity/linux crowdsecurity/traefik LePresidente/authelia-logs LePresidente/authelia-bf"
!!!!!!TZ: Asia/Shanghai
!!!!volumes:
!!!!!!- /home/用户名/docker/crowdsec/crowdsec:/etc/crowdsec/
!!!!!!- /home/用户名/docker/crowdsec/crowdsec/acquis.yaml:/etc/crowdsec/acquis.yaml
!!!!!!- /home/用户名/docker/crowdsec/data:/var/lib/crowdsec/data/
!!!!!!- /home/用户名/docker/traefik/logs:/var/log/traefik/:ro
!!!!!!- /home/用户名/docker/authelia/config/authelia.log:/var/log/authelia.log/:ro
!!!!networks:
!!!!!!- traefik_proxy
!!!!restart: unless-stopped

!!bouncer-traefik:
!!!!image: fbonalair/traefik-crowdsec-bouncer:latest
!!!!container_name: bouncer-traefik
!!!!environment:
!!!!!!CROWDSEC_BOUNCER_API_KEY: 刚刚申请的
!!!!!!CROWDSEC_AGENT_HOST: crowdsec:8080
!!!!!!TZ: Asia/Shanghai
!!!!networks:
!!!!!!- traefik_proxy
!!!!depends_on:
!!!!!!- crowdsec
!!!!restart: unless-stopped

networks:
!!traefik_proxy:
!!!!external: true

Crowdsec的自由度比fail2ban高点,可以用middleware监控需要用的,fail2ban就像看门狗一样,不让进就不让进,crowdsec则像门卫,至少可以控制,所以在要保护的服务的动态配置middleware里加crowdsec-bouncer就行了。在traefik/config里创建个mw-crowdsec.yml:

http:
!!middlewares:
!!!!crowdsec-bouncer:
!!!!!!forwardauth:
!!!!!!!!address: http://bouncer-traefik:8080/api/v1/forwardAuth
!!!!!!!!trustForwardHeader: true

现在就能执行关于ip的操作了。如果想banip用这个,例如我要ban 192.168.0.24。

cscli decisions add --ip 192.168.0.24

然后192.168.0.24访问有对应middleware的服务将会得到forbidden,没有的则正常。

查看有没有ban ip的命令是这个。

cscli decisions list

用这个解ban。

cscli decisions delete --ip 192.168.0.24

云“fail2ban” [Crowdsec]

好了,就这样了,关于crowdsec的代码我也看不懂,有问题问gayhub去。

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

展开 收起

微软 (Microsoft) Office 365 家庭版/个人版 激活密钥 1年订阅 正版办公软件 店铺至尊指导服务+M365家庭版加强版-15个月

微软 (Microsoft) Office 365 家庭版/个人版 激活密钥 1年订阅 正版办公软件 店铺至尊指导服务+M365家庭版加强版-15个月

暂无报价

Micropoint 东方微点 网络版 杀毒软件

Micropoint 东方微点 网络版 杀毒软件

20000元起

Microsoft 微软 OFFICE 365 家庭版 会员

Microsoft 微软 OFFICE 365 家庭版 会员

239元起

《国家地理 每日精选》iOS数字版软件

《国家地理 每日精选》iOS数字版软件

暂无报价

《Picsew》iOS数字版软件

《Picsew》iOS数字版软件

暂无报价

Microsoft 微软 Office 365 个人版

Microsoft 微软 Office 365 个人版

249元起

Microsoft 微软 Office 2019 家庭学生版 密钥

Microsoft 微软 Office 2019 家庭学生版 密钥

189元起

WPS 金山软件 会员季卡

WPS 金山软件 会员季卡

22元起

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

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

399元起

《kirakira+》 iOS软件

《kirakira+》 iOS软件

暂无报价

《DARK SOULS III》(黑暗之魂3 )PC数字版游戏

《DARK SOULS III》(黑暗之魂3 )PC数字版游戏

暂无报价

《扫描全能王付费版》iOS数字版软件

《扫描全能王付费版》iOS数字版软件

暂无报价

WPS 金山软件会员 2年卡

WPS 金山软件会员 2年卡

149元起

《拍照取字 专业版》iOS数字版软件

《拍照取字 专业版》iOS数字版软件

暂无报价

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

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

249元起

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

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

269元起
1评论

发表评论请 登录
  • 最新
  • 最热
评论举报

请选择举报理由

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

相关文章推荐

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