关于 geth 节点安全
关于 geth 节点安全
## 0x00 前言 前段时间有写过一个小文,用来给需要搭建 geth 节点的朋友们做些指引。所用命令如下: ``` geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 0.0.0.0 --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*" ``` 本文以此命令为基础,谈谈需要关注的安全方面的问题。 ## 0x01 防火墙应该放开哪些端口 推荐放开的端口:30303 这是 geth 节点之间相互连接建立 p2p 网络的端口,放开此端口可以大大提高数据同步的稳定性。 选择性放开的端口:6666 与 6667 如果只需要 http 连接,放开 rpc 端口 6666 就足够了。如果还需要 web socket 连接,才需要放开 6667 端口。 ## 0x02 应该让节点做什么事情 **在放开 rpcport 或 wasport 的情况下,非常不建议在此节点上进行账户管理** 一般来说,做应用开发时我们所搭建的节点,主要用来做两个事情: 1. 查询数据 2. 广播交易 账户管理,最好在去中心化钱包中去做。将签名后的交易通过 sendRawTransaction 发送到我们搭建的节点上。 ## 0x03 rpcaddr 与 wsaddr 当这两个参数的值设为 0.0.0.0 时,将允许来自任何机器的 http 和 web socket 连接。 这个时候如果在自己搭的 geth 节点上创建或导入钱包,并执行 `personal.unlockAccount` 命令,别人就可以通过开放的 http或 web socket 连接执行 sendTransaction 调用将钱包中的以太币资产转出。 ## 0x04 对节点的进一步加固 1. SSH Tunnel 通过下面的命令将远程调用限制于本地连接,这里将 rpcaddr 和 wsaddr 参数的值都设为了 127.0.0.1 ``` geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 127.0.0.1 --ws --wsaddr 127.0.0.1 --wsport 6667 --wsorigins "*" ``` 其它机器要调用这个节点怎么办呢?可以通过 SSH Tunnel 建立该机器与节点机器间的可信连接。 1. Basic Auth 可以在节点服务器上搭建 nginx 服务器,配置相应的 basic auth,通过用户名密码来限制对 geth 节点 rpc 服务的调用。 ## 0x05 总结 本文简单介绍了一下运行 geth 节点所需要关注的一部分安全问题,比较粗略,如有不清楚或想要进一步做内容扩充的地方,欢迎给我留言。
0x00 前言
前段时间有写过一个小文,用来给需要搭建 geth 节点的朋友们做些指引。所用命令如下:
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 0.0.0.0 --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*"
本文以此命令为基础,谈谈需要关注的安全方面的问题。
0x01 防火墙应该放开哪些端口
推荐放开的端口:30303 这是 geth 节点之间相互连接建立 p2p 网络的端口,放开此端口可以大大提高数据同步的稳定性。 选择性放开的端口:6666 与 6667 如果只需要 http 连接,放开 rpc 端口 6666 就足够了。如果还需要 web socket 连接,才需要放开 6667 端口。
0x02 应该让节点做什么事情
在放开 rpcport 或 wasport 的情况下,非常不建议在此节点上进行账户管理 一般来说,做应用开发时我们所搭建的节点,主要用来做两个事情:
- 查询数据
- 广播交易
账户管理,最好在去中心化钱包中去做。将签名后的交易通过 sendRawTransaction 发送到我们搭建的节点上。
0x03 rpcaddr 与 wsaddr
当这两个参数的值设为 0.0.0.0 时,将允许来自任何机器的 http 和 web socket 连接。 这个时候如果在自己搭的 geth 节点上创建或导入钱包,并执行 personal.unlockAccount
命令,别人就可以通过开放的 http或 web socket 连接执行 sendTransaction 调用将钱包中的以太币资产转出。
0x04 对节点的进一步加固
- SSH Tunnel 通过下面的命令将远程调用限制于本地连接,这里将 rpcaddr 和 wsaddr 参数的值都设为了 127.0.0.1
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 127.0.0.1 --ws --wsaddr 127.0.0.1 --wsport 6667 --wsorigins "*"
其它机器要调用这个节点怎么办呢?可以通过 SSH Tunnel 建立该机器与节点机器间的可信连接。
- Basic Auth 可以在节点服务器上搭建 nginx 服务器,配置相应的 basic auth,通过用户名密码来限制对 geth 节点 rpc 服务的调用。
0x05 总结
本文简单介绍了一下运行 geth 节点所需要关注的一部分安全问题,比较粗略,如有不清楚或想要进一步做内容扩充的地方,欢迎给我留言。
- 发表于 2018-11-21 17:28
- 阅读 ( 4135 )
- 学分 ( 6 )
- 分类:以太坊
评论