Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

关于 geth 节点安全

杨小公子君莫邪
88 0 0
前段时间有写过一个小文,用来给需要搭建 geth 节点的朋友们做些指引。所用命令如下:
/ k7 l7 r) O% ?3 r% N$ X! L  Z+ z) i4 _& r
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 0.0.0.0  --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*"1 K6 w% k* B; F5 g+ V/ z) S
4 }0 i  m  H& u7 ?9 i) a, [( t
本文以此命令为基础,谈谈需要关注的安全方面的问题。4 l: {1 k2 m+ e0 H; ]  H* M0 W
* V, H; G7 O1 p! t% @
0x01 防火墙应该放开哪些端口
1 S. b# U  M  E6 C
! s8 V* Q2 C/ A推荐放开的端口:30303  Q! g% s0 R( k  u+ n' \

! e; P; B1 ~( B0 C0 {4 w% i2 I这是 geth 节点之间相互连接建立 p2p 网络的端口,放开此端口可以大大提高数据同步的稳定性。0 r$ p) o( W2 n  c# D

* \; i) a: @( ?选择性放开的端口:6666 与 6667
" Q/ q6 t, M) m& j" a
3 p# L: O! U) |9 G7 I: m, S如果只需要 http 连接,放开 rpc 端口 6666 就足够了。如果还需要 web socket 连接,才需要放开 6667 端口。0 _3 ~3 z7 V5 S8 F$ x" T/ e
. q5 c! ~( n# g8 T/ \. F
0x02 应该让节点做什么事情
: s  }6 g  T* Z% X9 [
! v3 s! b( C  H) P在放开 rpcport 或 wasport 的情况下,非常不建议在此节点上进行账户管理- g' R% N) a( X. m  N; }, q/ t

. K  w" N2 r! K# Z1 X* V一般来说,做应用开发时我们所搭建的节点,主要用来做两个事情:6 G: i" I3 S: Q6 m4 r- f7 p2 @
. t$ ]/ C% d( G5 l& a/ @9 _5 M
查询数据; h/ q8 \6 ^# G# ?( l

* [+ }* x: H" T# i$ S! I. P广播交易  b" V( N* P! \6 d$ V
) I$ P" k1 y- g% a
账户管理,最好在去中心化钱包中去做。将签名后的交易通过 sendRawTransaction 发送到我们搭建的节点上。/ S3 v7 v- ~& |& R$ w: T# \, P. I

; j! w* S5 h' h& k. J0x03 rpcaddr 与 wsaddr
( P3 A: a7 k* Z' D# V3 y0 u* }: C' x' I  `+ i+ x, ^
当这两个参数的值设为 0.0.0.0 时,将允许来自任何机器的 http 和 web socket 连接。
) h; O! x9 ]% L* z  Z* y( c! ]* V5 i7 d4 |9 E+ S5 [: R' y
这个时候如果在自己搭的 geth 节点上创建或导入钱包,并执行 personal.unlockAccount 命令,别人就可以通过开放的 http或 web socket 连接执行sendTransaction调用将钱包中的以太币资产转出。
3 X- o2 a; t* h1 V5 P
1 x6 x2 p; T' Q7 D7 \0x04 对节点的进一步加固& e  F2 g/ K! M! a  K
; E- x( j6 L5 O' K$ l
SSH Tunnel
1 O3 v9 m( `$ Y
% k4 z/ z: T, I通过下面的命令将远程调用限制于本地连接,这里将rpcaddr和 wsaddr 参数的值都设为了 127.0.0.1! i. N- k, R6 y0 p
2 }4 R6 U3 |+ g2 l1 K
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 127.0.0.1  --ws --wsaddr 127.0.0.1 --wsport 6667 --wsorigins "*"6 q* y" W+ c2 Y% e0 |
0 |& V0 y6 u- H8 V
其它机器要调用这个节点怎么办呢?可以通过 SSH Tunnel 建立该机器与节点机器间的可信连接。
# M) {4 B7 L7 J( D- l  D  }
. ]- a6 x: c0 U, W0 qBasic Auth0 m7 M2 J9 Y6 k4 S3 R/ n+ \

$ x8 Z* J2 Q' c% L: _+ q" `0 }# E可以在节点服务器上搭建 nginx 服务器,配置相应的 basic auth,通过用户名密码来限制对 geth 节点 rpc 服务的调用。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

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

    0

  • 关注

    0

  • 主题

    13