当前位置: 首页 > news >正文

docker+nginx+keepalived+openappsec+web ui+crowdsec部署安全代理

docker+nginx+keepalived+openappsec+web ui+crowdsec部署安全代理

  • 一、环境介绍
  • 二、基础环境安装
    • 1、优化系统参数
    • 2、安装docker
    • 3、创建容器网络
    • 4、安装测试容器(可选)
  • 三、安装nginx
    • 1、拉取镜像
    • 2、创建映射目录
    • 3、准备默认配置文件
    • 4、证书文件准备
    • 5、启动nginx容器
    • 6、创建加载配置脚本
  • 四、安装openappsec-agent
    • 1、拉取镜像
    • 2、创建映射目录
    • 3、创建默认配置文件
    • 4、启动openappsec-agent 容器(本地管理)
    • 5、常用命令
    • 6、测试拦截
      • (1)、创建acmeaudit 配置文件
      • (2)、登录测试
      • (3)、产看拦截日志
  • 五、使用openappsec webui 集中管理(可选)
    • 1、登陆webui
    • 2、创建配置文件
    • 3、获取token
      • (1)、配置文件中获取token
      • (2)、用一个脚本加载token(可选)
    • 4、重新创建容器
    • 5、创建资产
    • 6、查看拦截结果与日志
  • 六、openappsec更换高级机器学习模型
    • 1、下载高级机器学习模型
    • 2、创建映射目录
    • 3、重新创建容器
    • 4、查看状态
  • 七、安装keepalived
    • 1、构建keepalived 容器
      • (1)、dockerfile 文件
      • (2)、创建容器镜像
    • 2、keepalived 配置文件
      • (1)、主节点配置
      • (3)、备用节点配置
      • (3)、nginx检查脚本
    • 3、nginx健康页面配置
    • 4、启动keepalivede容器
    • 5、添加防火墙规则
  • 八、crowdsec配置
    • 1、创建相关目录
    • 2、更改优化nginx配置文件
    • 3、NFS配置
      • (1)、NFS服务器创建
      • (2)、/etc/exports 文件设置
      • (3)、映射NFS 共享目录
      • (4)、重新生成nginx日志
    • 4、crowdsec 服务端安装
      • (1)、创建compose文件
      • (2)、配置log读取
      • (3)、启动
      • (4)、查看状态
    • 5、日志轮切
    • 6、crowdsec 客户端安装
      • (1)、在crowdsec severe 端生成api key
      • (2)、安装客户端crowdsec-firewall-bouncer-iptables
      • (3)、更改配置文件
      • (4)、启动
      • (5)、黑名单测试
    • 7、将引擎注册到web ui
      • (1)、注册或登录web ui
      • (2)、新建引擎
    • 8、黑名单/白名单操作
      • (1)、临时设置
      • (2)、组织白名单
    • 9、设置crowdsec server防火墙规则
      • (1)、规则设置
      • (2)、永久生效

一、环境介绍

操作系统:龙蜥 os 8.10
docker : 26.1.3
keepalived:
nginx: open-appsec-nginx 1.25.4
openappsec:1.1.27
节点规划:

节点名称 CPU 内存 IP地址 主备 VIP
Proxy-01 8核心 8GB 10.99.50.128 master 10.99.50.130
Proxy-01 8核心 8GB 10.99.50.129 slave

说明:nginx keepalived openappsec 需在在两台机器上同时安装

二、基础环境安装

1、优化系统参数

#!/bin/bash# 龙蜥 OS 8 系统参数优化脚本
# 建议使用 root 用户执行set -eecho "开始优化系统参数..."# 1. 备份 sysctl.conf 和 limits.conf
cp /etc/sysctl.conf /etc/sysctl.conf.bak.$(date +%F)
cp /etc/security/limits.conf /etc/security/limits.conf.bak.$(date +%F)# 2. 优化内核参数
cat > /etc/sysctl.d/99-anolis-tuning.conf <<EOF
fs.file-max = 2097152
vm.swappiness = 10
vm.dirty_ratio = 20
vm.dirty_background_ratio = 5
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_forward = 1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_max_syn_backlog = 4096
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 16384 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
EOFsysctl --system# 3. 设置最大文件句柄数
cat >> /etc/security/limits.conf <<EOF* soft nofile 1048576
* hard nofile 1048576
* soft nproc 65535
* hard nproc 65535
EOF# 4. 设置 PAM limits 模块
if ! grep -q pam_limits.so /etc/pam.d/common-session; thenecho "session required pam_limits.so" >> /etc/pam.d/common-session
fi# 5. 修改默认 ulimit
cat > /etc/profile.d/ulimit.sh <<EOF
ulimit -n 1048576
ulimit -u 65535
EOF
chmod +x /etc/profile.d/ulimit.sh# 6. 优化完成提示
echo "系统参数优化完成,建议重启生效。"

2、安装docker

#!/bin/bashset -eecho "👉 添加 Docker 官方源(使用清华镜像加速)..."
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repoecho "👉 安装 Docker 组件..."
sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginecho "👉 配置 Docker 镜像加速与私有仓库..."
sudo mkdir -p /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{"insecure-registries": ["10.90.101.1:5000"],"registry-mirrors": ["http://10.90.101.1:5000"]
}
EOFecho "👉 启动并设置开机启动 Docker..."
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable --now dockerecho "👉 测试 Docker 安装..."
sudo docker run --rm hello-worldecho "✅ Docker 安装与配置完成!"

3、创建容器网络

docker network create nginx-network

4、安装测试容器(可选)

注意测试后,删除此容器,以避免不必要的安全事件

docker run -d   --name acmeaudit  --network nginx-network  -p 8080:3000   public.ecr.aws/f4q1i2m2/acmeaudit:latest

访问8080 端口,输入’ or 1=1–,密码随便写,可以直接sql注入登陆
在这里插入图片描述
显示这里就说明成功了
在这里插入图片描述

三、安装nginx

1、拉取镜像

docker pull ghcr.io/openappsec/nginx-attachment:latest

2、创建映射目录

mkdir -p /opt/work/nginx-docker/{cert,conf.d,logs}

在这里插入图片描述

3、准备默认配置文件

cat > /opt/work/nginx-docker/conf.d/default.conf <<EOF
server {listen 80 default_server;server_name _; # 匹配所有域名location / {# 返回 403 错误,禁止 IP 地址访问return 403;}
}server {listen 443 ssl default_server;server_name _;ssl_certificate    /etc/nginx/cert/xxx.pem;ssl_certificate_key      /etc/nginx/cert/xxx.key;# 其他 SSL 配置location / {return 403;}
}
EOF

4、证书文件准备

可以使用企业证书或者使用免费证书:参考
放到/opt/work/nginx-docker/cert目录下
在这里插入图片描述

5、启动nginx容器

docker run --name open-appsec-nginx \
--network=nginx-network \
--ipc=host \
--restart=always \
-p 80:80 \
-p 443:443 \
-v /opt/work/nginx-docker/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/work/nginx-docker/conf.d:/etc/nginx/conf.d \
-v /opt/work/nginx-docker/cert:/etc/nginx/cert \
-v /opt/work/nginx-docker/logs:/var/log/nginx \
-e TZ=Asia/Shanghai \
-d ghcr.io/openappsec/nginx-attachment:latest

6、创建加载配置脚本

cat > /opt/work/nginx-docker/nginx.sh <<'EOF'
#!/bin/bash
docker exec open-appsec-nginx nginx "$@"
EOF
chmod +x /opt/work/nginx-docker/nginx.sh
ln -s /opt/work/nginx-docker/nginx.sh /usr/local/bin/nginx-docker

在这里插入图片描述

四、安装openappsec-agent

1、拉取镜像

docker pull ghcr.io/openappsec/agent:latest

2、创建映射目录

mkdir -p /opt/work/openappsec/local_policy

3、创建默认配置文件

cat >/opt/work/openappsec/local_policy/local_policy.yaml <<'EOF'
policies:default:triggers:- appsec-default-log-triggermode: prevent-learnpractices:- webapp-default-practicecustom-response: appsec-default-web-user-responsespecific-rules: []practices:- name: webapp-default-practiceopenapi-schema-validation:configmap: []override-mode: prevent-learnsnort-signatures:configmap: []override-mode: prevent-learnweb-attacks:max-body-size-kb: 1000000max-header-size-bytes: 102400max-object-depth: 40max-url-size-bytes: 32768minimum-confidence: highoverride-mode: prevent-learnprotections:csrf-protection: inactiveerror-disclosure: inactivenon-valid-http-methods: falseopen-redirect: inactiveanti-bot:injected-URIs: []validated-URIs: []override-mode: prevent-learnlog-triggers:- name: appsec-default-log-triggeraccess-control-logging:allow-events: falsedrop-events: trueadditional-suspicious-events-logging:enabled: trueminimum-severity: highresponse-body: falseappsec-logging:all-web-requests: falsedetect-events: trueprevent-events: trueextended-logging:http-headers: falserequest-body: falseurl-path: falseurl-que
http://www.dtcms.com/a/329067.html

相关文章:

  • IDEA创建一个VUE项目
  • SVN提交服务器拒绝访问的问题
  • 服务器硬件电路设计之 I2C 问答(五):I2C 总线数据传输方向如何确定、信号线上的串联电阻有什么作用?
  • 从零开始搭建私服务器
  • opencv:直方图
  • 【AI论文】GLM-4.5:具备智能体特性、推理能力与编码能力的(ARC)基础模型
  • Visual Studio Code 跨平台快捷键指南:Windows 与 macOS 全面对比
  • 第十三节:后期处理:效果增强
  • 开发避坑指南(24):RocketMQ磁盘空间告急异常处理,CODE 14 “service not available“解决方案
  • 2025年,Javascript后端应该用 Bun、Node.js 还是 Deno?
  • python基于Hadoop的超市数据分析系统
  • 高防CDN和高防IP的各自优势
  • Sklearn 机器学习 异常值检测 孤立深林
  • 《设计模式之禅》笔记摘录 - 15.观察者模式
  • 【完整源码+数据集+部署教程】军事伪装目标分割系统源码和数据集:改进yolo11-EMSC
  • 最新去水印小程序系统 前端+后端全套源码 多套模版 免授权
  • Four.Meme 重大更新:Bonding Curve Cap 从 24 BNB 降至 18 BNB,这意味着什么?
  • 浏览器面试题及详细答案 88道(23-33)
  • 【密码学实战】国密SM2算法介绍及加解密/签名代码实现示例
  • 用了Cursor AI之后,我的编程效率翻倍了?——一位程序员的真实体验分享
  • Java毕业设计选题推荐 |基于SpringBoot的水产养殖管理系统 智能水产养殖监测系统 水产养殖小程序
  • 二层业务端口相关配置
  • STM32H743开发周记问题汇总(串口通讯集中)
  • 免费生成视频,Coze扣子工作流完全免费的视频生成方案,实现图生视频、文生视频
  • Windows 系统 上尝试直接运行 .sh(Shell 脚本)文件
  • 从感知到执行:人形机器人低延迟视频传输与多模态同步方案解析
  • 基于大数据spark的医用消耗选品采集数据可视化分析系统【Hadoop、spark、python】
  • ABP vNext 的工业时间序列治理:InfluxDB vs TimescaleDB 落地对比
  • Python 环境隔离实战:venv、virtualenv 与 conda 的差异与最佳实践
  • Electron自定义菜单栏及Mac最大化无效的问题解决