如何保护你的以太坊网络节点RPC免受******?

最近朋友的以太坊节点遭到******,存储在Geth钱包中的以太币通过暴露的RPC端口命令被转移出去,Transfer可以在下面看到。

下图显示了最近向***帐户的转移:

保护计算机系统传统上是一场斗智斗勇,Gosser说”穿透者试图找到漏洞,设计师试图关闭它们。”

与大多数比特币客户端不同,默认情况下,大多数以太坊客户端RPC不受密码保护。

尽管如此,有多种方法可以保护以太坊节点RPC。

其中一些方法包括:

  • 1.为帐户选择一个强密码。
  • 2.使用Nginx作为反向代理和HTTP基本身份验证。
  • 3.使用UFW设置防火墙。

安装以太坊客户端

以太坊有两个主要客户Parity和Geth。安装任何一个都可以很好地与以太坊网络进行交互。

你可以通过以下任一文章安装:

配置节点

从来没有这样做过!!!

在GETH节点上启用RPC访问时,不允许在解锁帐户的情况下允许对RPC进行外部访问。例如:

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

你基本上允许外部访问你的以太坊帐户,并且当你解锁帐户时,***者可以轻松转出存储在你钱包中的以太币。

由于此错误而被******的示例:

https://ethereum.stackexchange.com/questions/3887/how-to-reduce-the-chances-of-your-ethereum-wallet-getting-hacked?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

  • 还有我的朋友:)

保护你的以太坊节点

1.为帐户选择强随机密码

在Parity或Geth上创建帐户时,请选择一个强大的随机密码。可以从以下站点生成密码:

2.使用Nginx HTTP基本身份验证

  • 安装Nginx

你需要在服务器上安装和配置Nginx,你可以按照此Nginx文章进行操作。

  • 设置HTTP Auth基本凭据

在此步骤中,你将为运行该节点的用户创建密码。

该密码和关联的用户名将存储在你指定的文件中。密码将被加密,文件名可以是你喜欢的任何名称。

$ 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

你现在可以访问RPC URL

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

你还可以安装可以从letsencrypt获得的免费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
  • 启用RPC端口

我们只允许从我们的可信节点连接到我们的以太坊客户端。以太坊端口的默认RPC端口为8545。

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

例如,如果我的外部服务器IP地址是192.148.16.1,设置:

$ sudo ufw allow from 192.148.16.1 to any port 8545

如果你使用的是与8545不同的不同RPC端口,则应指定它。

  • 启用UFW

启用UFW

$ sudo ufw enable
  • 允许其他连接

你也可以根据需要启用其他端口,例如:HTTP 端口80,使用此命令可以允许HTTP连接(未加密的Web服务器使用的连接):

$ sudo ufw allow http

你的防火墙现在应配置为允许连接到以太坊RPC和网络端口。确保允许服务器需要的任何其他传入连接,同时限制任何不必要的连接,以便你的服务器功能和安全。

结论

安全性是区块链生态系统中的一个主要讨论。到处都有***想要偷走你的硬币。

如果你想学习区块链并在Blockchain Technologies建立职业生涯,那么请查看我们分享的一些以太坊、比特币、EOS、Fabric等区块链相关的交互式在线编程实战教程:

  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • ERC721以太坊通证实战,课程以一个数字艺术品创作与分享DApp的实战开发为主线,深入讲解以太坊非同质化通证的概念、标准与开发方案。内容包含ERC-721标准的自主实现,讲解OpenZeppelin合约代码库二次开发,实战项目采用Truffle,IPFS,实现了通证以及去中心化的通证交易所。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • c#比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在C#代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是C#工程师不可多得的比特币开发学习课程。
  • EOS入门教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • 深入浅出玩转EOS钱包开发,本课程以手机EOS钱包的完整开发过程为主线,深入学习EOS区块链应用开发,课程内容即涵盖账户、计算资源、智能合约、动作与交易等EOS区块链的核心概念,同时也讲解如何使用eosjs和eosjs-ecc开发包访问EOS区块链,以及如何在React前端应用中集成对EOS区块链的支持。课程内容深入浅出,非常适合前端工程师深入学习EOS区块链应用开发。
  • Hyperledger Fabric 区块链开发详解,本课程面向初学者,内容即包含Hyperledger Fabric的×××书与MSP服务、权限策略、信道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、nodejs链码与应用开发的操作实践,是Nodejs工程师学习Fabric区块链开发的最佳选择。
  • Hyperledger Fabric java 区块链开发详解,课程面向初学者,内容即包含Hyperledger Fabric的×××书与MSP服务、权限策略、信道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、java链码与应用开发的操作实践,是java工程师学习Fabric区块链开发的最佳选择。
  • tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是如何保护你的以太坊网络节点RPC免受******?

原文地址:https://blog.51cto.com/14316254/2390651

时间: 2024-09-29 22:19:24

如何保护你的以太坊网络节点RPC免受******?的相关文章

区块链开发:以太坊网络

区块链开发:以太坊网络 一.geth Geth 又名Go Ethereum. 是以太坊协议的三种实现之一,由Go语言开发,完全开源的项目.Geth 可以被安装在很多操作系统上,包括Windows.Linux.Mac的OSX.Android或者IOS系统 Geth官网:https://geth.ethereum.org/ Geth的Github地址:https://github.com/ethereum/go-ethereum Ubuntu安装geth客户端: 官方教程:https://githu

以太坊私有节点搭建

我们可以通过搭建以太坊的私有节点,模拟以太坊挖矿.交易.部署运行智能合约,从而达到测试开发的目的.下面具体说明搭建过程: 1. 创建新帐号 geth --datadir {eth_dir} account new    //其中 eth_dir 是私有节点的数据目录 2. 创建 genesis.json 文件,保存创世纪块的配置信息 { "config": { "chainId": 1, "homesteadBlock": 0, "ei

币圈Telegram ICO筹8.5亿美元, 拟建第三代区块链网络, 目标以太坊

据国外媒体报道,币圈核心即时通讯工具Telegram本周(至2月17日当周)稍早递交给美国证券交易委员会(SEC)的一份文件显示,该公司已经通过ICO筹集到8.5亿美元资金,用于开发TON开源网络.研发和维护Telegram Messenger以及其他目的. 一.关于Telegram Telegram是一款开源且跨平台的IM工具(类似 Whatsapp.Messenger.微信),Telegram也叫电报,于2013年推出,目前拥有1.8亿用户,每天发送700亿条信息.被称为"俄罗斯版'微信'&

3.以太坊之秘钥文件

1.账号 账号在以太坊中扮演着核心的角色.以太坊共有两种账号类型: 外部账号( EOA) 和合约账号. 在这里我们先重点关注外部账号,简称账号.合约账号简称合约,合约账户在合约章节中详细介绍. 外部账户和合约账户都是账户的通用概念,这些账户其实都是状态对象.外部账户的余额就是外部账户的一个状态对象,合约账户的状态除了有余额还有合约存储. 所有账户的状态都是以太坊网络的状态,以太坊网络的状态随着每一个区块的更新而变化.用户通过交易和以太坊区块链进行交互,在这个过程中,账户起着至关重要,不可缺少的作

以太坊白皮书解析

目录 导读概念 历史沿革 中本聪的理念 作为状态转换系统的比特币 挖矿 默克尔树 其它的区块链应用 脚本 以太坊 以太坊账户 消息和交易 以太坊状态转换函数 代码执行(EVM层) 区块链和挖矿 以太坊应用举例 令牌系统 金融衍生品和价值稳定的货币 身份和信誉系统 去中心化存储 去中心化自治组织( DAO) 进一步的应用 相关杂项 改进版幽灵协议的实施 费用 计算和图灵完备 货币和发行 发行分解 挖矿的中心化 扩展性 综述与结论 综述 结论 导读概念 以太坊中常见的概念: 块:块是存储在区块链中的

[中文] 以太坊(Ethereum )白皮书

以太坊(Ethereum ):下一代智能合约和去中心化应用平台 翻译|巨蟹 .少平 译者注|中文读者可以到以太坊爱好者社区(www.ethfans.org)获取最新的以太坊信息. 当中本聪在2009年1月启动比特币区块链时,他同时向世界引入了两种未经测试的革命性的新概念.第一种就是比特币(bitcoin),一种去中心化的点对点的网上货币,在没有任何资产担保.内在价值或者中心发行者的情况下维持着价值.到目前为止,比特币已经吸引了大量的公众注意力,就政治方面而言它是一种没有中央银行的货币并且有着剧烈

【刘文彬】探路以太坊

原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/ethereum.html 关键字:以太坊,加密货币,crowdsale,geth,console,web3.js # 以太坊简介 一句话简介:以太坊是一个基于功能齐全的编程语言构建的众多去中心化区块链应用的平台. 下面来解读一下这句话: 平台:首先以太坊是一个平台,这个平台上面有很多应用. 应用:这些应用是是去中心化的,基于区块链技术.所以这些应用可以实现永不停歇,因为它是分布式的,去中心化的,基于P

区块链入门(2):搭建以太坊私有链(private network of ethereum),以及挖矿的操作..

在做一些测试工作的时候, 为了方便控制以及更快的进入真正的测试工作,可能需要搭建一个私有的以太坊网络. 而以太坊节点之间能够互相链接需要满足1)相同的协议版本2)相同的networkid,所以搭建私有网络最方便的方法就是通过geth命令中的--networkid选项,设置一个与主网不同的networkid(主网的networkid为1),这也是官方推荐的方法. 下面开始建立私有以太坊网络: mkdir private-geth cd private-geth 建立创世纪区块文件,是一个json格

以太坊是什么 - 以太坊开发入门指南

很多同学已经跃跃欲试投入到区块链开发队伍当中来,可是又感觉无从下手,本文将基于以太坊平台,以通俗的方式介绍以太坊开发中涉及的各晦涩的概念,轻松带大家入门. 以太坊是什么 以太坊(Ethereum)是一个建立在区块链技术之上, 去中心化应用平台.它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用. 对这句话不理解的同学,姑且可以理解为以太坊是区块链里的Android,它是一个开发平台,让我们就可以像基于Android Framework一样基于区块链技术写应用. 在没有以太坊之前,写区