Replace active S3 sync with encrypted WebDAV synchronization and independent backups. Support explicit empty passwords and unauthenticated MongoDB, Redis, HTTP and HTTPS targets. Include migration, design and validation documentation. Validation: build and go vet passed; Playwright 113 passed with 4 existing failures. Full Go run reproduced the existing cluster discovery test failure. Preserve unrelated SSH fingerprint changes outside this commit.
34 lines
4.1 KiB
Markdown
34 lines
4.1 KiB
Markdown
# SSH 终端命令审计
|
||
|
||
旧版本只拼接键盘输入。因此输入 `sh u` 后按 Tab,即使终端显示完整文件名,审计中仍可能只有 `sh u\t`。光标移动、中文退格和超过 16 KiB 的命令也可能丢失内容。
|
||
|
||
新采集器支持常见行编辑操作、UTF-8 中文、分段控制序列和 bracketed paste 多行粘贴。SSH exec 和交互输入不再应用旧的 16 KiB 截断;交互输入按一次提交最多接收 1 MiB 原始按键,超出时中止会话,不会截断后继续执行。
|
||
|
||
## Tab 补全和历史召回
|
||
|
||
转发回车前,先加密保存实际输入及原始按键。对于 Tab 补全、上下方向键、历史搜索等由远端 shell 决定内容的操作,随后从 PTY 的终端回显中识别提交行,并更新同一条审计记录,不额外生成重复记录。日期分库切换时仍更新原记录所在的日期库。
|
||
|
||
- **回显已补全**:已从对应提示符后的回显提取输入文本。
|
||
- **待回显确认**:未获得可匹配的回显、终端导航无法确定,或没有申请 PTY。保留输入文本和原始按键,不把猜测标记为完整命令。
|
||
- **原始按键**:转义显示,`\t` 表示 Tab,`\r` / `\n` 表示回车,`\x1b` 开始终端控制序列。
|
||
|
||
关闭回显、复杂多行重绘、全屏程序、定制键绑定以及脚本内部执行的命令无法凭终端输入可靠确认;输入文本仍不是服务器执行追踪,也不表示目标执行成功。
|
||
|
||
## 执行结果与输出
|
||
|
||
- **SSH exec**:关联保存标准输出、错误输出,以及服务器报告的退出码或退出信号。两个输出通道排空后才标记结束;没有退出通知、转发失败或审计失败时标为中断,不推断执行成功。申请 PTY 的 exec 通常也会合并标准与错误输出。
|
||
- **交互终端**:每条已记录输入关联其提交后、到下一次已记录输入提交或会话关闭之间观测到的输出。包含回显、提示符和可能交错的后台输出;连续粘贴多条命令时,结果也可能落在后面的输入区间。它不保证精确的一条命令对应一份输出,不记录或猜测单条 shell 命令的退出码。PTY 通常已合并标准与错误输出。
|
||
- **采集中断**:输出先加密写入,再转发给客户端;审计写入失败会中止转发。未结束的记录显示“尚无结束标记”,可能仍在运行,也可能在服务异常退出时未写入结束状态。
|
||
|
||
输出按最多 32 KiB 的块加密保存至原始命令所在的 UTC 日期审计库,不设总输出截断;磁盘占用随输出量增加。输出和结果元数据随原命令的 7 天保留期清理。SFTP 文件内容仍不采集,配置 WebDAV 备份也不包含命令输出;完整审计备份需停止服务并复制完整数据目录。
|
||
|
||
详情中的“执行输出”支持刷新、分页加载、通道筛选及完整原始字节下载。页面最多预览约 8 MiB,避免大量输出占满浏览器;该限制不改变已保存内容。预览按 UTF-8 解码并转义控制字符,不执行 ANSI/HTML;二进制或其他编码内容可下载查看。全部通道的下载按网关采集顺序合并,不保证两个远端流之间的精确时间顺序;也可单独下载标准或错误输出。下载只包含开始下载时已保存的块,运行中的命令可稍后再次下载。
|
||
|
||
结果查询与下载沿用命令审计的个人会话及 API Token audit 权限。旧记录显示“未采集输出”,无法补录历史结果。此功能在更新服务并重新建立 SSH 会话后生效,不要求修改目标服务器的 shell 配置。
|
||
|
||
## 查看与导出
|
||
|
||
「命令审计」在宽屏显示表格,在窄屏显示卡片;筛选项按可用宽度排列。点击「查看」按记录 ID 加载完整内容,详情支持自动换行、横向滚动、复制和刷新。列表只请求摘要,防止长记录拖慢页面;摘要不会改变数据库中的完整内容。
|
||
|
||
CSV 导出保留完整已采集文本,并附带采集方式、是否待确认及原始按键。旧记录已丢失的补全内容无法事后恢复;更新服务后重新建立 SSH 会话,后续输入才使用新的采集器。
|