Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

关于 geth 节点安全

杨小公子君莫邪
92 0 0
前段时间有写过一个小文,用来给需要搭建 geth 节点的朋友们做些指引。所用命令如下:
* S( o( o: ^: {4 Y- q! l$ U& d/ C0 d: Y
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 0.0.0.0  --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*"
3 H; K. ^3 e  E/ t' B5 r0 z" H* y
本文以此命令为基础,谈谈需要关注的安全方面的问题。
0 y' _2 ~9 p; ]4 |! r
1 S$ K9 L, k0 ^* ~/ G6 j, p7 K0x01 防火墙应该放开哪些端口
, ?) m0 q, D3 u! s0 t% ~. C! }: U. W" q
推荐放开的端口:30303
; |: W, q5 W- h* P) \! P( E" A. A4 d" R4 f; s( @# f- o# }, T
这是 geth 节点之间相互连接建立 p2p 网络的端口,放开此端口可以大大提高数据同步的稳定性。
2 l, z0 I3 y$ Q: m5 |: w8 g1 e9 h' _0 \  Z' U  s7 v$ ^) T# L6 m3 S7 y
选择性放开的端口:6666 与 6667
3 D) c& k% N; Z0 `) G% @2 y# K' u% S( I. j
如果只需要 http 连接,放开 rpc 端口 6666 就足够了。如果还需要 web socket 连接,才需要放开 6667 端口。1 g: S# v0 g' h" W  \
- k! ^8 P4 m7 U6 P" A
0x02 应该让节点做什么事情
/ m& ?) D. T" W0 B& P' K- }; M
9 R$ f) N+ N+ k6 g  O7 L在放开 rpcport 或 wasport 的情况下,非常不建议在此节点上进行账户管理) t' g4 |/ ?- a
2 m' g: {4 R& c0 {& m. R
一般来说,做应用开发时我们所搭建的节点,主要用来做两个事情:1 Y7 @& x# w( ^4 k4 h' T4 S" A

* U0 C2 r4 f2 z1 c& |" {8 L* g查询数据
, d/ z! a4 j. l& x/ k! p( O3 k( W5 J3 c( T% G7 k6 o) k8 Y) s
广播交易
' V0 T: b& U0 n! Y  K; w0 k! b
0 R, H- N7 l5 X/ K' l' E0 w! M账户管理,最好在去中心化钱包中去做。将签名后的交易通过 sendRawTransaction 发送到我们搭建的节点上。* d" f! F9 Q' m1 j0 n4 D3 ?
) z3 v* Y& X! U3 ]- N' v: l
0x03 rpcaddr 与 wsaddr
9 p0 h& i; k3 ~6 c
9 Z; ~; v, a% H: A% t当这两个参数的值设为 0.0.0.0 时,将允许来自任何机器的 http 和 web socket 连接。. d, P) U# \+ N6 m
# y/ L2 q+ R* d! R
这个时候如果在自己搭的 geth 节点上创建或导入钱包,并执行 personal.unlockAccount 命令,别人就可以通过开放的 http或 web socket 连接执行sendTransaction调用将钱包中的以太币资产转出。
* K3 {" r2 g  o6 i0 ^& b9 n, Z' o2 ^5 s: t; h9 K( B
0x04 对节点的进一步加固; e# A8 j# Q) Z5 ~6 }5 F5 k+ {

, i% R, E' c& l/ Y5 Y* lSSH Tunnel4 U6 v& m( F  W7 \  z6 Z! L

) |! O& c) y! ]; U6 W- {0 S) N通过下面的命令将远程调用限制于本地连接,这里将rpcaddr和 wsaddr 参数的值都设为了 127.0.0.10 j* \5 H& T+ C0 H2 r$ G

; C: k( M2 r4 ?, x; egeth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 127.0.0.1  --ws --wsaddr 127.0.0.1 --wsport 6667 --wsorigins "*"
1 n3 ]' P9 V" }& f
2 F. P0 F( f2 J3 _其它机器要调用这个节点怎么办呢?可以通过 SSH Tunnel 建立该机器与节点机器间的可信连接。
. X, r: g& t' \1 t/ q/ g3 q: g
) x5 H. g% ^% n2 K$ S( HBasic Auth1 D5 l; V4 c. E" \4 X  v

) j- |7 K3 O1 a) t. E  C! [& L% W可以在节点服务器上搭建 nginx 服务器,配置相应的 basic auth,通过用户名密码来限制对 geth 节点 rpc 服务的调用。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

杨小公子君莫邪 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    13