Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

关于 geth 节点安全

杨小公子君莫邪
161 0 0
前段时间有写过一个小文,用来给需要搭建 geth 节点的朋友们做些指引。所用命令如下:# O' a1 F: G, P0 E/ t2 I

- l1 [, I. @% `: |; V8 q- A6 Ngeth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 0.0.0.0  --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*"
- f* ~$ H8 N% R
( Q! h3 r: m: b7 H: u, M" j本文以此命令为基础,谈谈需要关注的安全方面的问题。
5 @5 n* r4 ^# @. g9 m8 `: V. Q. m$ v  J  q% |
0x01 防火墙应该放开哪些端口% X( k8 q) ~) e8 r/ D# Q
1 K+ o) {  K/ p. o6 }* j
推荐放开的端口:30303
) M6 G, t" V) M" e0 h$ c( n! b* P: k  A% F) M" n9 e& K  F
这是 geth 节点之间相互连接建立 p2p 网络的端口,放开此端口可以大大提高数据同步的稳定性。
. k. [% I) D9 {9 S" a' U6 M+ H8 u! R' U4 D
选择性放开的端口:6666 与 6667# a1 j4 P, z' c' C9 c

( [! R- w! w' p8 ?如果只需要 http 连接,放开 rpc 端口 6666 就足够了。如果还需要 web socket 连接,才需要放开 6667 端口。: W5 \% u" D! E3 G3 u/ {
- ?( u1 V# u$ H9 ~
0x02 应该让节点做什么事情0 h2 M. B, Q1 d* o  V

+ ?- W, `- \4 U) x$ V( r: b! K在放开 rpcport 或 wasport 的情况下,非常不建议在此节点上进行账户管理
; j. e& t1 J- }/ f$ \& t4 T- q
# H. T7 |9 R! |. ?* N一般来说,做应用开发时我们所搭建的节点,主要用来做两个事情:& E! ?& ^' q% u& y/ j9 D& s& W
& Y8 u3 Q/ Y8 c% O2 I
查询数据% m% j" {2 k; N' O& s

$ g* v' E' {  ^! Q, u  e" g广播交易
" ^6 V/ X9 k3 J  o8 D! B& H& d' w9 g7 E1 y: l+ X
账户管理,最好在去中心化钱包中去做。将签名后的交易通过 sendRawTransaction 发送到我们搭建的节点上。/ u4 X4 u1 p6 X$ l; q% I& }& Z1 T

8 l1 B/ R7 k; s" m: i1 p8 X0x03 rpcaddr 与 wsaddr% R9 r, J7 S! O) ^9 I) w. F# R$ a

! n5 @4 K+ F1 Q0 j当这两个参数的值设为 0.0.0.0 时,将允许来自任何机器的 http 和 web socket 连接。
5 D* G8 w% L3 _3 n: Y9 {
5 K2 r+ \9 |3 k4 Y* C( s这个时候如果在自己搭的 geth 节点上创建或导入钱包,并执行 personal.unlockAccount 命令,别人就可以通过开放的 http或 web socket 连接执行sendTransaction调用将钱包中的以太币资产转出。
3 I  X- Q0 m) n( Q# `3 j8 \, k' V& \& g$ h. H1 R
0x04 对节点的进一步加固
' N* b  r0 T4 H+ ~5 s" v0 @8 j: _" b$ t8 N% p; L% Z+ K3 `8 [
SSH Tunnel6 k0 _7 V& l1 ]+ D

+ H8 d" e" [) ?  Y3 n. j通过下面的命令将远程调用限制于本地连接,这里将rpcaddr和 wsaddr 参数的值都设为了 127.0.0.1- C0 w7 }0 B. v+ \% ]' ^; W

  t; |/ z( G& {, W" [/ T. Kgeth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 127.0.0.1  --ws --wsaddr 127.0.0.1 --wsport 6667 --wsorigins "*") c  w) I% Q; Q' s
+ O7 P, z1 N. i) o
其它机器要调用这个节点怎么办呢?可以通过 SSH Tunnel 建立该机器与节点机器间的可信连接。
" Z/ r* \2 v/ K. o5 b% f# `0 b) v' b3 W" B% f3 z1 b- k3 x+ n& n3 R
Basic Auth
- r- ?4 a' S" B6 j- q4 u0 j9 h) d9 T- E
可以在节点服务器上搭建 nginx 服务器,配置相应的 basic auth,通过用户名密码来限制对 geth 节点 rpc 服务的调用。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

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

    0

  • 关注

    0

  • 主题

    13