如何保護你的以太坊網絡節點RPC免受******?
下圖顯示了最近向***帳戶的轉移:
保護計算機系統傳統上是一場鬥智鬥勇,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免受******?