Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

关于 geth 节点安全

杨小公子君莫邪
153 0 0
前段时间有写过一个小文,用来给需要搭建 geth 节点的朋友们做些指引。所用命令如下:( k/ }2 n( ?4 f' g) I) h% V
* y) i- f4 `7 [% N. E8 G
geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 0.0.0.0  --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*"" J/ C) ^* r5 H( g. }( ]0 ?

9 R  ]) w; M5 n* x: ~* Z本文以此命令为基础,谈谈需要关注的安全方面的问题。
* A5 S% p, e* q2 a/ {/ c; z2 Z( p; ~! n  B
0x01 防火墙应该放开哪些端口
- `  H' |2 n) p- _( k+ D/ o' Y' d* W) L
8 L. |4 E2 v" h+ {推荐放开的端口:30303
5 R3 n- }$ t5 c9 k* F9 G9 q! b0 M$ B: E, W, [/ |
这是 geth 节点之间相互连接建立 p2p 网络的端口,放开此端口可以大大提高数据同步的稳定性。2 k7 u5 w/ d; O* W& j( ]2 e: S
1 `- L. A( _1 ?: y8 B- {6 P$ p
选择性放开的端口:6666 与 6667' l) j8 I- T( |

6 x* q! G# N) c& h9 r如果只需要 http 连接,放开 rpc 端口 6666 就足够了。如果还需要 web socket 连接,才需要放开 6667 端口。
( a. J' E! d" S  F" D  k4 N6 i( y, L( _5 ?5 I# l9 {
0x02 应该让节点做什么事情
# p9 o8 x! q% O& @5 D1 [
7 t- W7 y: K, H9 v% M在放开 rpcport 或 wasport 的情况下,非常不建议在此节点上进行账户管理
1 D$ Q, N1 h/ Z
" W/ T! g! z9 t& A' d一般来说,做应用开发时我们所搭建的节点,主要用来做两个事情:% u: Q5 y8 ]1 G5 n. p/ X( \
. `) n3 q# @5 n6 p! c
查询数据
7 s* T+ `) _6 Y1 g# v
" v, M( t+ S7 J3 c2 U7 s广播交易" q. D5 V7 r8 t, e# g( F" U3 J9 V: n% u& C
* p) A: o. r- H" ]9 V
账户管理,最好在去中心化钱包中去做。将签名后的交易通过 sendRawTransaction 发送到我们搭建的节点上。
4 ^' p- H" Y0 D) G, T: A& M$ w" m+ k3 z$ L6 C7 m
0x03 rpcaddr 与 wsaddr; ^3 v& J/ o3 c9 x. ]' N0 P

0 W! n, t6 t3 p8 n) V5 @当这两个参数的值设为 0.0.0.0 时,将允许来自任何机器的 http 和 web socket 连接。7 a, N9 y% M, j+ z
3 F0 x  g" Y9 O  @3 C5 N- y2 p
这个时候如果在自己搭的 geth 节点上创建或导入钱包,并执行 personal.unlockAccount 命令,别人就可以通过开放的 http或 web socket 连接执行sendTransaction调用将钱包中的以太币资产转出。3 H2 p1 _- \4 k( r5 U3 P
/ e) |# p5 n2 B% I0 X# A$ I
0x04 对节点的进一步加固
8 a* L& O1 ?9 [9 t: [
8 M) h. o) \- B7 DSSH Tunnel/ R9 A+ W2 C& [# r
7 P. z/ C+ H0 i  s
通过下面的命令将远程调用限制于本地连接,这里将rpcaddr和 wsaddr 参数的值都设为了 127.0.0.1: q1 L2 r! R% F, e0 W

( |" \2 C" o# b. X' k- w# @% [geth --datadir --cache 4096 data --rpc --rpcport 6666 --rpcaddr 127.0.0.1  --ws --wsaddr 127.0.0.1 --wsport 6667 --wsorigins "*"
/ F4 ~7 ~  G8 j' z$ b8 H
  a  B) G9 m+ ]1 R, O其它机器要调用这个节点怎么办呢?可以通过 SSH Tunnel 建立该机器与节点机器间的可信连接。: T$ D6 r  s; r
7 @, b, w, c$ F5 G1 r
Basic Auth
" A! U. E. p' {( }
2 R0 h" ?% u# q# P可以在节点服务器上搭建 nginx 服务器,配置相应的 basic auth,通过用户名密码来限制对 geth 节点 rpc 服务的调用。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

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

    0

  • 关注

    0

  • 主题

    13