CrowdSec 防护软件安装与使用

1、环境介绍
操作系统版本:centos 7.9

2、存储库安装

curl -s https://install.crowdsec.net | sudo sh

在这里插入图片描述
3、安装安全引擎CrowdSec

yum install crowdsec

启动

systemctl start crowdsec
systemctl enable crowdsec

4、安装修正组件

yum install crowdsec-firewall-bouncer-iptables

启动

systemctl start crowdsec-firewall-bouncer
systemctl enable crowdsec-firewall-bouncer

5、添加到控制台
https://app.crowdsec.net/
注册后登录
在这里插入图片描述
在这里插入图片描述

sudo cscli console enroll xxxxx

刷新后,点接受就注册进来了
在这里插入图片描述
在这里插入图片描述
6、订阅黑名单
在这里插入图片描述
找到合适的黑名单订阅
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
返回安全引擎 已经可以看到订阅了和名单
在这里插入图片描述

**以下为额外补充:以crowdsec 为中央处理器,在需要防护的服务器部署修正组件(这里以nginx为例),存储在共享nfs中,然后crowdsec分析,通过filebeat、logstash等工具收集日志到ES用于分析

1、nginx 开启日志
主配置文件,设置如下

设置日志格式

  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/50-18-accesslog.log  main;

在这里插入图片描述
设置脚本和计划任务,按天分割日志,删除7天前日志

#!/bin/bash

# 配置部分
LOG_DIR="/usr/local/nginx/logs"
LOG_FILE="50-118-accesslog.log"
ARCHIVE_DIR="${LOG_DIR}/archive"
DAYS_TO_KEEP=7
NGINX_PID_FILE="/usr/local/nginx/nginx.pid"

# 确保归档目录存在
mkdir -p ${ARCHIVE_DIR}

# 获取当前日期
CURRENT_DATE=$(date +"%Y-%m-%d")

# 移动日志文件并创建新的日志文件
if [ -f "${LOG_DIR}/${LOG_FILE}" ]; then
    mv ${LOG_DIR}/${LOG_FILE} ${ARCHIVE_DIR}/${LOG_FILE}.${CURRENT_DATE}
    touch ${LOG_DIR}/${LOG_FILE}
    # 通知 Nginx 重新打开日志文件
    if [ -f "${NGINX_PID_FILE}" ]; then
        kill -USR1 $(cat ${NGINX_PID_FILE})
    else
        echo "Nginx PID file ${NGINX_PID_FILE} does not exist."
    fi
else
    echo "Log file ${LOG_DIR}/${LOG_FILE} does not exist."
fi

# 删除 7 天前的日志文件
find ${ARCHIVE_DIR} -type f -name "${LOG_FILE}.*" -mtime +${DAYS_TO_KEEP} -exec rm -f {} \;

# 压缩归档目录中的日志文件
find ${ARCHIVE_DIR} -type f -name "${LOG_FILE}.*" -exec gzip {} \;

在这里插入图片描述
创建计划任务

0 0 * * * /usr/local/nginx/logs/rotate_nginx_logs.sh

在这里插入图片描述
3、配置nfs服务器,用于共享日志
https://blog.csdn.net/zyj81092211/article/details/127300889
配置文件

4、安装nginx的修复组件,用于下发策略
配置server端api可以外部访问(/etc/corwdsec/config.yaml)
在这里插入图片描述
添加防火墙规则

 firewall-cmd --permanent --add-port=8080/tcp
 firewall-cmd --reload

客户端安装
首先在server端添加一个bouncers,添加后生成一个key 下面到客户端下配置文件

cscli bouncers add 10.99.50.119 #这个ip地址我用作name 这里填写的是name

在这里插入图片描述

curl -s https://install.crowdsec.net | sudo sh
yum install crowdsec-firewall-bouncer-iptables

更改配置(/etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml),这里key填写上面获取的

在这里插入图片描述

启动

systemctl start crowdsec-firewall-bouncer
systemctl enable crowdsec-firewall-bouncer

启动后返回server端是否添加成功

cscli bouncers list

在这里插入图片描述
在客户端上 查看黑名单

ipset list crowdsec-blacklists

在这里插入图片描述
5、安装场景、解析器或者集合

Collections(集合):
Collections是一组相关联的Scenarios或Parsers的集合。它们通常按照功能、威胁类型或应用场景来组织,方便用户管理和部署。例如,可能会有一个专门针对Web应用攻击的Collection,里面包含了多种检测和响应Web攻击的Scenarios。Collections简化了规则管理和更新过程,用户可以一次性安装或更新整个集合,而不是单独管理每个Scenario或Parser。

Scenarios(场景):
Scenarios是CrowdSec的核心组件之一,它们定义了一系列规则和逻辑,用于识别特定的安全事件或威胁行为。每个Scenario针对一个具体的攻击模式或异常行为,比如SSH暴力破解、HTTP探查、DDoS攻击等。当CrowdSec通过Parsers解析日志或数据流时,它会根据Scenario中的规则来判断是否存在匹配的威胁,并根据配置采取相应措施,比如记录日志、封锁IP地址或执行其他自定义动作。

Parsers(解析器):
Parsers负责解析各种日志文件或数据流,提取出CrowdSec所需的信息。它们是CrowdSec理解系统日志、网络流量或任何其他数据输入的关键。每个Parser针对特定的数据格式或日志类型,比如解析Apache/Nginx的访问日志、系统日志、防火墙日志等。Parsers将原始数据转换成CrowdSec内部可以理解和分析的结构化数据,进而让Scenarios能够基于这些数据做出安全决策。

nginx解析器

cscli parsers install crowdsecurity/nginx-logs

安装集合

cscli collections install crowdsecurity/base-http-scenarios

查看命令

cscli parsers list
cscli scenarios list
cscli collections list

6、配置corwdsec 检查nginx日志文件
修改解释器配置文件(/etc/crowdsec/acquis.yaml)

filename: /logs/12-101/12-101-accesslog.log
labels:
  type: nginx
poll_without_inotify: true
---
filename: /logs/50-118/50-118-accesslog.log
labels:
  type: nginx
poll_without_inotify: true
---
filename: /logs/50-119/50-119-accesslog.log
labels:
  type: nginx
poll_without_inotify: true

在这里插入图片描述

重启

systemctl restart crowdsec

7、白名单和黑名单

mkdir -p /usr/local/etc/crowdsec/postoverflows/s01-whitelist/

vi /etc/crowdsec/postoverflows/s01-whitelist/mywhitelist.yaml
添加类似如下

name: crowdsecurity/whitelists
description: "Whitelist events from my ip addresses"
whitelist:
  reason: "my ip ranges"
  ip:
    - "80.x.x.x"
  cidr:
    - "80.x.x.x/24"

重新加载配置

systemctl reload crowdsec

在决策列表中操作黑白名单
白名单

cscli decisions add --ip 1.2.3.4 --type bypass --duration 24h
cscli decisions add --ip 192.168.1.100 --type bypass --duration forever
cscli decisions delete --ip 192.168.1.100 --type bypass

黑名单

cscli decisions add --ip 1.2.3.4 --type ban --duration 24h
cscli decisions add --ip 1.2.3.4 --type ban --duration forever
cscli decisions delete --ip 1.2.3.4 --type ban

8、将日志采集到es中(es集群前面文章的有介绍)
(1)安装filebeat(我的es是7.x)
安装软件源

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
vi /etc/yum.repos.d/elastic.repo

添加如下

[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

安装

yum install filebeat

编辑配置文件替换如下

vi /etc/filebeat/filebeat.yml

自行更换es服务器地址信息

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /usr/local/nginx/logs/50-119-accesslog.log
  fields_under_root: true
  fields:
    log_type: nginx

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

setup.template.settings:
  index.number_of_shards: 1

# 禁用 ILM
setup.ilm.enabled: false

setup.template.name: "nginx-accesslog"
setup.template.pattern: "50-119-accesslog-*"

output.elasticsearch:
  hosts: ["esmn01.wtown.com:9200"]
  protocol: "http"
  username: "xxxx"
  password: "xxxx"
  index: "50-119-accesslog-%{+yyyy.MM}"

processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

启动

systemctl restart filebeat
systemctl enable filebeat
  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值