# go-agent-server **Repository Path**: microrain/go-agent-server ## Basic Information - **Project Name**: go-agent-server - **Description**: goAgentServer是使用Go语言开发的一款轻量级跳板机服务,除了具备代理SSH和SFTP的功能外,还能捕获用户操作记录,以便后续分析和审计。这样的功能使得该服务非常适合用于安全审计和合规性检查等场景。 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-07-31 - **Last Updated**: 2023-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # goAgentServer > `goAgentServer`是使用Go语言开发的一款轻量级跳板机服务,除了具备代理SSH和SFTP的功能外,还能捕获用户操作记录,以便后续分析和审计。这样的功能使得该服务非常适合用于安全审计和合规性检查等场景。 ### 编译安装 ```bash # git clone https://gitee.com/pdudo/go-agent-server.git # cd go-agent-server # go build -o goAgentServer ``` ### 部署启动 #### 修改配置文件 `goAgentServer`是默认会读取当前目录下的`conf.json`配置文件,该配置文件如下: ```json { "sshBindAddr": "0.0.0.0:2222", "webBindAaddr": "0.0.0.0:9999", "webUsername": "admin", "webPasswd": "admin", "mysql": "root:root@tcp(127.0.0.1:3306)/goAgentServer?charset=utf8mb4&parseTime=True&loc=Local", "sftpDir": "/tmp", "sessionDir": "./session" } ``` 其中配置文件含义如下: - `sshBindAddr`: 跳板机启动套接字 - `webBindAaddr`: `web`管理页面 - `webUsername`: `web`管理页面用户名 - `webPasswd`: `web`管理页面密码 - `mysql`: `mysql`连接信息(**若没有数据库则需要额外新建**) - `sftpDir`: 使用`sftp`连接的时候默认路径 - `sessionDir`: 操作记录存储的目录 #### 启动程序 直接执行该可执行文件即可 ```bash # chmod +x goAgentServer # ./goAgentServer ``` 启动后,会产生众多的日志,当出现下面输出后,程序已经启动起来了: ```bash # ./goAgentServer main: 2023/07/22 14:04:19 main.go:42: read conf.json values: {0.0.0.0:2222 0.0.0.0:9999 admin admin root:root@tcp(127.0.0.1:3306)/goAgentServer?charset=utf8mb4&parseTime=True&loc=Local /root ./session} version: v0.0.1 2023-7-12 ... main: 2023/07/22 14:04:22 server.go:127: start ssh server 0.0.0.0:2222 main: 2023/07/22 14:04:22 web.go:91: start web server: 0.0.0.0:9999 ... ``` #### 权限概括 权限逻辑不是很复杂,具体图示基本如下: ![img.png](/img/img1.png) 权限的核心是:机器作为跳板机中最基本的单位之一,不能直接由用户操控,必须通过组来将机器归属到同一集合中,然后再将该组分配给用户使用。 使用浏览器打开`web`页面,默认为`http://ip:9999` ### 测试登录 在添加完具体信息后,测试登录 ![img.png](img/img12.png) ### 安全性 在`goAgentServer`中,为了保护数据的安全性,所有存储的密码和密钥都使用`RSA`算法进行加密。除了提供默认的`RSA`密钥信息外,还允许用户手动生成和替换代码中的密钥。为了达到最高的安全性,用户可以根据相关指南生成全新的`RSA`密钥对,并将生成的密钥信息替换掉代码中的默认密钥。完成替换后,即可进行编译并继续使用。 #### 生成`rsa`秘钥 ```bash # openssl genrsa -out privateKey 2048 # openssl rsa -in privateKey -outform PEM -pubout -out publicKey ``` 以上命令将生成两个文件:`privateKey`和`publicKey`,其中前者表示私钥,后者表示公钥。 #### 替换`rsa`秘钥 要修改`encryption/conf.go`文件,将生成的`publicKey`文件内容赋值到`const publicKey`中,将`privateKey`文件内容赋值到`const privateKey`中,您可以按照以下步骤操作: - 打开`encryption/conf.go`文件,找到需要修改的代码区域。 - 在代码中找到`const publicKey`和`const privateKey`这两个变量声明。 - 使用文本编辑器打开`publicKey`和`privateKey`文件,并复制文件内容。 - 将`publicKey`文件内容粘贴到`const publicKey`变量的赋值语句中。 - 将`privateKey`文件内容粘贴到`const privateKey`变量的赋值语句中。 在替换完成后,重新编译即可,参考命令: ```bash # go build -o goAgentServer ```