Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

关于 geth 节点安全

杨小公子君莫邪
91 0 0
前段时间有写过一个小文,用来给需要搭建 geth 节点的朋友们做些指引。所用命令如下:5 K; k3 w1 `& Z! r6 l
0 h- C: X) }4 A: B4 f+ m% C4 l
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 0.0.0.0  --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*"5 f1 v6 i3 W, S9 u, b

' g# a, W# m) }# ~2 h' D, j本文以此命令为基础,谈谈需要关注的安全方面的问题。
+ b! Y2 H3 w* b# I' U+ Z; U
5 }* c% k9 \  {! D& D0x01 防火墙应该放开哪些端口4 O( d) j& {; l# r6 }& r- q
# L" E2 q; K& I# p2 l
推荐放开的端口:30303
4 j0 T7 A" d2 e+ x! g
, t4 K" i. U4 x0 Q2 Y/ Q# Q这是 geth 节点之间相互连接建立 p2p 网络的端口,放开此端口可以大大提高数据同步的稳定性。
, b+ [7 H  Z7 R  z' H+ V0 B6 E$ s% Q
选择性放开的端口:6666 与 6667
8 O9 a7 h+ l& D( Y) J- _0 x" n$ [
  x( K( i" i* o- f' Z如果只需要 http 连接,放开 rpc 端口 6666 就足够了。如果还需要 web socket 连接,才需要放开 6667 端口。
0 U- o$ R' B2 R" Z# L& Y4 R% V% s- X6 u/ E* ^5 `9 {# s$ {7 b
0x02 应该让节点做什么事情
$ y" ]; C7 E# {/ e" m0 @3 J  t- N, @6 L' k' b& f( Y
在放开 rpcport 或 wasport 的情况下,非常不建议在此节点上进行账户管理9 G1 J, C/ V- Y1 o- U- ^& [
( G7 V& d0 x& M# b( H1 s4 Z1 {
一般来说,做应用开发时我们所搭建的节点,主要用来做两个事情:* G" ]$ E+ s, z9 L
! Z* v; r1 @* ?4 Y4 }" O0 X
查询数据; \6 e/ \- L; R2 X
" Q! [6 x) G% c: B  y6 N! e& b
广播交易+ u' T" Y' h/ h2 h  u4 X  n4 d$ f
; ]4 p3 R, J8 Z: Y
账户管理,最好在去中心化钱包中去做。将签名后的交易通过 sendRawTransaction 发送到我们搭建的节点上。
' T: [" B% S2 z- }; q8 V: Z% ?7 j" j& m. ]5 T4 U
0x03 rpcaddr 与 wsaddr
( T) e3 ?7 i" w" h4 f1 a5 Y/ K7 ]1 C
" P4 d. u5 X, W* V当这两个参数的值设为 0.0.0.0 时,将允许来自任何机器的 http 和 web socket 连接。
) l0 Q- b' @8 L1 w8 r7 `0 t- n
这个时候如果在自己搭的 geth 节点上创建或导入钱包,并执行 personal.unlockAccount 命令,别人就可以通过开放的 http或 web socket 连接执行sendTransaction调用将钱包中的以太币资产转出。* a* [1 M. n6 d9 _2 i) O3 ^' J

# Z0 [8 w; S5 t0x04 对节点的进一步加固
) U; k/ N2 U. I+ y  \
2 {1 c: O6 {2 A- s8 tSSH Tunnel0 h4 e* {& L) e/ r
* ~) C: @4 D6 x6 w# q6 W
通过下面的命令将远程调用限制于本地连接,这里将rpcaddr和 wsaddr 参数的值都设为了 127.0.0.1. u& t3 O/ h6 L

' Y) p) f2 w* e% K* Q" ogeth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 127.0.0.1  --ws --wsaddr 127.0.0.1 --wsport 6667 --wsorigins "*"
2 ~2 y0 r! K9 R2 ?3 j7 X& Y* D' {2 F( P" U3 ^( S
其它机器要调用这个节点怎么办呢?可以通过 SSH Tunnel 建立该机器与节点机器间的可信连接。
) f. m) O/ f) E) x# U& z1 P
& k4 n) l. V5 Q! U4 GBasic Auth% G& Q# f) \% I+ i

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

本版积分规则

成为第一个吐槽的人

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

    0

  • 关注

    0

  • 主题

    13