一、软件概述
natpass 是新一代主机管理工具,支持 Web VNC 和 Web Shell,支持 Shell 管理,支持远程桌面管理
二、官方地址
https://github.com/lwch/natpass
natpass: natpass 是新一代主机管理工具,支持 Web VNC 和 Web Shell,支持 Shell 管理,支持远程桌面管理
三、功能特性
- 支持私有化部署
- 较小的内存占用(约20M左右)
- 支持tls安全连接
- 支持多路异步IO
- 支持虚拟链路层
- 支持链路和终端会话监控
- protobuf数据编码
- 支持web shell
- linux和mac系统支持创建pty设备和颜色输出
- windows系统支持powershell
- 支持web vnc
- 支持基本的键盘鼠标操作
- 支持全屏显示
- 支持滚动
- 支持远程剪贴板设置与读取
- 支持code-server
- 支持多种操作系统
- linux
- windows
- macos
四、实现原理
支持tls链接,protobuf进行数据传输,下面举例远程连接服务器集群内的某台主机
server端配置(10.0.1.1):
listen: 6154 # 监听端口号
secret: 0123456789 # 预共享密钥
log:
dir: /opt/natpass/logs # 路径
size: 50M # 单个文件大小
rotate: 7 # 保留数量
tls:
key: /dir/to/tls/key/file # tls密钥
crt: /dir/to/tls/crt/file # tls证书
服务器client配置(192.168.1.100):
id: server # 客户端ID
server: 10.0.1.1:6154 # 服务器地址
secret: 0123456789 # 预共享密钥,必须与server端相同,否则握手失败
log:
dir: /opt/natpass/logs # 路径
size: 50M # 单个文件大小
rotate: 7 # 保留数量
办公网络client配置(172.16.1.100):
id: work # 客户端ID
server: 10.0.1.1:6154 # 服务器地址
secret: 0123456789 # 预共享密钥,必须与server端相同,否则握手失败
log:
dir: /opt/natpass/logs # 路径
size: 50M # 单个文件大小
rotate: 7 # 保留数量
rules: # 远端rule列表可为空
- name: rdp # 链路名称
target: server # 目标客户端ID
type: shell # 连接类型tcp或udp
local_addr: 0.0.0.0 # 本地监听地址
local_port: 3389 # 本地监听端口号
工作流程如下:
- 办公网络与家庭网络中的np-cli创建tls连接到np-svr
- np-cli服务发送握手包,并将配置文件中的secret字段进行md5哈希
- np-svr等待握手报文,若等待超时则为非法链接,直接断开
- 用户打开办公网络主机172.16.1.100上的终端页面,并连接到服务器集群中的主机server
- 172.16.1.100上的np-cli发送connect_request消息,并将连接类型设置为shell
- np-svr转发connect_request消息至192.168.1.100上的np-cli
- 192.168.1.100上的np-cli接收到connect_request消息,创建/bin/bash进程
- 192.168.1.100上的np-cli根据链接创建结果返回connect_response消息
- np-svr转发connect_response消息至172.16.1.100上的np-cli
- 172.168.1.100上的np-cli接收connect_response消息
- 开始转发网页上的输入输出内容
五、软件架构
六、软件部署
部署过程共分为三部分:服务器端、受控端和控制端,下面以centos系统进行举例。
1、软件下载
https://github.com/lwch/natpass/releases
2、服务器端部署
-
将下载后的natpass_0.13.0_linux_amd64.tar.gz上传到服务器/usr/local/soft/路径下
-
解压软件
cd /usr/local/soft/
tar -zxvf natpass_0.13.0_linux_amd64.tar.gz
3. 使用以下命令启动服务器端程序
cd /usr/local/soft/natpass_0.13.0/
sudo ./np-svr --conf server.yaml
-
(可选)开放外网防火墙,默认端口6154
3、受控端部署
-
在受控端机器上下载并解压到任意目录(本次案例仍以服务器端部署服务器为例)
-
(可选)修改remote.yaml配置文件,修改server地址
2. 使用以下命令启动客户端程序,新打开一个Shell窗口
cd /usr/local/soft/natpass_0.13.0/
sudo ./np-cli --conf remote.yaml
4、控制端部署
-
在本地控制机上下载并解压到任意目录(本次案例仍以服务器端部署服务器为例)(可选)修改local.yaml配置文件,修改server地址(可选)修改rule.d目录下的规则配置文件,rule配置方法
-
使用以下命令启动客户端程序
cd /usr/local/soft/natpass_0.13.0/ sudo ./np-cli --conf local.yaml
-
在以上操作成功后即可在浏览器中通过local.yaml中配置的端口号进行访问,默认地址:
http://127.0.0.1:8080
或远程登录:http://node11:8080/