溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

NEO共識(shí)節(jié)點(diǎn)推薦搭建步驟是什么

發(fā)布時(shí)間:2021-12-10 18:48:01 來源:億速云 閱讀:126 作者:柒染 欄目:互聯(lián)網(wǎng)科技

NEO共識(shí)節(jié)點(diǎn)推薦搭建步驟是什么,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

共識(shí)節(jié)點(diǎn)推薦搭建步驟

遠(yuǎn)程訪問

機(jī)器的遠(yuǎn)程訪問僅限使用公鑰與Yubico4/NEO實(shí)體公鑰進(jìn)行SSH認(rèn)證。

硬件

出于安全考慮,節(jié)點(diǎn)不應(yīng)在共享的機(jī)器上運(yùn)行,而應(yīng)在Deltalis, Equinix及A1 Arsenal等安全性較高的數(shù)據(jù)中心通過托管的方式運(yùn)行。下列l(wèi)aaS供應(yīng)商硬件配置可作為2018年的理想配置參考。

因?yàn)楣沧R(shí)節(jié)點(diǎn)有計(jì)算功能,因此應(yīng)定期檢查網(wǎng)絡(luò)硬件要求以保證最優(yōu)性能。

如果無法進(jìn)行托管,推薦laaS供應(yīng)商與最低配置如下:

  • OVH EG-32

    • CPU: Intel Xeon E3-1270v6 – 4c/8t – 3.8GHz

    • RAM: 32GB DDR4 ECC 2133 MHz

    • SSD: softraid-1 2x450GB NVMe

    • NET: 1 Gbps

  • Packet Workhorse

    • CPU: Intel? Xeon E3-1240v5 – 4c/8t – 3.5GHz

    • RAM: 32 GB DDR3 ECC 1333 MHz

    • SSD: softraid-1 2x120GB Enterprise SSD

    • NET: 2 x 1 Gbps Bonded

  • Liquidweb

    • CPU: Intel Xeon E3-1275v6 – 4c/8t – 3.8GHz

    • RAM: 32 GB DDR4 ECC

    • SSD: softraid-1 2x240GB Enterprise SSD

    • NET: 1 Gbps

密碼

使用密碼管理工具存放本次搭建過程中所需的每個(gè)密碼(推薦使用Lastpass和Dashlane),所有服務(wù)均應(yīng)啟用雙因素認(rèn)證和實(shí)體密鑰(如有)。

所有密碼均應(yīng)設(shè)置高強(qiáng)度密碼(使用此 lastpass方案)。

SSH認(rèn)證密鑰

僅限使用公鑰訪問SSH認(rèn)證可起到密鑰保護(hù)的作用,所以我們要求使用實(shí)體OpenPGP智能卡進(jìn)行SSH認(rèn)證。我們推薦使用Ubikey 4。有關(guān)Yubikey PGP的更多性能請(qǐng)參考官方文檔.

  • 完整Windows指南

  • 完整Linux/MacOS指南

更改默認(rèn)管理員PIN碼 12345678 與PIN碼 123456 為可記憶的安全密碼。

將您的私鑰添加到智能卡激活的認(rèn)證代理服務(wù)后,gpg-agent就會(huì)與gpg2綁定——這是我們推薦的步驟。

服務(wù)供應(yīng)商具體配置

打開供應(yīng)商防火墻(不在OS設(shè)置中),設(shè)置為屏蔽全部,端口22、20333與10333除外。若有其他服務(wù)共享同一賬戶,請(qǐng)務(wù)必確保將節(jié)點(diǎn)放置在反關(guān)聯(lián)性群組中。

Linux服務(wù)器配置

需給每個(gè)節(jié)點(diǎn)在兩個(gè)轄區(qū)分別配置2個(gè)管理員。每個(gè)管理員都應(yīng)有一個(gè)可以登錄系統(tǒng)的專屬用戶和一個(gè)(SSH無權(quán)訪問的)第三方共識(shí)用戶,并且僅可通過該第三方共識(shí)用戶訪問共識(shí)節(jié)點(diǎn)的私鑰(注意本指南使用的Ubuntu版本是16.04 LTS)。

首次登錄時(shí),設(shè)置一個(gè)強(qiáng)效根密碼,但僅在遺失sudo密碼(或進(jìn)行撤銷操作)時(shí)才需使用根密碼;

su (sudo su on Ubuntu)
passwd

仍在使用su時(shí)

Ubuntu更新包:

apt-get update
apt-get upgrade

CentOS:

yum update

添加管理員用戶(兩個(gè)管理員重復(fù)操作):

useradd -m node
mkdir /home/node/.ssh
chmod 700 /home/node/.ssh

本指南是基于bash編制的,所以在shell下拉列表中將bash設(shè)為偏好值:

usermod -s /bin/bash node

從管理員的 ssh-add -L中將Yubikey公鑰復(fù)制到authorized_keys:

vim /home/node/.ssh/authorized_keys

許可設(shè)置:

chmod 400 /home/node/.ssh/authorized_keys
chown node:node /home/node -R

設(shè)置管理員密碼(這就是sudo密碼):

passwd node

接下來我們就可以設(shè)置管理員的sudo了,添加 %sudo 群組,注釋非 root的任何其他群組時(shí)使用#:

visudo

文件格式如下:

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
#%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

將管理員添加到sudo群組:

usermod -aG sudo node

需登錄并登出管理員賬戶后才能完成更新:

su -l node
exit

再回到su,現(xiàn)在設(shè)置為僅可通過公鑰與管理員登錄SSH:

vim /etc/ssh/sshd_config

應(yīng)添加下列行或在原有的基礎(chǔ)上修改成如下形式,在AllowUsers中添加所有管理員并用空格鍵隔開:

X11Forwarding no
PermitRootLogin no
PasswordAuthentication no
AllowUsers node
LoginGraceTime 30
AllowTcpForwarding no
TCPKeepAlive no
AllowAgentForwarding no
DebianBanner no
Banner /etc/ssh/sshd-banner

設(shè)置SSH的法律聲明:

echo "WARNING:  Unauthorized access to this system is forbidden and will be
prosecuted by law. By accessing this system, you agree that your actions
may be monitored if unauthorized usage is suspected." >> /etc/ssh/sshd-banner

添加用戶運(yùn)行共識(shí)節(jié)點(diǎn):

useradd consensus
mkdir /home/consensus
chown consensus:consensus /home/consensus -R

為共識(shí)節(jié)點(diǎn)創(chuàng)建一個(gè)非常強(qiáng)效的密碼,應(yīng)可安全地被兩個(gè)管理員共享:

passwd consensus

su的最后一步就是以管理員身份登錄后重啟SSH。

sudo systemctl restart sshd.service

以管理員身份登錄時(shí)

防火墻

首先在Debian(Ubuntu)中安裝防火墻并鎖定節(jié)點(diǎn):

sudo apt-get install ufw

CentOS:

sudo yum install epel-release
sudo yum install ufw

vim /etc/default/ufw中將IPV6設(shè)為yes,并設(shè)置為僅允許使用端口:

sudo ufw default deny incoming
sudo ufw allow ssh
sudo ufw allow 10333
sudo ufw allow 20333
sudo ufw disable
sudo ufw enable
自動(dòng)安全更新

Ubuntu:

sudo apt-get install unattended-upgrades
sudo vim /etc/apt/apt.conf.d/10periodic

更新以匹配:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

禁止不安全的自動(dòng)更新:

sudo vim /etc/apt/apt.conf.d/50unattended-upgrades

更新,未注釋的行有且僅有以下幾行:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}";
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESM:${distro_codename}";
};

CentOS:

安裝yum-cron并允許安全包更新:

sudo yum -y install yum-cron
sudo systemctl start yum-cron
sudo systemctl enable yum-cron
sudo nano /etc/yum/yum-cron.conf

更改設(shè)置以匹配:

update_cmd = security
apply_updates = yes
emit_via = email
email_to = YOUR_EMAIL_TO_RECEIVE_UPDATE_NOTIFICATIONS

有更新時(shí),使用email_to功能插入你想發(fā)送提醒的郵件地址。

fail2ban

接下來我們就來安裝fail2ban,這個(gè)工具可禁止防火墻上的可疑IP。該工具的默認(rèn)值就可使用,因此簡單的安裝就夠了。Ubuntu:

sudo apt-get install fail2ban

CentOS:

sudo yum install fail2ban
雙因素認(rèn)證

將2FA與SSH的實(shí)體OpenPGP密鑰相結(jié)合是強(qiáng)效認(rèn)證設(shè)置。在Ubuntu中使用下列代碼安裝:

sudo apt-get install libpam-google-authenticator

CentOS (啟用epel——同上):

sudo yum install google-authenticator

安裝完畢后,以管理員身份運(yùn)行指令時(shí)遵循每步指令,(回答y/y/y/n/y),先以管理員身份(兩個(gè))進(jìn)行這步操作,完成后再更新PAM獲得2FA:

google-authenticator

接下來編輯SSH配置來獲得2FA設(shè)置許可:

sudo vim /etc/pam.d/sshd

在文件結(jié)尾添加以下行:

auth required pam_google_authenticator.so

在Ubuntu中放入密碼提示的注釋行:

# Standard Un*x authentication.
#@include common-auth

CentOS:

#auth       substack     password-auth

編輯sshd_config文件要求進(jìn)行2FA認(rèn)證:

sudo vim /etc/ssh/sshd_config

編輯文件允許認(rèn)證,并添加認(rèn)證方法行:

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,password publickey,keyboard-interactive

重啟SSHD服務(wù):

sudo systemctl restart sshd.service

在保持當(dāng)前SSH窗口運(yùn)行的同時(shí)打開另一個(gè)窗口,并登錄以確認(rèn)設(shè)置能正確運(yùn)行。

監(jiān)視

保持對(duì)共識(shí)節(jié)點(diǎn)的監(jiān)視對(duì)于發(fā)現(xiàn)問題及改善NEO項(xiàng)目而言是至關(guān)重要的。我們僅會(huì)通過SSH通道安裝并訪問網(wǎng)絡(luò)數(shù)據(jù)庫(保留防火墻攔截設(shè)置)。

安裝預(yù)購建靜態(tài)版本(以減少攻擊面并杜絕不必要的依賴性):

bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh)

訪問方法是創(chuàng)建SSH通道并打開瀏覽器訪問localhost:19999:

ssh -f node@SERVERIP -L 19999:SERVERIP:19999 -N

NEO共識(shí)節(jié)點(diǎn)推薦搭建步驟是什么

登錄成功郵件通知
sudo apt-get install mailutils

CentOS:

sudo yum install mailx

編輯默認(rèn)bash檔案:

sudo vim /etc/profile

在文件結(jié)尾添加以下行,編輯郵箱使其可接收登錄通知:

SIP="$(echo $SSH_CONNECTION | cut -d "> 
 Logwatch在Ubuntu上配置logwatch以發(fā)送節(jié)點(diǎn)的日?;顒?dòng)總結(jié)(通常無活動(dòng)):sudo apt-get install logwatch CentOS:sudo yum install logwatch 現(xiàn)在添加cron job將總結(jié)發(fā)送到你的郵箱:sudo vim /etc/cron.daily/00logwatch 將默認(rèn)執(zhí)行命令變更為:/usr/sbin/logwatch --output mail --mailto YOUR@EMAIL.HERE --detail high  黑名單USB與防火墻存儲(chǔ)我們會(huì)把不需要的模塊放入黑名單以減少攻擊面,WiFi和藍(lán)牙通常已經(jīng)與服務(wù)器內(nèi)核切斷了(需驗(yàn)證?。虼藘H需關(guān)閉USB存儲(chǔ)。sudo vi /etc/modprobe.d/blacklist.conf 添加以下行:blacklist usb-storage
blacklist firewire-core  安裝并運(yùn)行共識(shí)節(jié)點(diǎn)在Unbuntu上安裝前提條件:sudo apt-get install unzip sqlite3 libsqlite3-dev libleveldb-dev libunwind-dev CentOS:sudo yum install unzip leveldb-devel libunwind-devel 以共識(shí)節(jié)點(diǎn)用戶的身份登錄:su consensus
cd ~ 在發(fā)行版中下載、驗(yàn)證校驗(yàn)和、解壓最新版neo-cli客戶端:wget https://github.com/neo-project/neo-cli/releases/download/v2.5.2/neo-cli-YOURDISTRIBUTION.zip
sha256sum neo-cli-YOURDISTRIBUTION.zip
unzip neo-cli-YOURDISTRIBUTION.zip
cd neo-cli
chmod u+x neo-cli 復(fù)制節(jié)點(diǎn)運(yùn)行的設(shè)置(測(cè)試網(wǎng)或主網(wǎng)):mv protocol.json protocol.json.back
cp protocol.testnet.json protocol.json 如果這是首次操作,你需要給共識(shí)節(jié)點(diǎn)創(chuàng)建錢包:./neo-cli
neo> create wallet /home/consensus/cn_wallet.json
password: SOMESTRONGPASSWORD
password: SOMESTRONGPASSWORD 復(fù)制start_consensus腳本:cd ~
wget https://raw.githubusercontent.com/CityOfZion/standards/master/assets/nodes/start_consensus.sh
chmod u+x start_consensus.sh 編輯目錄使其與你的錢包文件地址及密碼匹配?,F(xiàn)在就可以在supervisord的控制下在Ubuntu上運(yùn)行了:sudo apt-get install supervisor CentOS:sudo yum install supervisor 配置supervisord以執(zhí)行start_consensus(在需要的情況下編輯文件):wget https://raw.githubusercontent.com/CityOfZion/standards/master/assets/nodes/supervisord.conf
chmod 700 supervisord.conf
cp supervisord.conf /etc/supervisord.conf
sudo supervisord 添加初始腳本以便在系統(tǒng)重啟時(shí)自動(dòng)運(yùn)行。這就是全部步驟,現(xiàn)在登出服務(wù)器并僅在必須部署更新或檢測(cè)到惡意行為時(shí)再重新登錄。 其他安全推薦GRUB密碼磁盤加密開啟TCP SYN Cookie功能(net.ipv4.tcp_syncookies = 1 -> /etc/sysctl.conf)原文翻譯自CoZ:https://github.com/CityOfZion/standards/blob/master/nodes.md

關(guān)于NEO共識(shí)節(jié)點(diǎn)推薦搭建步驟是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

neo
AI