Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

关于 geth 节点安全

杨小公子君莫邪
86 0 0
前段时间有写过一个小文,用来给需要搭建 geth 节点的朋友们做些指引。所用命令如下:# U$ ~% h8 M6 I& b( Z; X
5 F4 [; F, |0 @# B4 e) O
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 0.0.0.0  --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*"
+ A5 K3 f/ U# Q3 ~2 x
5 ]" {: ~7 }  Z! V3 ?4 `$ _本文以此命令为基础,谈谈需要关注的安全方面的问题。
* R2 y' q, S" ~
) G0 E/ e/ z7 @/ ?, ^0x01 防火墙应该放开哪些端口
, ~9 W& R& N2 N0 A) m
" `6 y  q/ \( {) ?+ y% }推荐放开的端口:30303. h5 h* s: T8 {! S
2 G2 q( L& ~: a- A+ e: n6 b2 Z
这是 geth 节点之间相互连接建立 p2p 网络的端口,放开此端口可以大大提高数据同步的稳定性。
5 a$ T# q+ X: Y" v; E1 z3 d" F/ a' g
选择性放开的端口:6666 与 6667$ A; q, O% n3 E9 M4 ~# B+ o

/ a' D, ~* t* f3 E9 z" a9 I* p5 m如果只需要 http 连接,放开 rpc 端口 6666 就足够了。如果还需要 web socket 连接,才需要放开 6667 端口。" A1 o, ^( e, f* @

: r" ]5 j$ U* v+ D0x02 应该让节点做什么事情* x1 Y$ |. v% o. U

7 p; K* ]$ u! b. C% |0 m在放开 rpcport 或 wasport 的情况下,非常不建议在此节点上进行账户管理
# F5 l' _- |1 R. A8 M0 f- M
2 l% O) K  r# q5 Y一般来说,做应用开发时我们所搭建的节点,主要用来做两个事情:
# P$ ~* U2 m/ _9 x5 A
% q  X. E9 A0 }7 r查询数据
& y. z" ?4 d+ ]3 w" w2 B7 \1 K
( p% z. u/ d: X广播交易
, v: v5 ]$ X9 W  }
( k( o) [1 ?5 A3 r# S# E8 c账户管理,最好在去中心化钱包中去做。将签名后的交易通过 sendRawTransaction 发送到我们搭建的节点上。
# p: s8 F6 }. @0 S+ F+ q, ?2 X
% n; \' X3 Q/ Z; W% u9 z$ t0x03 rpcaddr 与 wsaddr* r" @( L5 Y9 p7 N: R5 \2 E: b, D. K
  ?* k7 d- `( S  G8 `
当这两个参数的值设为 0.0.0.0 时,将允许来自任何机器的 http 和 web socket 连接。
( j1 Z% G  m: i* N( u# [& I8 x
! T9 B# k: h$ a; M4 _7 c这个时候如果在自己搭的 geth 节点上创建或导入钱包,并执行 personal.unlockAccount 命令,别人就可以通过开放的 http或 web socket 连接执行sendTransaction调用将钱包中的以太币资产转出。
8 I5 ~" I+ d8 _) C0 L& f$ b# l$ ], L! l2 s" _5 |
0x04 对节点的进一步加固
$ C) J3 \* I. G  h3 D: M0 Q5 J. y9 I) P) q- b. k7 _
SSH Tunnel: D0 u" e2 w( a3 Z1 y  F6 @
5 f" e# {% |# O9 }* M+ o# d
通过下面的命令将远程调用限制于本地连接,这里将rpcaddr和 wsaddr 参数的值都设为了 127.0.0.1" X: x8 m; R3 S

0 r* h/ r: S2 ^7 v4 a5 P8 q2 m" B0 Sgeth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 127.0.0.1  --ws --wsaddr 127.0.0.1 --wsport 6667 --wsorigins "*"
% G+ G& ]$ D0 S( [% ^! ?0 L9 O8 |' e4 d8 l9 I% J! w5 [
其它机器要调用这个节点怎么办呢?可以通过 SSH Tunnel 建立该机器与节点机器间的可信连接。3 u% K; T  v: c% ]/ _" `

8 S6 {; ^7 _- V- c+ k" \& o; K/ DBasic Auth! F' |5 _4 m- o
3 b8 G5 g' k/ E; R- v7 z
可以在节点服务器上搭建 nginx 服务器,配置相应的 basic auth,通过用户名密码来限制对 geth 节点 rpc 服务的调用。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

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

    0

  • 关注

    0

  • 主题

    13