1. 程式人生 > >如何保護你的以太坊網絡節點RPC免受******?

如何保護你的以太坊網絡節點RPC免受******?

希望 隨機密碼 技術 服務器ip github fir comm 智能合約開發 相關

最近朋友的以太坊節點遭到******,存儲在Geth錢包中的以太幣通過暴露的RPC端口命令被轉移出去,Transfer可以在下面看到。

技術分享圖片

下圖顯示了最近向***帳戶的轉移:

技術分享圖片

保護計算機系統傳統上是一場鬥智鬥勇,Gosser說”穿透者試圖找到漏洞,設計師試圖關閉它們。”

與大多數比特幣客戶端不同,默認情況下,大多數以太坊客戶端RPC不受密碼保護。

盡管如此,有多種方法可以保護以太坊節點RPC。

其中一些方法包括:

  • 1.為帳戶選擇一個強密碼。
  • 2.使用Nginx作為反向代理和HTTP基本身份驗證。
  • 3.使用UFW設置防火墻。

安裝以太坊客戶端

以太坊有兩個主要客戶Parity和Geth。安裝任何一個都可以很好地與以太坊網絡進行交互。

你可以通過以下任一文章安裝:

  • https://github.com/ethereum/go-ethereum/wiki/Installing-Geth
  • https://wiki.parity.io/Setup

配置節點

從來沒有這樣做過!!!

在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上創建帳戶時,請選擇一個強大的隨機密碼。可以從以下站點生成密碼:

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

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免受******?

如何保護你的以太坊網絡節點RPC免受******?