Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

关于 geth 节点安全

杨小公子君莫邪
96 0 0
前段时间有写过一个小文,用来给需要搭建 geth 节点的朋友们做些指引。所用命令如下:5 t1 r& G6 Q9 Y6 b

2 M  S. {5 ?- A. Y' n7 l, fgeth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 0.0.0.0  --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*"
2 z, i, y' R# D& w. J
; t) L! }3 ]" R, M# v本文以此命令为基础,谈谈需要关注的安全方面的问题。
+ ]2 q& q9 P3 U4 S$ \7 d- \
; o+ q7 a  S& [% H# f0x01 防火墙应该放开哪些端口+ Q# ]1 _8 H) x7 R! M9 x# [

* l9 u/ E% q  P  E5 a推荐放开的端口:30303! B! L, V. H2 P" ~" |% U

+ `; f% |. _7 ^0 b$ J6 O这是 geth 节点之间相互连接建立 p2p 网络的端口,放开此端口可以大大提高数据同步的稳定性。7 L& R/ d! f" i! [! Z9 r/ t$ e
2 y* g2 ~4 R& t$ a$ E( w# W/ g
选择性放开的端口:6666 与 6667
8 I3 G0 k) b$ [" U5 ^
- y3 g. e. e& \% F) r. g- M3 r如果只需要 http 连接,放开 rpc 端口 6666 就足够了。如果还需要 web socket 连接,才需要放开 6667 端口。% N) Z# m3 s$ v2 n5 ~% U
6 y1 B8 p7 X& K: O( i* o+ W
0x02 应该让节点做什么事情6 P8 c. \6 c0 t" J( k, s. F3 ?1 ^
; m) B$ v! m' I8 ]' k
在放开 rpcport 或 wasport 的情况下,非常不建议在此节点上进行账户管理/ x! A( h1 y) H) V
' g( g/ L1 Y+ I+ E" ~
一般来说,做应用开发时我们所搭建的节点,主要用来做两个事情:
- p( a1 ^) r, S2 S0 q9 e# `( }& f- l! l* }
查询数据$ l  j, P9 o- I" }1 X* p- |0 @
/ M4 l$ \6 \, i$ ^7 p& R
广播交易
. Y  V/ N# j7 @- v4 W/ V! t* P, |" @( E& q% d3 A! Z
账户管理,最好在去中心化钱包中去做。将签名后的交易通过 sendRawTransaction 发送到我们搭建的节点上。+ j! W- p. R, x, \; N

! L8 H3 L$ J8 r* }: O; ^. d. J  g0x03 rpcaddr 与 wsaddr
& x% W8 K1 H8 Z; T
& y1 [+ k% Q/ |4 p8 J) r7 A当这两个参数的值设为 0.0.0.0 时,将允许来自任何机器的 http 和 web socket 连接。
% W& d% P2 l: r1 n5 y
5 u/ g$ N! }/ A# }  U" F这个时候如果在自己搭的 geth 节点上创建或导入钱包,并执行 personal.unlockAccount 命令,别人就可以通过开放的 http或 web socket 连接执行sendTransaction调用将钱包中的以太币资产转出。
5 n5 I4 G! p1 F$ h0 `* x  ^  p
* W: J8 [7 n& a! O! p+ c0x04 对节点的进一步加固9 @3 F, M0 {2 X& A# J

1 t6 X' a% l8 k, D3 J( WSSH Tunnel: m* c% D% q6 C2 L3 t6 B

; X! {( M, o( p# r! M通过下面的命令将远程调用限制于本地连接,这里将rpcaddr和 wsaddr 参数的值都设为了 127.0.0.1: A5 B. F) V/ q% t9 Z5 M  k& n" k
) O/ k7 _; Z5 _) R
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 127.0.0.1  --ws --wsaddr 127.0.0.1 --wsport 6667 --wsorigins "*"! w8 x. D) w3 V- _6 ?8 q8 E

3 T- K# T& _+ T/ \2 O8 Y* m其它机器要调用这个节点怎么办呢?可以通过 SSH Tunnel 建立该机器与节点机器间的可信连接。( {/ {' q! V# c- i

* ]; Q2 q' p+ x  J/ NBasic Auth1 z( h! T- F; o

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

本版积分规则

成为第一个吐槽的人

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

    0

  • 关注

    0

  • 主题

    13