Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

关于 geth 节点安全

杨小公子君莫邪
105 0 0
前段时间有写过一个小文,用来给需要搭建 geth 节点的朋友们做些指引。所用命令如下:
- `2 g1 ^- t: a9 U2 U8 r- g9 i
; L! m. ^, v  K& W& _: Igeth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 0.0.0.0  --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*"
# \* T: L( s1 B9 f, I  `; f, t+ y" M" a( b/ H, n! Q
本文以此命令为基础,谈谈需要关注的安全方面的问题。
! h% T1 c7 V/ T+ g" y+ b
. s5 v( g) K  s1 n% ]- f0x01 防火墙应该放开哪些端口4 ^. K8 p2 b. E1 w, E; M1 f
$ f/ U5 e4 f3 G( \% q
推荐放开的端口:30303
$ u6 X9 W; j! \: W4 u0 Z! l# L0 u& L4 s& F& O+ ]. r6 I
这是 geth 节点之间相互连接建立 p2p 网络的端口,放开此端口可以大大提高数据同步的稳定性。
0 O, s! M7 m6 W6 p8 i
8 l* k. V  A7 x4 j5 J; N1 {选择性放开的端口:6666 与 6667
5 }+ N, q7 J7 @, I4 A6 [# Z4 X% ~
如果只需要 http 连接,放开 rpc 端口 6666 就足够了。如果还需要 web socket 连接,才需要放开 6667 端口。* z( G7 d4 S% W2 T9 J) ]; J

* l# o. [$ d2 `0x02 应该让节点做什么事情! C& a5 [2 @% `( [: {
2 U- |# H. Q# _2 T
在放开 rpcport 或 wasport 的情况下,非常不建议在此节点上进行账户管理
/ S9 U0 h) _. v/ B- r- T6 \$ i) a. A5 w. e+ p) m) l  Q9 h
一般来说,做应用开发时我们所搭建的节点,主要用来做两个事情:3 k( R; \: `9 k7 g
  _8 i( W% Y6 i; l1 \( M
查询数据0 [( ^: t3 C+ x% C3 B2 b9 x

& ~& K% U3 i- J1 H. K$ @, ~广播交易
$ ^2 @# `2 [% i3 w. i5 {3 Y* M
! h( T8 [. S  T' C% u' ]9 @账户管理,最好在去中心化钱包中去做。将签名后的交易通过 sendRawTransaction 发送到我们搭建的节点上。- I( B8 [9 [# d
3 _) Q$ d  I0 |
0x03 rpcaddr 与 wsaddr7 D! ?$ a3 I7 j. Z

9 ?$ H- e/ m: Y6 z# b2 m当这两个参数的值设为 0.0.0.0 时,将允许来自任何机器的 http 和 web socket 连接。
/ I4 W. F7 C/ b8 {9 B* A0 G  m* s2 H( B" D' L
这个时候如果在自己搭的 geth 节点上创建或导入钱包,并执行 personal.unlockAccount 命令,别人就可以通过开放的 http或 web socket 连接执行sendTransaction调用将钱包中的以太币资产转出。# a+ a& e3 i  e$ o5 b% G- `

) m- e  L" A1 R- I, a% D: O0x04 对节点的进一步加固
- a% C4 T+ b$ `0 }& T9 n0 _, K# Q* b- y8 z$ S5 E+ r
SSH Tunnel
5 b/ x# y+ C' R3 X3 K& C, z% r1 B7 N  i9 N! Y4 R& O; s$ }
通过下面的命令将远程调用限制于本地连接,这里将rpcaddr和 wsaddr 参数的值都设为了 127.0.0.1
# L/ o6 J) y; R3 L5 L9 w- w( s9 m2 T' ?2 N! z/ w. e9 {# h. Z- K
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 127.0.0.1  --ws --wsaddr 127.0.0.1 --wsport 6667 --wsorigins "*"
3 R' ?3 ?" X; @. c
; {' F" h4 J, C7 X/ j! F其它机器要调用这个节点怎么办呢?可以通过 SSH Tunnel 建立该机器与节点机器间的可信连接。
1 e* D9 K' S3 k) p" f% ^* x3 @( L, e; z, E) h! o% Y3 i0 X
Basic Auth" x0 M  c* T/ A3 k4 O( h" l8 Z
9 K( o3 @( {3 f# D4 G
可以在节点服务器上搭建 nginx 服务器,配置相应的 basic auth,通过用户名密码来限制对 geth 节点 rpc 服务的调用。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

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

    0

  • 关注

    0

  • 主题

    13