专栏首页区块链大本营千万别惹牛人!小哥被盗22元后,整出了这篇以太坊钱包安全攻略,黑客看完得哭了...

千万别惹牛人!小哥被盗22元后,整出了这篇以太坊钱包安全攻略,黑客看完得哭了...

安全,安全,安全!

对于区块链动辄几十万行的代码量,安全漏洞时不时就冒出来。敏锐的黑客们,虎视眈眈地盯着漏洞的闸门,一旦看见开闸,便以迅雷不及掩耳的速度展开偷袭。

对于用户来说,最大的风险莫过于钱包被盗,用户如何才能安全地享受加密货币带来的便利?国外专栏作家samparsky在朋友以太坊钱包被盗,损失了0.012236个以太币(价值约人民币22元,对,你没看错,就是22元)后,痛定思痛,为我们带来了这篇诚意满满的以太坊钱包安全教程。一秒都别等,赶紧用起来。

作者 | samparsky

译者 | Guoxi

从某种意义上来说,保护计算机系统是一场智力的较量:攻击者识图找到并利用漏洞,而系统设计者会想方设法关闭漏洞。— Gosser 前车之鉴

近期我一个朋友的以太坊钱包节点遭到了黑客入侵,黑客通过一个开放的RPC (Remote Procedure Call,远程过程调用)端口命令转走了他存储在以太坊钱包中的以太币,下图是在区块链上留下的记录。

朋友账户的流水

下图显示出了黑客账户的近几笔交易流水。

黑客账户的流水

与比特币客户端不同,默认情况下,大多数以太坊客户端的远程过程调用并不受密码保护。

尽管如此,仍有很多种方法可以用来保护以太坊钱包节点的远程过程调用。其中一些方法包括:

  1. 为账户选择一个安全性高的强密码。
  2. 使用Nginx服务器作为反向代理和HTTP基本认证机制。
  3. 使用UFW设置防火墙。

安装以太坊钱包客户端

以太坊有两个主要的钱包客户端Parity和Geth。两者功能类似,安装任何一个钱包客户端都可以让你加入到以太坊网络中。

你可以按照以下任一篇文章进行安装:

  • 安装Geth (https://github.com/ethereum/go-ethereum/wiki/Installing-Geth)
  • 设置奇偶校验 (https://wiki.parity.io/Setup)

配置你的以太坊节点

永远不要这样做!!!

在钱包节点Geth上启用远程过程调用访问时,千万不要允许带有解锁账户功能的远程过程调用的外部访问。例如:

$ geth — rpc — rpcaddr 0.0.0.0 — rpcport 8545 — rpcapi “db, eth, net, web3, personal” — ipcapi “admin,eth,debug,personal,web3” — unlock <addrs>

左滑可查看未显示代码(下同)

通过以上代码,原则上你允许了自己以太坊账户的外部访问,此时攻击者可以轻松地将你存储在钱包中的以太坊转出,因为你的帐户已经被解锁。

不只是我朋友,好多人以太坊钱包被盗都是由于这个漏洞。

后事之师:如何保护你的以太坊钱包

1.为账户选择一个安全性高的随机密码

在使用Parity或Geth创建以太坊账户时选择一个安全性高的随机密码,不知道怎样生成?可以参考以下网站:

  • https://passwordsgenerator.net/
  • https://lastpass.com/generatepassword.php
  • https://www.random.org/passwords/

2.使用Nginx反向代理服务器和HTTP基本认证机制

安装Nginx

你需要安装并配置Nginx服务器,具体方法请参考Nginx教程。

设置HTTP基本认证证书

在这一步中,你需要给运行该钱包节点的用户创建一个密码。

该密码和关联的用户名将被存储在你指定的文件中,其中密码将被加密,存储的文件名你可以任意指定。

$ sudo htpasswd -c /etc/nginx/.htpasswd nginx

你可以检查新创建文件的内容以查看用户名和经哈希计算加密的密码。

$ cat /etc/nginx/.htpasswd

更新Nginx配置

现在我们已经创建了HTTP基本认证证书,下一步我们要更新Nginx配置以查看它。

sudo nano /etc/nginx/sites-available/default

更新文件,在其中加入这些内容:

server { listen 80; listen [::]:80; # ADDED THESE TWO LINES FOR AUTHENTICATION auth_basic “Protected Ethereum client”; auth_basic_user_file /path/to/passwords; server_name example.com; location / { proxy_pass http://localhost:8545/; proxy_set_header Host $host; } } 测试

要应用更改,需要重新加载Nginx。

$ sudo service nginx reload

现在你可以通过这个地址进行远程过程调用:

http://<USERNAME>:<PASSWORD>@mydomain.com

改进

为了增强安全性,你可以从letsencrypt网站上安装免费的SSL(Secure Sockets Layer,安全套接层)证书,具体方法请参考SSL教程。

3.使用UFW设置防火墙

UFW也叫Uncomplicated Firewall,是iptables的接口,旨在简化配置防火墙的过程。

安装UFW

$ sudo apt-get install ufw 设置默认策略

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

允许特定的以太坊网络端口

我们需要启用特定端口,连接到以太坊网络中,以便我们的钱包节点能够与以太坊区块链进行通信和同步。

以太坊网络使用的端口为30303。

$ sudo ufw allow 30303

启用远程过程调用端口

为了安全性,我们仅允许从我们信任的节点连接到我们的以太坊客户端,以太坊的默认远程过程调用端口是8545。

$ sudo ufw allow from <IP addr> to any port 8545

举个例子,如果我们信任的外部节点服务器的IP地址是192.168.16.1,那么命令应该是这样:

$ sudo ufw allow from 192.148.16.1 to any port 8545

如果你使用了与8545不同的远程过程调用端口,那么在命令中也要相应地替换掉。

启用UFW

启用UFW命令:

$ sudo ufw enable

允许其他连接

你可以根据需要启用其他端口进行连接。

HTTP-80端口

使用此命令可以允许HTTP连接,HTTP连接是未加密的Web服务器使用的连接。

$ sudo ufw allow http

你的防火墙现在应该设置为允许连接到以太坊远程过程调用端口和网络端口。一定要确保你的服务器允许了任何必要的连接,同时限制任何不必要的连接,这样的你服务器才能正常地、安全地工作。

加密货币价格的疯涨自然也会也引起了黑客的注意,在你享受去中心化带来的便利时,也要千万注意安全性问题啊,因为去中心化这把双刃剑使得你钱包被盗后完全没有任何商量的余地,你的钱就成了黑客持有的资产,没有一个权威机构来帮你挽回损失。

动起手来,按照教程从源头做起,让你的加密货币无懈可击,OK?

本文分享自微信公众号 - 区块链大本营(blockchain_camp)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 做了四年以太坊核心开发者, 以太坊升级了, 我也该离开了……

    新年以来,以太坊发展势头一片大好,当以太坊重回世界第二大加密货币的宝座时,四年元老,以太坊核心开发人员,主流以太坊客户端 Parity 核心开发人员 Afri ...

    区块链大本营
  • 柏链道捷孟岩:区块链应用,最重要的是经济系统设计

    区块链大本营
  • 灵钛科技CEO姜英英:如何更好地了解以太坊?

    2019年6月29日,由CSDN、灵钛科技主办,区块链大本营、Unitimes、ETHPLANET、以太坊爱好者社区、火星财经协办的“2019第二届以太坊技术及...

    区块链大本营
  • 币聪科技:凤凰涅槃,以太坊最后的升华

    导读:传说中的天方国,有一对神鸟,雄为凤,雌为凰。满五百岁后,集香木自焚,复从死灰中更生,从此鲜美异常,不再死。雄奇的大黑山上,高达十米的烈焰从山顶喷薄而出,飞...

    币聪财经
  • 快速学习-去中心化应用与以太坊应用

    • 基于以太坊可以创建智能合约(Smart Contract)来构建去中心化应用(Decentralized Application,简称为 DApp) • 以...

    cwl_java
  • 麻省理工评论:以太坊自认为可以改变世界,但是留给她证明自己的时间不多了!

    区块链系统中有很多艰巨的技术问题需要解决。但首先,区块链的支持者需要弄清楚如何治理区块链。

    点滴科技资讯
  • 1分钟链圈 | JPM Coin不是加密货币;比特币宜晚上交易;“以太坊2.0”今明两年不会来

    据bitcoinexchangeguide报道,根据CoinMap的数据,自2013年12月以来,全球接受比特币(BTC)的商店和商家的数量增长了约700%。目...

    区块链大本营
  • 快速学习-以太坊的代币与名词解释

    cwl_java
  • java程序员使用web3j进行以太坊开发详解

    如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,...

    笔阁
  • android和java程序员使用web3j进行区块链以太坊开发详解

    如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,...

    用户2192618

扫码关注云+社区

领取腾讯云代金券