Coze 私有化部署安全加固实战:从服务器到容器的上线防护清单
Coze 安全加固方案|附完整命令
随着企业开始将 Coze、Coze Studio 或基于 Coze 能力构建的智能体平台部署到内网、私有云或公网环境中,安全加固已经不再是“可选项”,而是上线前必须完成的基础工作。Coze 这类 AI 应用编排平台通常会涉及用户登录、工作空间管理、插件调用、知识库、模型接口、API Token、数据库、对象存储、消息队列等多个组件,一旦配置不当,可能导致账号被撞库、Token 泄露、数据库暴露、插件被滥用、敏感知识库数据外泄等风险。
本文将从服务器、Docker、数据库、Redis、Nginx、HTTPS、防火墙、系统审计、日志、备份、密钥管理等多个维度,提供一套适用于 Coze 私有化部署环境的安全加固方案,并附上完整命令示例。你可以根据实际部署架构进行裁剪。
说明:本文命令以 Ubuntu 22.04 / Debian 系统为主,CentOS / Rocky Linux 可按需替换包管理器和服务名称。
一、整体安全加固思路
在对 Coze 进行安全加固前,需要先明确整体目标:
-
最小暴露面
只开放必要端口,例如 80、443、SSH 管理端口,数据库、Redis、MinIO 等组件禁止直接暴露公网。 -
最小权限原则
Coze 服务、数据库账号、系统用户、Docker 容器都应只拥有完成任务所需的最小权限。 -
敏感信息不明文暴露
API Key、数据库密码、JWT Secret、模型供应商 Token 等应通过.env、密钥管理系统或 CI/CD Secret 注入,避免写死在代码中。 -
启用 HTTPS
所有用户访问、API 调用、Webhook 回调均应通过 HTTPS 加密传输。 -
强化认证与访问控制
管理后台、API、插件接口应限制访问来源,必要时增加 IP 白名单、VPN、MFA 或统一身份认证。 -
可审计、可回滚、可恢复
关键操作需要有日志,数据库和配置需要定期备份,发生故障或攻击后可以快速恢复。
二、服务器基础安全加固
1. 更新系统软件包
上线前首先更新系统补丁,避免已知漏洞被利用。
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y
sudo apt autoclean
查看当前系统版本:
lsb_release -a
uname -a
2. 创建专用运维用户
不要长期使用 root 登录服务器,建议创建专用用户,并授予 sudo 权限。
sudo adduser cozeadmin
sudo usermod -aG sudo cozeadmin
验证用户是否具备 sudo 权限:
su - cozeadmin
sudo whoami
如果输出为:
root
说明权限正常。
3. 配置 SSH 密钥登录
在本地生成 SSH 密钥:
ssh-keygen -t ed25519 -C "coze-admin"
将公钥复制到服务器:
ssh-copy-id cozeadmin@你的服务器IP
或者手动追加:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
4. 禁止 root 远程登录和密码登录
编辑 SSH 配置:
sudo vim /etc/ssh/sshd_config
建议修改以下配置:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
如果想修改默认 SSH 端口,例如改为 22222:
Port 22222
重启 SSH 服务:
sudo systemctl restart ssh
检查 SSH 服务状态:
sudo systemctl status ssh
注意:修改 SSH 配置后,不要立即关闭当前终端。请先新开一个终端测试能否正常登录,确认无误后再退出原会话。
5. 设置防火墙规则
推荐使用 ufw 管理防火墙。
安装 ufw:
sudo apt install ufw -y
默认拒绝入站流量,允许出站流量:
sudo ufw default deny incoming
sudo ufw default allow outgoing
开放 SSH 端口:
sudo ufw allow 22222/tcp
开放 HTTP 和 HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
启用防火墙:
sudo ufw enable
查看状态:
sudo ufw status verbose
如果你没有修改 SSH 端口,使用:
sudo ufw allow 22/tcp
三、Docker 与容器安全加固
Coze 私有部署通常会使用 Docker 或 Docker Compose,因此容器安全非常关键。
1. 安装 Docker
sudo apt install ca-certificates curl gnupg lsb-release -y
添加 Docker 官方 GPG Key:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
添加 Docker 源:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装 Docker:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
启动 Docker:
sudo systemctl enable docker
sudo systemctl start docker
查看版本:
docker version
docker compose version
2. 限制 Docker Daemon 暴露
检查 Docker 是否监听 TCP 端口:
sudo ss -lntp | grep dockerd
如果发现 Docker 监听了 2375 端口,必须立即关闭。Docker API 暴露公网是极高危风险。
检查配置文件:
sudo cat /etc/docker/daemon.json
建议配置如下:
sudo vim /etc/docker/daemon.json
写入:
{
"icc": false,
"userland-proxy": false,
"no-new-privileges": true,
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"live-restore": true
}
重启 Docker:
sudo systemctl restart docker
3. 避免容器使用 privileged 模式
检查当前容器是否启用了特权模式:
docker ps -q | xargs docker inspect --format '{{.Name}} {{.HostConfig.Privileged}}'
如果输出中存在 true,应检查对应容器是否确实必要。正常情况下,Coze Web、API、数据库、Redis 等容器都不应使用 privileged: true。
4. Docker Compose 安全建议
假设 Coze 使用 docker-compose.yml 部署,应尽量遵循以下原则:
- 不使用
privileged: true - 不挂载宿主机敏感目录,例如
/,/etc,/var/run/docker.sock - 数据库、Redis 不映射公网端口
- 服务之间使用内部网络
- 对容器增加资源限制
- 使用只读文件系统,必要目录单独挂载
示例配置片段:
services:
coze-web:
image: your-coze-web-image:latest
restart: unless-stopped
env_file:
- .env
ports:
- "127.0.0.1:8080:8080"
networks:
- coze_internal
security_opt:
- no-new-privileges:true
read_only: true
tmpfs:
- /tmp
mem_limit: 2g
cpus: 1.5
postgres:
image: postgres:15
restart: unless-stopped
env_file:
- .env
volumes:
- ./data/postgres:/var/lib/postgresql/data
networks:
- coze_internal
security_opt:
- no-new-privileges:true
ports:
- "127.0.0.1:5432:5432"
redis:
image: redis:7
restart: unless-stopped
command: ["redis-server", "/etc/redis/redis.conf"]
volumes:
- ./redis.conf:/etc/redis/redis.conf:ro
- ./data/redis:/data
networks:
- coze_internal
ports:
- "127.0.0.1:6379:6379"
networks:
coze_internal:
driver: bridge
如果数据库和 Redis 只被容器内部访问,可以完全不写 ports,仅通过 Docker 内部网络访问。
四、Coze 环境变量与密钥加固
Coze 部署过程中通常会使用 .env 保存环境变量,例如数据库连接、Redis 地址、模型 API Key、JWT Secret、OAuth 配置等。该文件必须严格保护。
1. 设置 .env 文件权限
进入 Coze 部署目录:
cd /opt/coze
设置文件权限:
sudo chown cozeadmin:cozeadmin .env
chmod 600 .env
查看权限:
ls -l .env
期望输出类似:
-rw------- 1 cozeadmin cozeadmin 2048 Jan 1 10:00 .env
2. 生成高强度随机密钥
生成 JWT Secret:
openssl rand -base64 48
生成数据库密码:
openssl rand -base64 32
生成 Redis 密码:
openssl rand -hex 32
生成通用 API Secret:
openssl rand -hex 64
示例 .env:
APP_ENV=production
APP_DEBUG=false
JWT_SECRET=请替换为openssl生成的随机值
SESSION_SECRET=请替换为openssl生成的随机值
POSTGRES_USER=coze_user
POSTGRES_PASSWORD=请替换为强密码
POSTGRES_DB=coze
REDIS_PASSWORD=请替换为强密码
OPENAI_API_KEY=请替换为你的模型供应商Key
3. 禁止将 .env 提交到 Git
创建或修改 .gitignore:
vim .gitignore
加入:
.env
.env.*
!.env.example
data/
logs/
backup/
检查是否已经被 Git 跟踪:
git ls-files | grep ".env"
如果已经被跟踪,执行:
git rm --cached .env
git commit -m "remove env file from git tracking"
五、数据库 PostgreSQL 安全加固
如果 Coze 使用 PostgreSQL,需要重点保护数据库连接权限和账号权限。
1. 数据库仅监听本地或内网
如果 PostgreSQL 运行在宿主机,编辑配置:
sudo vim /etc/postgresql/15/main/postgresql.conf
设置:
listen_addresses = '127.0.0.1'
如果是容器环境,则不建议将 5432 暴露到公网,只允许容器内网络访问。
检查监听端口:
sudo ss -lntp | grep 5432
2. 配置 pg_hba.conf
编辑:
sudo vim /etc/postgresql/15/main/pg_hba.conf
示例配置:
local all postgres peer
local all all scram-sha-256
host coze coze_user 127.0.0.1/32 scram-sha-256
host coze coze_user 10.0.0.0/24 scram-sha-256
重启 PostgreSQL:
sudo systemctl restart postgresql
3. 创建最小权限数据库用户
登录 PostgreSQL:
sudo -u postgres psql
执行:
CREATE DATABASE coze;
CREATE USER coze_user WITH ENCRYPTED PASSWORD '请替换为强密码';
GRANT CONNECT ON DATABASE coze TO coze_user;
\c coze
GRANT USAGE ON SCHEMA public TO coze_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO coze_user;
GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA public TO coze_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO coze_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT USAGE, SELECT, UPDATE ON SEQUENCES TO coze_user;
\q
如果应用需要建表权限,可临时授予:
GRANT CREATE ON SCHEMA public TO coze_user;
迁移完成后可收回:
REVOKE CREATE ON SCHEMA public FROM coze_user;
4. 禁止使用 postgres 超级用户连接应用
.env 中不要写:
POSTGRES_USER=postgres
应使用专门用户:
POSTGRES_USER=coze_user
POSTGRES_PASSWORD=强密码
POSTGRES_DB=coze
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
六、Redis 安全加固
Redis 常被攻击者扫描利用,尤其是未设置密码、暴露公网、允许写入持久化文件的场景。
1. Redis 不暴露公网
检查监听:
sudo ss -lntp | grep 6379
如果显示 0.0.0.0:6379,说明存在风险。
编辑 Redis 配置:
sudo vim /etc/redis/redis.conf
建议配置:
bind 127.0.0.1
protected-mode yes
port 6379
requirepass 请替换为强密码
如果是 Docker 容器中的 Redis,可使用如下 redis.conf:
bind 0.0.0.0
protected-mode yes
port 6379
requirepass 请替换为强密码
appendonly yes
save 900 1
save 300 10
save 60 10000
注意:容器内 bind 0.0.0.0 可以接受 Docker 网络访问,但不要将端口映射到公网。
2. 禁用危险命令
在 redis.conf 中加入:
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command SHUTDOWN ""
rename-command DEBUG ""
rename-command SAVE ""
重启 Redis:
sudo systemctl restart redis-server
Docker Compose 重启:
docker compose restart redis
测试认证:
redis-cli -a '你的Redis密码' ping
正常返回:
PONG
七、Nginx 反向代理与 HTTPS 加固
建议不要直接将 Coze 服务端口暴露公网,而是通过 Nginx 反向代理到本地端口,例如 127.0.0.1:8080。
1. 安装 Nginx
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
查看状态:
sudo systemctl status nginx
2. 配置反向代理
创建站点配置:
sudo vim /etc/nginx/sites-available/coze.conf
写入:
server {
listen 80;
server_name coze.example.com;
client_max_body_size 50m;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Real-IP $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 60s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/coze.conf /etc/nginx/sites-enabled/coze.conf
sudo nginx -t
sudo systemctl reload nginx
3. 申请 Let’s Encrypt HTTPS 证书
安装 Certbot:
sudo apt install certbot python3-certbot-nginx -y
申请证书:
sudo certbot --nginx -d coze.example.com
测试自动续期:
sudo certbot renew --dry-run
查看证书定时器:
systemctl list-timers | grep certbot
4. 增强 Nginx TLS 安全配置
编辑配置:
sudo vim /etc/nginx/sites-available/coze.conf
HTTPS server 中加入:
server {
listen 443 ssl http2;
server_name coze.example.com;
ssl_certificate /etc/letsencrypt/live/coze.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/coze.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
client_max_body_size 50m;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Real-IP $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 60s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
}
server {
listen 80;
server_name coze.example.com;
return 301 https://$host$request_uri;
}
检查并重载:
sudo nginx -t
sudo systemctl reload nginx
八、接口访问与后台管理加固
如果 Coze 部署环境包含管理后台、API 调试页面、插件配置页面,应尽量避免暴露给公网。
1. 后台路径添加 IP 白名单
假设管理后台路径为 /admin,可在 Nginx 中限制:
location /admin {
allow 你的办公公网IP;
allow 10.0.0.0/8;
deny all;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
重新加载:
sudo nginx -t
sudo systemctl reload nginx
2. API 限速防护
在 Nginx http 配置中加入限速区域:
sudo vim /etc/nginx/nginx.conf
在 http {} 中加入:
limit_req_zone $binary_remote_addr zone=coze_api_limit:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=coze_conn_limit:10m;
在站点配置中加入:
location /api/ {
limit_req zone=coze_api_limit burst=20 nodelay;
limit_conn coze_conn_limit 20;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
重载:
sudo nginx -t
sudo systemctl reload nginx
九、Fail2ban 防暴力破解
Fail2ban 可以监控 SSH、Nginx 等日志,发现暴力破解后自动封禁 IP。
1. 安装 Fail2ban
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
2. 配置 SSH 防护
创建本地配置:
sudo vim /etc/fail2ban/jail.local
写入:
[sshd]
enabled = true
port = 22222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
findtime = 10m
bantime = 1h
如果 SSH 使用默认 22 端口,则改为:
port = 22
重启:
sudo systemctl restart fail2ban
查看状态:
sudo fail2ban-client status
sudo fail2ban-client status sshd
十、系统审计与日志加固
1. 安装 auditd
sudo apt install auditd audispd-plugins -y
sudo systemctl enable auditd
sudo systemctl start auditd
查看状态:
sudo systemctl status auditd
2. 审计关键文件
添加审计规则:
sudo vim /etc/audit/rules.d/coze.rules
写入:
-w /opt/coze/.env -p wa -k coze_env_change
-w /etc/nginx/sites-available/coze.conf -p wa -k nginx_coze_change
-w /etc/ssh/sshd_config -p wa -k ssh_config_change
-w /etc/docker/daemon.json -p wa -k docker_config_change
加载规则:
sudo augenrules --load
sudo systemctl restart auditd
查询审计日志:
sudo ausearch -k coze_env_change
sudo ausearch -k nginx_coze_change
3. Docker 日志限制
前文已经在 /etc/docker/daemon.json 配置了日志限制:
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
也可以查看容器日志大小:
docker system df
docker logs --tail=100 coze-web
清理无用镜像、容器和网络:
docker system prune -a
注意:生产环境执行
docker system prune -a前必须确认不会删除正在使用或后续需要回滚的镜像。
十一、备份与恢复方案
安全加固不仅是防攻击,也包括在故障或勒索攻击后可以恢复业务。
1. 创建备份目录
sudo mkdir -p /opt/backup/coze
sudo chown -R cozeadmin:cozeadmin /opt/backup/coze
chmod 700 /opt/backup/coze
2. PostgreSQL 数据库备份
如果 PostgreSQL 是容器服务:
docker exec postgres pg_dump -U coze_user -d coze > /opt/backup/coze/coze_$(date +%F_%H%M%S).sql
如果在宿主机:
PGPASSWORD='你的数据库密码' pg_dump -h 127.0.0.1 -U coze_user -d coze > /opt/backup/coze/coze_$(date +%F_%H%M%S).sql
压缩备份:
gzip /opt/backup/coze/coze_*.sql
3. 备份配置文件和上传文件
tar -czf /opt/backup/coze/coze_config_$(date +%F_%H%M%S).tar.gz \
/opt/coze/.env \
/opt/coze/docker-compose.yml \
/etc/nginx/sites-available/coze.conf
如果有知识库上传文件、对象存储数据或本地持久化目录:
tar -czf /opt/backup/coze/coze_data_$(date +%F_%H%M%S).tar.gz \
/opt/coze/data
4. 自动备份脚本
创建脚本:
vim /opt/coze/backup.sh
写入:
#!/bin/bash
set -e
BACKUP_DIR="/opt/backup/coze"
DATE=$(date +%F_%H%M%S)
mkdir -p "$BACKUP_DIR"
docker exec postgres pg_dump -U coze_user -d coze > "$BACKUP_DIR/coze_db_$DATE.sql"
gzip "$BACKUP_DIR/coze_db_$DATE.sql"
tar -czf "$BACKUP_DIR/coze_config_$DATE.tar.gz" \
/opt/coze/.env \
/opt/coze/docker-compose.yml \
/etc/nginx/sites-available/coze.conf
find "$BACKUP_DIR" -type f -mtime +14 -delete
授权:
chmod 700 /opt/coze/backup.sh
添加定时任务:
crontab -e
加入:
0 2 * * * /opt/coze/backup.sh >> /opt/backup/coze/backup.log 2>&1
5. 数据恢复示例
解压数据库备份:
gunzip coze_db_2025-01-01_020000.sql.gz
恢复数据库:
cat coze_db_2025-01-01_020000.sql | docker exec -i postgres psql -U coze_user -d coze
恢复配置文件:
tar -xzf coze_config_2025-01-01_020000.tar.gz -C /
十二、Coze 应用层安全建议
除了基础设施加固,Coze 应用本身也要注意以下问题。
1. 关闭调试模式
生产环境必须关闭 Debug:
APP_ENV=production
APP_DEBUG=false
重启服务:
docker compose down
docker compose up -d
2. 限制模型 API Key 使用范围
如果使用 OpenAI、Azure OpenAI、火山方舟、通义千问、智谱等模型供应商,应做到:
- 不使用个人主账号 Key;
- 为 Coze 单独创建 API Key;
- 设置调用额度上限;
- 定期轮换;
- 禁止在日志中输出 Key;
- 不在前端代码暴露 Key。
3. 插件与工具调用安全
Coze 的智能体通常会调用插件、HTTP API、企业内部接口。需要特别注意:
-
插件接口必须鉴权
不要因为是内部服务就不加认证。 -
限制智能体可访问的 URL 范围
防止 SSRF,让智能体请求内网敏感地址,例如127.0.0.1、云厂商元数据地址等。 -
敏感操作需二次确认
例如删除数据、发送邮件、审批流程、资金相关操作,不应完全自动执行。 -
工具返回数据脱敏
不要将身份证号、手机号、密钥、内部日志原样返回给模型。
4. 知识库数据安全
如果 Coze 使用知识库能力,应注意:
- 上传文档前进行敏感信息检查;
- 不同部门知识库隔离;
- 不同智能体只绑定必要知识库;
- 对知识库文件开启访问权限控制;
- 定期清理过期文档;
- 对外部用户访问的智能体,不挂载内部敏感知识库。
十三、漏洞扫描与基线检查
1. 使用 Lynis 进行系统基线扫描
安装:
sudo apt install lynis -y
执行扫描:
sudo lynis audit system
查看报告:
sudo less /var/log/lynis.log
sudo less /var/log/lynis-report.dat
2. 使用 Trivy 扫描镜像漏洞
安装 Trivy:
sudo apt install wget apt-transport-https gnupg lsb-release -y
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | \
gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] \
https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | \
sudo tee /etc/apt/sources.list.d/trivy.list
sudo apt update
sudo apt install trivy -y
扫描镜像:
trivy image your-coze-web-image:latest
扫描文件系统:
trivy fs /opt/coze
只显示高危和严重漏洞:
trivy image --severity HIGH,CRITICAL your-coze-web-image:latest
十四、安全巡检常用命令清单
1. 查看监听端口
sudo ss -lntup
重点确认是否有以下端口暴露公网:
5432
6379
2375
9200
9000
8080
2. 查看登录记录
last
lastb
查看 SSH 失败登录:
sudo grep "Failed password" /var/log/auth.log
3. 查看系统用户
cat /etc/passwd
awk -F: '$3 == 0 {print $1}' /etc/passwd
正常情况下,UID 为 0 的用户应该只有 root。
4. 查看 sudo 权限用户
getent group sudo
5. 查看 Docker 容器状态
docker ps
docker compose ps
docker stats
6. 查看 Nginx 访问日志
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
搜索异常请求:
sudo grep -Ei "sqlmap|union select|/etc/passwd|wp-admin|phpmyadmin" /var/log/nginx/access.log
十五、上线前安全检查表
上线前建议逐项确认:
| 检查项 | 是否完成 |
|---|---|
| 系统补丁已更新 | 是 / 否 |
| 禁止 root SSH 登录 | 是 / 否 |
| 禁止 SSH 密码登录 | 是 / 否 |
| 防火墙仅开放必要端口 | 是 / 否 |
| Coze 服务未直接暴露公网端口 | 是 / 否 |
| PostgreSQL 未暴露公网 | 是 / 否 |
| Redis 设置密码且未暴露公网 | 是 / 否 |
| Docker API 未暴露 2375 | 是 / 否 |
.env 权限为 600 |
是 / 否 |
| 生产环境关闭 Debug | 是 / 否 |
| HTTPS 已启用 | 是 / 否 |
| Nginx 已配置安全响应头 | 是 / 否 |
| 后台管理路径已限制访问 | 是 / 否 |
| 已配置 Fail2ban | 是 / 否 |
| 已配置数据库定期备份 | 是 / 否 |
| 已测试备份恢复流程 | 是 / 否 |
| 已完成镜像漏洞扫描 | 是 / 否 |
| 模型 API Key 已设置额度限制 | 是 / 否 |
十六、总结
Coze 安全加固不能只依赖某一个配置项,而应该从服务器、网络、容器、数据库、缓存、反向代理、应用配置、插件调用、知识库权限、日志审计、备份恢复等多个层面共同完成。
对于生产环境,最核心的原则是:
- 不要把数据库、Redis、Docker API 暴露到公网;
- 不要使用弱密码和默认密钥;
- 不要使用 root 或超级用户运行应用;
- 不要在生产环境开启 Debug;
- 不要将 API Key、Token、
.env提交到代码仓库; - 一定要启用 HTTPS、备份和日志审计。
如果 Coze 承载的是企业内部知识库、客服机器人、办公自动化智能体或业务流程自动化平台,那么它不仅是一个 AI 应用,更是企业数据入口和操作入口。只有在上线前做好安全基线,在上线后持续巡检和修复漏洞,才能真正降低数据泄露、接口滥用和服务被攻击的风险。