TREK安全加固清单:10条Docker容器安全最佳实践
TREK安全加固清单10条Docker容器安全最佳实践【免费下载链接】TREKA self-hosted travel/trip planner with real-time collaboration, interactive maps, PWA support, SSO, budgets, packing lists, and more.项目地址: https://gitcode.com/GitHub_Trending/nomad22/TREKTREK 是一款自托管旅行规划器trip planner提供实时协作、交互地图、预算与打包清单、SSO 等能力。在把它暴露到公网或家庭局域网之前完成TREK 安全加固是保护行程数据的最佳方式。本文基于项目自带的生产级 Compose 配置与官方加固清单给出10 条 Docker 容器安全最佳实践全部可按清单逐步落实新手也能照做。1. 开启只读根文件系统read_only官方 docker-compose.yml 默认挂载read_only: true容器内除./data与./uploads两个数据卷外任何目录都不可写入。即使攻击者在容器内获得立足点也无法植入恶意文件。⚠️ 只挂载data和uploads两个目录千万不要把卷挂到/app——那会遮住镜像内的应用代码导致启动失败。2. 禁止提权no-new-privilegessecurity_opt: no-new-privileges:true阻止进程通过 setuid/setgid 可执行文件获得新的 Linux 权限直接封死提权路径。如果你的 Docker 是用 snap 安装的该选项可能导致容器无法启动operation not permitted——这是 snap/AppArmor 的已知限制请改用官方 apt 仓库的 Docker或移除该选项。详见 wiki/Install-Docker-Compose.md。3. 最小能力cap_drop ALL 非 root 运行官方配置先cap_drop: ALL摘除容器全部 Linux capability再仅加回启动所需的最小三项CHOWN、SETUID、SETGID用于降权到node用户。整条最小权限链路还包括非 root 运行Dockerfile 采用多阶段构建生产镜像不含源码与 npm 构建工具最终以gosu切换到node用户dumb-init 作为 init正确回收僵尸进程健康检查 自动重启内置HEALTHCHECK每 30 秒探测/api/health配合restart: unless-stopped自动拉起异常容器4. 内存型 /tmpnoexec nosuid根文件系统只读后应用仍需临时目录。官方用 tmpfs 挂载/tmp并加上noexec,nosuid,size128m只存在于内存中、禁止执行二进制、禁止 setuid——恶意文件写进去也无法运行。5. 配置强 ENCRYPTION_KEY并与备份分开存放TREK 用 AES-256-GCM 加密存储的 API Key 等敏感数据密钥由ENCRYPTION_KEY派生。建议用openssl rand -hex 32生成强密钥写入.env密钥必须单独备份如密码管理器与数据库备份 ZIP 分开存放——丢失它所有存储的密钥将不可读怀疑泄露时按 wiki/Encryption-Key-Rotation.md 执行密钥轮换完整的密钥解析顺序与全部变量说明见 wiki/Environment-Variables.md。6. 反代终结 TLS开启 HTTPS / HSTS不要直接把 3000 端口暴露公网而是把 TREK 放在 nginx / Caddy / Traefik 等 TLS 终结反代之后并启用两个变量变量作用FORCE_HTTPStrueHTTP→HTTPS 301 重定向、HSTSmax-age 一年、会话 cookie 强制 secure 标志TRUST_PROXY1正确读取真实客户端 IP限流与审计日志才准确⚠️ 只设FORCE_HTTPS而不设TRUST_PROXY会造成重定向死循环。完整反代示例见 wiki/Reverse-Proxy.md。同时保持ALLOW_INTERNAL_NETWORKfalse默认值它阻止应用向私网 IP 发起出站请求SSRF 防护仅在 Immich / Synology 位于局域网时才设为true。7. 登录入口加固密码策略、限流与双因素认证TREK 内置的登录防护始终生效、无需配置密码策略至少 8 位须含大小写、数字与特殊字符常见密码与纯重复串会被拒绝密码以 bcryptcost 12哈希存储按 IP 限流登录/注册/邀请 15 分钟 10 次、MFA 校验与改密 5 次、MCP 令牌创建 5 次——暴力破解基本无效双因素认证2FA在 设置 → Account 为管理员账号启用指南见 wiki/Two-Factor-Authentication.md再补两招实例只服务固定人群时在管理面板关闭开放注册怀疑会话泄露时用管理面板的Rotate JWT Secret一键吊销所有活跃会话。8. 开启自动备份并异地存放管理面板的 Backup 页支持一键备份与计划任务开启 Auto-Backup设置合适的时间间隔与保留天数。备份 ZIP 包含数据库、上传文件与插件数据但不包含加密密钥——密钥请放进密码管理器。关键点把备份 ZIP复制到其他位置另一台机器或对象存储主机盘损坏或被加密时行程数据依然可恢复。详见 wiki/Backups.md。9. 插件沙箱保持默认开启已安装的插件运行的是不受信任的第三方代码TREK 的插件运行时默认就有多层沙箱无需任何配置OS 权限沙箱插件跑在隔离子进程中文件系统写入、子进程、原生模块被直接拒绝读操作仅限插件自身代码——它读不到trek.db与密钥文件私有网段出站拦截插件的外发请求若解析到回环、内网、云元数据地址169.254.169.254等一律拦截防 DNS 重绑定内存上限默认 300 MB超限或停止心跳即被终止屡犯者自动停用能力审计插件以你的名义做的每一次核心数据访问都被哈希链日志记录可按插件逐条复查除非有特殊原因不要关闭TREK_PLUGINS_ENABLED等默认值并保持开发用的TREK_PLUGINS_DEV_LINK关闭。10. 定期审查审计日志保持版本更新安全是持续动作两个日常习惯定期看审计日志管理面板 Audit 页记录登录、建用户、MFA 变更等敏感事件及来源 IP异常登录一眼可见定期更新版本更新前务必先手动备份一次流程见 wiki/Updating.md附加固清单速览#加固项配置位置1只读根文件系统read_only: true2禁止提权no-new-privileges:true3最小能力 非 rootcap_drop: ALL gosu4内存型 /tmptmpfs: noexec,nosuid5强加密密钥 独立备份ENCRYPTION_KEY6HTTPS / HSTS / 反代FORCE_HTTPSTRUST_PROXY7密码策略 限流 2FA内置防护手动启用 2FA8自动备份 异地存放管理面板 → Backup9插件沙箱保持开启默认值勿改10审计日志 版本更新管理面板 → Audit完整的生产加固清单见 wiki/Security-Hardening.md开箱即用的加固版 Compose 文件见仓库根目录的 docker-compose.yml。10 条做完你的自托管旅行规划器才算真正上膛完毕放心上路。【免费下载链接】TREKA self-hosted travel/trip planner with real-time collaboration, interactive maps, PWA support, SSO, budgets, packing lists, and more.项目地址: https://gitcode.com/GitHub_Trending/nomad22/TREK创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考