diff --git a/README.md b/README.md index bf0d825..baae762 100644 --- a/README.md +++ b/README.md @@ -7,18 +7,18 @@    

-

:trollface: 哪吒监控 一站式轻监控轻运维系统。支持系统状态、HTTP(SSL 证书变更、即将到期、到期)、TCP、Ping 监控报警,命令批量执行和计划任务。

+

:trollface: 哪吒监控 一站式轻监控轻运维系统。支持系统状态、HTTP(SSL 证书变更、即将到期、到期)、TCP、Ping 监控报警,计划任务和在线终端。

\>> QQ 交流群:872069346 **加群要求:已搭建好哪吒监控 & 有 2+ 服务器** \>> [我们的用户](https://www.google.com/search?q="powered+by+哪吒监控"&filter=0) (Google) -| 默认主题 | DayNight [@JackieSung](https://github.com/JackieSung4ev) | hotaru | -| ---------------------------------------------------------------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------------- | -| ![默认主题](resource/template/theme-default/screenshot.png) | ![daynight](resource/template/theme-daynight/screenshot.png) | | -|
默认主题魔改 [教程]
| | | -| ![默认主题魔改](https://cdn.jsdelivr.net/gh/idarku/img@main/me/1631120192341.webp) | | | +| 默认主题 | DayNight [@JackieSung](https://github.com/JackieSung4ev) | hotaru | +| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------------- | +| ![默认主题](resource/template/theme-default/screenshot.png) | ![daynight](resource/template/theme-daynight/screenshot.png) | | +|
默认主题魔改 [教程]
| | | +| ![默认主题魔改](https://cdn.jsdelivr.net/gh/idarku/img@main/me/1631120192341.webp) | | | ## 安装脚本 @@ -45,7 +45,8 @@ _\* 使用 WatchTower 可以自动更新面板,Windows 终端可以使用 nssm - `--report-delay` 系统信息上报的间隔,默认为 1 秒,可以设置为 3 来进一步降低 agent 端系统资源占用(配置区间 1-4) - `--skip-conn` 不监控连接数,机场/连接密集型机器推荐设置,不然比较占 CPU([shirou/gopsutil/issues#220](https://github.com/shirou/gopsutil/issues/220)) - `--skip-procs` 不监控进程数,也可以降低 agent 占用 -- `--disable-auto-update` 禁止 Agent 自动更新 +- `--disable-auto-update` 禁止 Agent 自动更新(安全特性) +- `--disable-command-execute` 禁止在 Agent 机器上执行定时任务、打开在线终端(安全特性) ## 功能说明 @@ -271,7 +272,7 @@ restart() {
- 实时通道断开/网页终端连接失败 + 实时通道断开/在线终端连接失败 使用反向代理时需要针对 `/ws`,`/terminal` 路径的 WebSocket 进行特别配置以支持实时更新服务器状态和 **WebSSH**。 diff --git a/cmd/agent/main.go b/cmd/agent/main.go index acc1559..139fbf6 100644 --- a/cmd/agent/main.go +++ b/cmd/agent/main.go @@ -29,13 +29,14 @@ import ( ) type AgentConfig struct { - SkipConnectionCount bool - SkipProcsCount bool - DisableAutoUpdate bool - Debug bool - Server string - ClientSecret string - ReportDelay int + SkipConnectionCount bool + SkipProcsCount bool + DisableAutoUpdate bool + DisableCommandExecute bool + Debug bool + Server string + ClientSecret string + ReportDelay int } var ( @@ -75,6 +76,7 @@ func main() { flag.IntVar(&agentConf.ReportDelay, "report-delay", 1, "系统状态上报间隔") flag.BoolVar(&agentConf.SkipConnectionCount, "skip-conn", false, "不监控连接数") flag.BoolVar(&agentConf.SkipProcsCount, "skip-procs", false, "不监控进程数") + flag.BoolVar(&agentConf.DisableCommandExecute, "disable-command-execute", false, "禁止在此机器上执行命令") flag.BoolVar(&agentConf.DisableAutoUpdate, "disable-auto-update", false, "禁用自动升级") flag.Parse() @@ -302,6 +304,10 @@ func handleHttpGetTask(task *pb.Task, result *pb.TaskResult) { } func handleCommandTask(task *pb.Task, result *pb.TaskResult) { + if agentConf.DisableCommandExecute { + result.Data = "此 Agent 已禁止命令执行" + return + } startedAt := time.Now() var cmd *exec.Cmd var endCh = make(chan struct{}) @@ -347,6 +353,10 @@ type WindowSize struct { } func handleTerminalTask(task *pb.Task) { + if agentConf.DisableCommandExecute { + println("此 Agent 已禁止命令执行") + return + } var terminal model.TerminalTask err := json.Unmarshal([]byte(task.GetData()), &terminal) if err != nil {