Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

关于 geth 节点安全

杨小公子君莫邪
166 0 0
前段时间有写过一个小文,用来给需要搭建 geth 节点的朋友们做些指引。所用命令如下:# l4 S2 ?& l8 q6 m# E. \+ S0 R

) u% e( j* U" ggeth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 0.0.0.0  --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*"& `9 Q- R% o) f% O
* l% a5 s% J) A9 Q  ^7 M
本文以此命令为基础,谈谈需要关注的安全方面的问题。
9 x/ h2 b2 g4 y/ h0 K$ `+ c
" ^+ d$ T5 k' t0 R1 }2 h0x01 防火墙应该放开哪些端口$ a5 B( H. K& ?* |

4 E# W+ f4 m& {2 }- c4 @推荐放开的端口:30303
# g1 W8 N& r' M4 B8 k' g
7 w& w$ U7 [- _' L8 @* b这是 geth 节点之间相互连接建立 p2p 网络的端口,放开此端口可以大大提高数据同步的稳定性。% b4 C: D& b+ X3 [* n; M+ k$ \+ N0 ~

0 l# Z$ U1 q4 B1 c选择性放开的端口:6666 与 6667
& z- F: U% D" D/ f
4 P4 `8 Q" F; h- y/ b2 d/ d如果只需要 http 连接,放开 rpc 端口 6666 就足够了。如果还需要 web socket 连接,才需要放开 6667 端口。
: G1 U; _9 G/ t8 @
" D" c. Z0 c" u) R+ m# [: N, |5 {0x02 应该让节点做什么事情
( ]2 c' U2 n' A3 |- i0 _& M
4 a  Q, M3 d4 f4 T! `在放开 rpcport 或 wasport 的情况下,非常不建议在此节点上进行账户管理1 X+ h. `: Z+ C# `

/ j  r2 \/ E, ?, h一般来说,做应用开发时我们所搭建的节点,主要用来做两个事情:' Q+ L" M. Q2 D

* j/ {  P4 C0 A8 c+ x) Z$ Q3 ^6 r查询数据3 P5 }( b  F/ w9 l4 Y- r

% n6 C# k' g  j+ W5 P( v5 [# k  u广播交易
: m( N( [+ S/ ?# M( b( ?9 V: \
8 U4 a4 l& \- {账户管理,最好在去中心化钱包中去做。将签名后的交易通过 sendRawTransaction 发送到我们搭建的节点上。0 N) u/ n' H& h+ q( e

* v0 n1 a/ k1 k/ ^6 D2 H0x03 rpcaddr 与 wsaddr! v& a3 D8 A% u9 r
. n% A) M0 _! X" t0 x
当这两个参数的值设为 0.0.0.0 时,将允许来自任何机器的 http 和 web socket 连接。
) [3 E0 \6 Z* W
4 {. M  L* x9 |: W1 N7 v这个时候如果在自己搭的 geth 节点上创建或导入钱包,并执行 personal.unlockAccount 命令,别人就可以通过开放的 http或 web socket 连接执行sendTransaction调用将钱包中的以太币资产转出。
" C0 F# |( m; }& I' b" ]# K# T* U4 t. k) J% Z4 S5 u  R& u. \& s. T
0x04 对节点的进一步加固
9 o4 Z: P+ r- P, W9 r/ m: p
  K( b# R/ s* U5 g, w! M5 V0 Y( `SSH Tunnel
- v' E8 \1 z( P" a% S2 i6 R
* \- m2 _. r+ X) X& G5 G/ C- ]通过下面的命令将远程调用限制于本地连接,这里将rpcaddr和 wsaddr 参数的值都设为了 127.0.0.1
9 [4 c" E! m. ~3 x. e" ^$ I; f! C3 _. m, H5 _
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 127.0.0.1  --ws --wsaddr 127.0.0.1 --wsport 6667 --wsorigins "*"8 P/ J. U& `/ V: a0 h. Z2 O2 @

4 n3 Y& v5 Y9 Q/ L2 l& y其它机器要调用这个节点怎么办呢?可以通过 SSH Tunnel 建立该机器与节点机器间的可信连接。
7 D1 B! ^9 }( e
2 T5 |2 R1 o1 }Basic Auth
6 a; o' v) ?+ U/ e5 O
1 a" e: I6 r% ^% a可以在节点服务器上搭建 nginx 服务器,配置相应的 basic auth,通过用户名密码来限制对 geth 节点 rpc 服务的调用。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

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

    0

  • 关注

    0

  • 主题

    13