比特幣節點網路配置與安全加固指南

涵蓋靜態 IP 配置、防火牆設定、SSH 安全強化、RPC 加密、Tor 洋蔥網路設定等進階網路與安全配置。

比特幣節點網路配置與安全加固指南

概述

運行比特幣節點不僅需要合適的硬體,更需要正確的網路配置和安全加固。本指南涵蓋從基礎網路設定到進階安全防護的全部內容。

網路基礎配置

1. 靜態 IP 配置

建議為比特幣節點分配固定 IP:

Ubuntu 設定靜態 IP

# 編輯網路配置
sudo nano /etc/netplan/01-netcfg.yaml

# 範例配置
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

2. 防火牆設定

UFW 防火牆配置(Ubuntu)

# 安裝 UFW
sudo apt install ufw

# 設定預設規則
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 允許 SSH(遠端管理)
sudo ufw allow 22/tcp

# 允許比特幣節點通訊
sudo ufw allow 8333/tcp   # 主網
sudo ufw allow 18333/tcp  # 測試網

# 啟用防火牆
sudo ufw enable

# 檢查狀態
sudo ufw status verbose

iptables 高級規則

# 允許已建立的連線
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 限制比特幣連接數(防 DDoS)
sudo iptables -A INPUT -p tcp --dport 8333 -m connlimit --connlimit-above 50 -j REJECT

# 限制連線速率
sudo iptables -A INPUT -p tcp --dport 8333 -m hashlimit --hashlimit-above 10/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name bitcoin_limit -j DROP

# 記錄被阻擋的連線
sudo iptables -A INPUT -j LOG --log-prefix "BitcoinBlock: "

3. 路由器端口轉發

在路由器上設置端口轉發:

服務端口協定說明
Bitcoin Core8333TCP主網 P2P
Bitcoin Core8334TCP主網 RPC
Bitcoin Core18333TCP測試網 P2P
Lightning9735TCP閃電網路

4. DNS 設定

使用可靠的 DNS 伺服器:

# bitcoin.conf
dnsseed=1
dns=1

# 自訂 DNS 伺服器
addnode=seed.bitcoin.sipa.be
addnode=dnsseed.bluematt.me
addnode=dnsseed.bitcoin.dashjr.org
addnode=seed.bitcoinstats.com
addnode=seed.btc.petertodd.org

安全加固

1. SSH 安全強化

SSH 密鑰認證

# 生成 SSH 密鑰對
ssh-keygen -t ed25519 -C "bitcoin-node"

# 複製公鑰到伺服器
ssh-copy-id user@your-server-ip

# 禁用密碼認證
sudo nano /etc/ssh/sshd_config

# 修改以下內容
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes

# 重啟 SSH
sudo systemctl restart sshd

SSH 額外安全

# sshd_config 強化
Port 2222                  # 更換預設端口
MaxAuthTries 3             # 限制登入嘗試
ClientAliveInterval 300    # 閒置 timeout
AllowUsers bitcoinuser     # 限制登入用戶

2. 比特幣 RPC 安全

基本安全配置

# bitcoin.conf
server=1
daemon=1

# RPC 訪問控制
rpcuser=bitcoinuser
rpcpassword=超強密碼(至少 20 字元)

# 限制 RPC 訪問
rpcbind=127.0.0.1         # 只允許本機訪問
# rpcbind=192.168.1.100   # 如需區網訪問

# SSL/TLS 加密(推薦)
rpcssl=1

使用 SSH 隧道訪問 RPC

# 本機建立 SSH 隧道
ssh -N -L 8332:localhost:8332 user@bitcoin-node

# 通過隧道訪問 RPC
bitcoin-cli -rpcconnect=127.0.0.1 -rpcport=8332 getblockchaininfo

3. 隔離環境運行

使用 Docker 隔離

# 安裝 Docker
sudo apt install docker.io

# 運行比特幣節點
docker run -d \
  --name bitcoin-node \
  -v /home/bitcoin/.bitcoin:/root/.bitcoin \
  -p 8333:8333 \
  -p 8334:8334 \
  -p 28332:28332 \
  bitcoin/bitcoin:latest \
  bitcoind -daemon -printtoconsole

AppArmor/SELinux 配置

# Ubuntu AppArmor 配置
sudo apt install apparmor-profiles

# 比特幣相關配置
sudo aa-status | grep bitcoin

4. 入侵檢測

Fail2ban 防暴力破解

# 安裝
sudo apt install fail2ban

# 配置
sudo nano /etc/fail2ban/jail.local

# 比特幣相關規則
[bitcoin-rpc]
enabled = true
port = 8334
filter = bitcoin-rpc
logpath = /home/bitcoin/.bitcoin/debug.log
maxretry = 3
bantime = 3600

日誌監控

# 監視比特幣日誌
tail -f ~/.bitcoin/debug.log | grep -i "error\|warning\|suspicious"

# 系統日誌
sudo journalctl -u bitcoind -f

5. 自動更新

# 設定自動安全更新(Ubuntu)
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

# 或者手動更新腳本
#!/bin/bash
echo "Starting Bitcoin Core update..."
sudo systemctl stop bitcoind
cd /tmp
wget https://bitcoin.org/bin/bitcoin-core-27.0/bitcoin-27.0-x86_64-linux-gnu.tar.gz
tar -xzf bitcoin-27.0-x86_64-linux-gnu.tar.gz
sudo cp -r bitcoin-27.0/bin/* /usr/local/bin/
sudo systemctl start bitcoind

網路優化

1. 頻寬限制

# bitcoin.conf
# 限制上傳頻寬(KB/s)
maxuploadtarget=5000

# 限制連線數
maxconnections=50
maxconnectionsfromonereIP=5

2. Tor 洋蔥網路

# 安裝 Tor
sudo apt install tor

# 配置 Tor
sudo nano /etc/tor/torrc

# 添加以下內容
ControlPort 9051
CookieAuthentication 1
CookieAuthFileGroupReadable 1
# bitcoin.conf
# 通過 Tor 連接
proxy=127.0.0.1:9050
listen=1
bind=127.0.0.1

# 添加洋蔥節點
onion=127.0.0.1:8334

3. IPv6 配置

# bitcoin.conf
# 允許 IPv6 連接
bind=::
listenonion=::

監控與維護

1. 健康檢查腳本

#!/bin/bash
# check-node.sh

# 檢查比特幣服務狀態
if ! pgrep -x "bitcoind" > /dev/null; then
    echo "比特幣節點未運行!"
    # 發送通知
    curl -X POST "https://通知服務.com/notify" -d "message=比特幣節點停止"
    exit 1
fi

# 檢查同步狀態
BLOCKS=$(bitcoin-cli getblockcount)
echo "當前區塊高度: $BLOCKS"

# 檢查連接數
PEERS=$(bitcoin-cli getconnectioncount)
echo "連接節點數: $PEERS"

if [ $PEERS -lt 5 ]; then
    echo "警告:連接節點數過少!"
fi

2. 自動化備份

# 自動備份錢包
#!/bin/bash
BACKUP_DIR="/backup/bitcoin"
DATE=$(date +%Y%m%d)

mkdir -p $BACKUP_DIR
cp ~/.bitcoin/wallet.dat $BACKUP_DIR/wallet-$DATE.dat
gzip $BACKUP_DIR/wallet-$DATE.dat

# 清理舊備份(保留 7 天)
find $BACKUP_DIR -name "wallet-*.dat.gz" -mtime +7 -delete

3. 效能監控

# 監視資源使用
watch -n 5 'echo "=== CPU ===" && top -bn1 | head -5 && echo "=== Memory ===" && free -h && echo "=== Disk ===" && df -h | grep bitcoin'

常見問題

Q: 需要開啟哪些端口?

A: 至少 8333(比特幣 P2P)。如需 RPC 管理,開啟 8334。閃電節點需要 9735。

Q: 可以隱藏比特幣節點嗎?

A: 可以通過 Tor 匿名化節點身份,但不建議完全隱藏,這有助於網路健康。

Q: 如何防止 DDoS 攻擊?

A: 設置防火牆限制連線數,使用 CDN/DDoS 防護服務,考慮使用 Tor。

Q: RPC 需要密碼嗎?

A: 絕對需要!使用強密碼,永遠不要通過不安全的網路暴露 RPC 端口。

結論

比特幣節點的網路配置和安全加固是持續的工作:

  1. 使用防火牆限制訪問
  2. SSH 使用密鑰認證
  3. RPC 接口要加密保護
  4. 定期更新軟體
  5. 建立監控和備份機制

相關文章

延伸閱讀與來源

這篇文章對您有幫助嗎?

評論

發表評論

注意:由於這是靜態網站,您的評論將儲存在本地瀏覽器中,不會公開顯示。

目前尚無評論,成為第一個發表評論的人吧!