记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

Next Terminal | 开源 轻量 简单的堡垒机

Next Terminal | 开源 轻量 简单的堡垒机

演示:https://next.typesafe.cn/ 账号:test 密码:test
对比
类似的开源堡垒机有 Teleport,Jumpserver,Next Terminal等等。
Teleport 安全性最好,较轻量,但是对被管理资产不透明,纳管前需要双向认证,在资产设备上需额外操作,大公司,安全性要求高的适合,有商业版本。
Jumpserver 笨重,对被管理资产透明,其他 该有的都有,有商业版本。
Next Terminal 轻量,简单,对被管理资产透明,适合个人,支持RDP、SSH、VNC、TELNET等协议。
使用docker命令安装
XML/HTML代码
  1. # 安装 guacd
  2. docker run --restart=always --name guacd -d \
  3.   -v /root/next-terminal/data:/usr/local/next-terminal/data \
  4.   dushixiang/guacd:latest
  5. # 安装 next-terminal
  6. docker run --restart=always --name next-terminal -d \
  7.   --link guacd \
  8.   -p 8088:8088 \
  9.   -v /root/next-terminal/data:/usr/local/next-terminal/data \
  10.   -v /etc/localtime:/etc/localtime \
  11.   -e DB=sqlite \
  12.   -e GUACD_HOSTNAME=guacd \
  13.   -e GUACD_PORT=4822 \
  14.   dushixiang/next-terminal:latest
默认用户名 密码 admin/admin,登录进去以后切记切记开启MFA,如果不开启MFA,一旦密码被暴力破解,不仅内网被暴露到公网,你的资产更是直接暴露,直接登录。下载 Microsoft Authenticator 可以使用MFA认证。各大应用商店都有,支持安卓和IOS。
开启MFA流程:个人中心--双因素认证--去开启--Microsoft Authenticator 扫码--输入TOTP(APP显示的授权码)建议管理员和普通用户都开启更加安全。
然后把Next Terminal的登录页透传出去了,认证之后就可以无缝管理内网资源,添加一个Windows系统作为跳板机就更方便了。也可以使用Nginx反代,可以同步本地剪切板。
docker-compose.yml 安装
提示:国内用户可以使用阿里云镜像仓库
 
XML/HTML代码
  1. guacd registry.cn-beijing.aliyuncs.com/dushixiang/guacd  
  2. next-terminal registry.cn-beijing.aliyuncs.com/dushixiang/next-terminal  
使用 sqlite 存储数据:
在任意位置创建文件夹 next-terminal ,然后在此文件夹下创建 docker-compose.yml 并写入如下内容
XML/HTML代码
  1. version: '3.3'
  2. services:
  3.   guacd:
  4.     image: dushixiang/guacd:latest
  5.     volumes:
  6.       - ./data:/usr/local/next-terminal/data
  7.     restart:
  8.           always
  9.   next-terminal:
  10.     image: dushixiang/next-terminal:latest
  11.     environment:
  12.       DB: sqlite
  13.       GUACD_HOSTNAME: guacd
  14.       GUACD_PORT: 4822
  15.     ports:
  16.       - "8088:8088"
  17.     volumes:
  18.       - /etc/localtime:/etc/localtime
  19.       - ./data:/usr/local/next-terminal/data
  20.     restart:
  21.       always
前台启动命令
XML/HTML代码
  1. docker-compose up
后台启动命令
XML/HTML代码
  1. docker-compose up -d
使用 mysql 存储数据:
在任意位置创建文件夹 next-terminal ,然后在此文件夹下创建 docker-compose.yml 并写入如下内容:
XML/HTML代码
  1. version: '3.3'
  2. services:
  3.   mysql:
  4.     image: mysql:8.0
  5.     environment:
  6.       MYSQL_DATABASE: next-terminal
  7.       MYSQL_USER: next-terminal
  8.       MYSQL_PASSWORD: next-terminal
  9.       MYSQL_ROOT_PASSWORD: next-terminal
  10.     volumes:
  11.       - ./data/mysql:/var/lib/mysql
  12.     restart:
  13.           always
  14.   guacd:
  15.     image: dushixiang/guacd:latest
  16.     volumes:
  17.       - ./data:/usr/local/next-terminal/data
  18.     restart:
  19.           always
  20.   next-terminal:  
  21.     image: dushixiang/next-terminal:latest
  22.     environment:
  23.       DB: mysql
  24.       MYSQL_HOSTNAME: mysql
  25.       MYSQL_PORT: 3306
  26.       MYSQL_USERNAME: next-terminal
  27.       MYSQL_PASSWORD: next-terminal
  28.       MYSQL_DATABASE: next-terminal
  29.       GUACD_HOSTNAME: guacd
  30.       GUACD_PORT: 4822
  31.     ports:
  32.       - "8088:8088"
  33.     volumes:
  34.       - /etc/localtime:/etc/localtime
  35.       - ./data:/usr/local/next-terminal/data
  36.     depends_on:
  37.       - mysql
  38.     restart:
  39.       always
前台启动命令
XML/HTML代码
  1. docker-compose up
后台启动命令
XML/HTML代码
  1. docker-compose up -d
使用外部的 mysql 存储数据
在任意位置创建文件夹 next-terminal ,然后在此文件夹下创建 docker-compose.yml 并写入如下内容:
XML/HTML代码
  1. version: '3.3'  
  2. services:  
  3.   guacd:  
  4.     image: dushixiang/guacd:latest  
  5.     volumes:  
  6.       - ./data:/usr/local/next-terminal/data  
  7.     restart:  
  8.           always  
  9.   next-terminal:  
  10.     image: dushixiang/next-terminal:latest  
  11.     environment:  
  12.       DB: mysql  
  13.       # 请修改下面的 MySql 配置,需自行创建数据库和用户  
  14.       MYSQL_HOSTNAME: mysql  
  15.       MYSQL_PORT: 3306  
  16.       MYSQL_USERNAME: next-terminal  
  17.       MYSQL_PASSWORD: next-terminal  
  18.       MYSQL_DATABASE: next-terminal  
  19.       # 请修改上面的 MySql 配置,需自行创建数据库和用户  
  20.       GUACD_HOSTNAME: guacd  
  21.       GUACD_PORT: 4822  
  22.     ports:  
  23.       - "8088:8088"  
  24.     volumes:  
  25.       - /etc/localtime:/etc/localtime  
  26.       - ./data:/usr/local/next-terminal/data  
  27.     restart:  
  28.       always  
前台启动命令
XML/HTML代码
  1. docker-compose up
后台启动命令
XML/HTML代码
  1. docker-compose up -d
开启sshd服务
以sqlite模式为例,修改 docker-compose.yml,增加 加粗 区域的配置
XML/HTML代码
  1. version: '3.3'  
  2. services:  
  3.   guacd:  
  4.     image: dushixiang/guacd:latest  
  5.     volumes:  
  6.       - ./data:/usr/local/next-terminal/data  
  7.     restart:  
  8.           always  
  9.   next-terminal:  
  10.     image: dushixiang/next-terminal:latest  
  11.     environment:  
  12.       DB: sqlite  
  13.       GUACD_HOSTNAME: guacd  
  14.       GUACD_PORT: 4822  
  15.       SSHD_ENABLE: "true"  
  16.     ports:  
  17.       - "8088:8088"  
  18.       - "8089:8089"  
  19.     volumes:  
  20.       - /etc/localtime:/etc/localtime  
  21.       - ./data:/usr/local/next-terminal/data  
  22.       - ~/.ssh/id_rsa:/root/.ssh/id_rsa  
  23.     restart:  
  24.           always  
接下来使用 next-terminal 中的用户即可使用。 示例
XML/HTML代码
  1. ssh admin@127.0.0.1 -p 8089  
docker-compose 更新方式
XML/HTML代码
  1. docker-compose pull && docker-compose restart  
其他可以参考官方说明,程序还支持原生安装,简单说也就是物理机安装。
反向代理
推荐使用 nginx 等web服务器反向代理 next-terminal 使用,一是可有效避免伪造 IP 绕过系统限制,二是开启 https 后可无缝同步系统粘贴板。
nginx 反向代理示例
XML/HTML代码
  1. location / {  
  2.     proxy_pass http://127.0.0.1:8088/;  
  3.     proxy_set_header Host      $host;  
  4.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  5.     proxy_set_header X-Real-IP $remote_addr;  
  6.     proxy_set_header Upgrade $http_upgrade;  
  7.     proxy_set_header Connection $http_connection;  
  8. }  
当然也可以用npm之类的容器设置反代,更加简单。
注:官方的docker镜像需要2个,如果使用一键安装或者在群晖爱快等非标准linux命令的设备上,可以使用二合一镜像。
拉取镜像:docker pull aaronlee/next-terminal:latest
简单应用:
如果使用openwrt或者爱快之类支持docker的路由系统,可以直接在路由行搭建,例如爱快路由。
首次使用
1、开启爱快的Docker功能(未开通的登录爱快云的插件管理开通Docker)
登录爱快-高级应用-插件管理- docker
Docker服务设置ON
2、服务设置
存储分区设置:选择手动创建的数据分区
镜像库URL:https://docker.1panel.live
3、接口管理
接口名称:创建一个接口给Docker用
IPv4地址:随便一个不冲突的网段给容器用
格式 :192.168.10.0/24 
IPv4网关:自定义根据上面地址填写
创建容器
1、拉取镜像
镜像管理--添加--镜像库下载--输入你需要下载的镜像
堡垒机:aaronlee/next-terminal
网络监控:louislam/uptime-kuma
输入上面的信息点搜索,出现你需要的镜像,点下载,出现下载界面,直到下载完成。
2、创建容器
容器列表--添加 出现添加界面
容器名称:随意,自己能看懂就行 
内存占用(M):根据实际一般占用不大,256M 512M都没问题
 * 容器对宿主机内存最大占用值 
选择镜像文件:选择你需要的镜像 
选择网络接口:接口管理中创建的哪个
 * 如需管理接口,请前往容器列表“接口管理”编辑 
IPv4地址:手动填写固定IP或者不填写是自动IP
 选填 
IPv6地址:
 选填 
开机自启:重启爱快是否启动
3、启动镜像
根据镜像说明可以登录系统
例如上面的堡垒机登录地址:
http://ip:8088
用户名:admin   密码:admin
上面的uptime-kuma登录地址:
http://ip:3001
接入网关
ssh服务器:
tlze/debian-sshd
bimg/alpine-ssh
常用镜像库URL:
https://ckq4qobq.mirror.aliyuncs.com
针对上面的接入网关,其实就是一个ssh服务器,起到端口转发作用,用docker创建一个就可以,特别是 bimg/alpine-ssh 基于alpine的,体积才十几兆非常小,但是用途一样,只需要映射一个ssh端口,就可以通过堡垒机管理局域网的服务器,但是ssh允许用户登录,会有安全隐患,故可以创建一个 nologin 权限的账号,没有登录的权限,安全性会提高。
XML/HTML代码
  1. #创建一个nologin权限的账号aaa
  2. useradd -s /usr/sbin/nologin aaa
  3. #给账号设置一个密码
  4. echo "aaa:abcd1234" | chpasswd
将上面创建的服务器ip,映射的端口,创建的nologin权限的账号密码填入接入网关,就可以正常使用了。
ssh代理如果在一段时间内无访问的话会自动断线,可以修改本机的/etc/ssh/ssh_config文件,让ssh自动发送心跳保持连接状态。
XML/HTML代码
  1. # 每60秒像服务器发送一个心跳请求
  2. ServerAliveInterval 60
  3. # 超过3次心跳请求无回应则断开连接
  4. ServerAliveCountMax 3
导入离线镜像包:
如果网络有问题或者使用镜像库下载不成功,可以不用设置镜像库直接上传docker系统镜像包,直接导入离线包。
1、上传镜像包
系统设置 > 磁盘管理 > 文件管理
打开数据分区,直接上传镜像包或者建立一个目录上传
找到上传的镜像包,点击查看路径,复制文件路径
2、导入镜像包
高级应用 > 插件管理>Docker>镜像管理>添加
上传方式:引用镜像(默认)
镜像路径:粘贴文件路径
点击确认后,在镜像管理中可以看到上传的镜像包,就可以正常使用了。

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):