Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

关于 geth 节点安全

杨小公子君莫邪
127 0 0
前段时间有写过一个小文,用来给需要搭建 geth 节点的朋友们做些指引。所用命令如下:
2 [+ I8 E; R( p$ U. t/ b: ]9 \7 E& Q  J8 Q' [
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 0.0.0.0  --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*"
5 X  W6 ]* n0 @
) w5 f0 c2 r5 {( b本文以此命令为基础,谈谈需要关注的安全方面的问题。
2 J" q/ k3 ]$ c6 r  L! D8 t# l/ h! A7 u
0x01 防火墙应该放开哪些端口$ D6 d3 X/ F' T) z  w6 k4 Y
, A8 {( C# t1 C6 @
推荐放开的端口:30303
0 f, K0 M8 n2 p$ c  P0 [7 I# {! {/ k4 M9 H& x
这是 geth 节点之间相互连接建立 p2p 网络的端口,放开此端口可以大大提高数据同步的稳定性。. C: `+ T9 V" c/ D/ A

# w6 j4 o3 y% l* `+ ^: k5 ^0 k选择性放开的端口:6666 与 66674 Q6 [6 O& v2 t: w2 u+ {# z* ~

9 R, I- J  C! k+ c2 R1 e" i5 t如果只需要 http 连接,放开 rpc 端口 6666 就足够了。如果还需要 web socket 连接,才需要放开 6667 端口。& J+ x7 j) I7 E& _

7 g% W* T2 z! V6 B: d1 s5 o/ r: |( E0x02 应该让节点做什么事情! W& ?. o# c" N7 S

7 _; W' I" u. O' k8 o在放开 rpcport 或 wasport 的情况下,非常不建议在此节点上进行账户管理0 ?8 F" S3 r, ^, O3 {, ~  d

$ a3 X% l5 e" t7 N: }9 p8 Q一般来说,做应用开发时我们所搭建的节点,主要用来做两个事情:
: m" C2 M. `2 T; Y2 u0 `5 a7 x* j: C1 e0 k, p- P  I5 Y/ U
查询数据: T3 e* p( {3 L& Q1 n

/ L2 i( t7 i6 q, P广播交易
: {5 N8 i6 ^; q0 ^
, u3 T: y& l5 `$ F0 P8 ^( d  C账户管理,最好在去中心化钱包中去做。将签名后的交易通过 sendRawTransaction 发送到我们搭建的节点上。
2 c" `6 |% w; ?0 N! a! \* ^2 J
- ]# h6 O( [  s2 z& W0x03 rpcaddr 与 wsaddr0 |  d" {6 s$ h+ [

! u% G9 d# v" R' H当这两个参数的值设为 0.0.0.0 时,将允许来自任何机器的 http 和 web socket 连接。
: b- o4 V1 p9 }6 @8 o3 y5 m
9 {% B& a4 a9 ], y5 l$ g这个时候如果在自己搭的 geth 节点上创建或导入钱包,并执行 personal.unlockAccount 命令,别人就可以通过开放的 http或 web socket 连接执行sendTransaction调用将钱包中的以太币资产转出。( h8 |0 r3 ^! l3 M( E- |

3 d3 k$ b% G3 X0x04 对节点的进一步加固
0 q6 T& C- \4 `7 i# F  n0 m
6 a- k8 b9 y6 w# h( i. D5 mSSH Tunnel
, |9 _; j1 y% w7 |2 x' `, C; P8 b, r& f; L# R5 u0 W/ \' O
通过下面的命令将远程调用限制于本地连接,这里将rpcaddr和 wsaddr 参数的值都设为了 127.0.0.1
( b4 R* V" h, D' |% Y8 y! ~' T. E2 W( d" ~; E5 `
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 127.0.0.1  --ws --wsaddr 127.0.0.1 --wsport 6667 --wsorigins "*"
/ ]+ y- d* J  U6 @
/ `+ n# y( {! @其它机器要调用这个节点怎么办呢?可以通过 SSH Tunnel 建立该机器与节点机器间的可信连接。. R+ S* K( @) X8 U+ T9 `% t
; P/ P/ h& _- q- g: x+ |) L5 ]& X4 i
Basic Auth
3 a# m) g( e6 N/ K& q8 c5 Y7 r+ ]5 S6 y* Q% M0 Z. H
可以在节点服务器上搭建 nginx 服务器,配置相应的 basic auth,通过用户名密码来限制对 geth 节点 rpc 服务的调用。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

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

    0

  • 关注

    0

  • 主题

    13