以太坊支持RPC模式,以太坊账户开启这种模式后,就可以自动化完成某些操作,比如矿池挖出币之后自动向钱包转账。攻击者主要利用RPC开放端口,所以只要限制RPC端口就可以做到防护。
下面主要攻击手段分析:
1.批量扫描8485端口或8100端口等常用开放RPC端口
2.当扫描到开放的端口之后,使用eth.getBlockByNumber(查询区块高度)、eth.accounts(查询钱包地址)、eth.getBalance(查询钱包余额)三个命令来做相应动作。
3.不断尝试发送eth.sendTransaction命令,该命令如果生效,则会把钱包中的余额转移到攻击者的钱包.有人会问,转账需要密钥参与,黑客是怎么绕开密钥呢?
原来,以太坊账户支持unlockAccount命令,这个命令是为了方便某些机械化交易提供的。在代币交易中,有些人使用电脑进行高频交易,以此来获取波动价差(股票高频交易也是这么做,有时候一分钟来回买卖几十次)。
以太坊在高频交易中(或者矿池自动转账)可以设置一段时间内无需输入密码,时间长短由用户自己指定。如果黑客正好在这段时间之内发来了“余额转移”的指令,以太坊账户(钱包或web账户)就会自动执行该操作,将钱包里的以太坊转到黑客钱包中。
那么,用户应该如何防止此类攻击?专家建议用户应如下操作:
1、更改默认的 RPC API 端口,配置方法如:--rpcport 8988 或 --wsport 8678 (让端口扫描无法生效)
2、更改 RPC API 监听地址为内网,配置方法如:--rpcaddr 192.168.1.100 或 --wsaddr 192.168.1.100
3、配置 iptables 限制对 RPC API 端口的访问,举例:只允许 192.168.1.101 访问 8545 端口(只接受特定IP发来的命令):
iptables -A INPUT -s 192.168.1.101 -p TCP --dport 8545 -j ACCEPT
iptables -A INPUT -p TCP --dport 8545 -j DROP
或者使用UFW防火墙,UFW或Uncomplicated Firewall是iptables的一个接口,旨在简化配置防火墙的过程
1.安装UFW sudo apt-get install ufw
2.设置默认策略
$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
3.允许以太网网络端口
我们还将启用以太坊网络,以便我们的节点能够与公共区块链网络进行通信和同步。以太坊网络端口是30303,$ sudo ufw allow 30303
4.启用RPC端口 我们只允许从我们的可信节点连接到我们的以太坊客户端。以太坊端口的默认RPC端口为8545。
$ sudo ufw allow from <IP addr> to any port 8545
例如,如果我的外部服务器IP地址是192.168.1.9,设置:sudo ufw allow from 192.168.1.9 to any port 8545
如果你使用的是与8545不同的不同RPC端口,则应指定它。
5.启用UFW sudo ufw enable
6.允许其他连接,你也可以根据需要启用其他端口,例如:HTTP 端口80,使用此命令可以允许HTTP连接(未加密的Web服务

本文探讨了以太坊RPC模式的潜在安全风险,包括端口扫描与恶意转账,并提供了详细的防护策略,如更改端口、限制访问及使用HTTP基本认证。
最低0.47元/天 解锁文章
1414

被折叠的 条评论
为什么被折叠?



