您好,登錄后才能下訂單哦!
NEO共識節點推薦搭建步驟是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
機器的遠程訪問僅限使用公鑰與Yubico4/NEO實體公鑰進行SSH認證。
出于安全考慮,節點不應在共享的機器上運行,而應在Deltalis, Equinix及A1 Arsenal等安全性較高的數據中心通過托管的方式運行。下列laaS供應商硬件配置可作為2018年的理想配置參考。
因為共識節點有計算功能,因此應定期檢查網絡硬件要求以保證最優性能。
如果無法進行托管,推薦laaS供應商與最低配置如下:
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
使用密碼管理工具存放本次搭建過程中所需的每個密碼(推薦使用Lastpass和Dashlane),所有服務均應啟用雙因素認證和實體密鑰(如有)。
所有密碼均應設置高強度密碼(使用此 lastpass方案)。
僅限使用公鑰訪問SSH認證可起到密鑰保護的作用,所以我們要求使用實體OpenPGP智能卡進行SSH認證。我們推薦使用Ubikey 4。有關Yubikey PGP的更多性能請參考官方文檔.
完整Windows指南
完整Linux/MacOS指南
更改默認管理員PIN碼 12345678
與PIN碼 123456
為可記憶的安全密碼。
將您的私鑰添加到智能卡激活的認證代理服務后,gpg-agent就會與gpg2綁定——這是我們推薦的步驟。
打開供應商防火墻(不在OS設置中),設置為屏蔽全部,端口22、20333與10333除外。若有其他服務共享同一賬戶,請務必確保將節點放置在反關聯性群組中。
需給每個節點在兩個轄區分別配置2個管理員。每個管理員都應有一個可以登錄系統的專屬用戶和一個(SSH無權訪問的)第三方共識用戶,并且僅可通過該第三方共識用戶訪問共識節點的私鑰(注意本指南使用的Ubuntu版本是16.04 LTS)。
首次登錄時,設置一個強效根密碼,但僅在遺失sudo密碼(或進行撤銷操作)時才需使用根密碼;
su (sudo su on Ubuntu) passwd
Ubuntu更新包:
apt-get update apt-get upgrade
CentOS:
yum update
添加管理員用戶(兩個管理員重復操作):
useradd -m node mkdir /home/node/.ssh chmod 700 /home/node/.ssh
本指南是基于bash編制的,所以在shell下拉列表中將bash設為偏好值:
usermod -s /bin/bash node
從管理員的 ssh-add -L
中將Yubikey公鑰復制到authorized_keys:
vim /home/node/.ssh/authorized_keys
許可設置:
chmod 400 /home/node/.ssh/authorized_keys chown node:node /home/node -R
設置管理員密碼(這就是sudo密碼):
passwd node
接下來我們就可以設置管理員的sudo了,添加 %sudo
群組,注釋非 root
的任何其他群組時使用#:
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,現在設置為僅可通過公鑰與管理員登錄SSH:
vim /etc/ssh/sshd_config
應添加下列行或在原有的基礎上修改成如下形式,在AllowUsers中添加所有管理員并用空格鍵隔開:
X11Forwarding no PermitRootLogin no PasswordAuthentication no AllowUsers node LoginGraceTime 30 AllowTcpForwarding no TCPKeepAlive no AllowAgentForwarding no DebianBanner no Banner /etc/ssh/sshd-banner
設置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
添加用戶運行共識節點:
useradd consensus mkdir /home/consensus chown consensus:consensus /home/consensus -R
為共識節點創建一個非常強效的密碼,應可安全地被兩個管理員共享:
passwd consensus
su的最后一步就是以管理員身份登錄后重啟SSH。
sudo systemctl restart sshd.service
首先在Debian(Ubuntu)中安裝防火墻并鎖定節點:
sudo apt-get install ufw
CentOS:
sudo yum install epel-release sudo yum install ufw
在vim /etc/default/ufw
中將IPV6設為yes,并設置為僅允許使用端口:
sudo ufw default deny incoming sudo ufw allow ssh sudo ufw allow 10333 sudo ufw allow 20333 sudo ufw disable sudo ufw enable
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";
禁止不安全的自動更新:
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
更改設置以匹配:
update_cmd = security apply_updates = yes emit_via = email email_to = YOUR_EMAIL_TO_RECEIVE_UPDATE_NOTIFICATIONS
有更新時,使用email_to功能插入你想發送提醒的郵件地址。
接下來我們就來安裝fail2ban,這個工具可禁止防火墻上的可疑IP。該工具的默認值就可使用,因此簡單的安裝就夠了。Ubuntu:
sudo apt-get install fail2ban
CentOS:
sudo yum install fail2ban
將2FA與SSH的實體OpenPGP密鑰相結合是強效認證設置。在Ubuntu中使用下列代碼安裝:
sudo apt-get install libpam-google-authenticator
CentOS (啟用epel——同上):
sudo yum install google-authenticator
安裝完畢后,以管理員身份運行指令時遵循每步指令,(回答y/y/y/n/y),先以管理員身份(兩個)進行這步操作,完成后再更新PAM獲得2FA:
google-authenticator
接下來編輯SSH配置來獲得2FA設置許可:
sudo vim /etc/pam.d/sshd
在文件結尾添加以下行:
auth required pam_google_authenticator.so
在Ubuntu中放入密碼提示的注釋行:
# Standard Un*x authentication. #@include common-auth
CentOS:
#auth substack password-auth
編輯sshd_config文件要求進行2FA認證:
sudo vim /etc/ssh/sshd_config
編輯文件允許認證,并添加認證方法行:
ChallengeResponseAuthentication yes AuthenticationMethods publickey,password publickey,keyboard-interactive
重啟SSHD服務:
sudo systemctl restart sshd.service
在保持當前SSH窗口運行的同時打開另一個窗口,并登錄以確認設置能正確運行。
保持對共識節點的監視對于發現問題及改善NEO項目而言是至關重要的。我們僅會通過SSH通道安裝并訪問網絡數據庫(保留防火墻攔截設置)。
安裝預購建靜態版本(以減少攻擊面并杜絕不必要的依賴性):
bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh)
訪問方法是創建SSH通道并打開瀏覽器訪問localhost:19999:
ssh -f node@SERVERIP -L 19999:SERVERIP:19999 -N
sudo apt-get install mailutils
CentOS:
sudo yum install mailx
編輯默認bash檔案:
sudo vim /etc/profile
在文件結尾添加以下行,編輯郵箱使其可接收登錄通知:
SIP="$(echo $SSH_CONNECTION | cut -d "> Logwatch在Ubuntu上配置logwatch以發送節點的日常活動總結(通常無活動):sudo apt-get install logwatch CentOS:sudo yum install logwatch 現在添加cron job將總結發送到你的郵箱:sudo vim /etc/cron.daily/00logwatch 將默認執行命令變更為:/usr/sbin/logwatch --output mail --mailto YOUR@EMAIL.HERE --detail high 黑名單USB與防火墻存儲我們會把不需要的模塊放入黑名單以減少攻擊面,WiFi和藍牙通常已經與服務器內核切斷了(需驗證!),因此僅需關閉USB存儲。sudo vi /etc/modprobe.d/blacklist.conf 添加以下行:blacklist usb-storage blacklist firewire-core 安裝并運行共識節點在Unbuntu上安裝前提條件:sudo apt-get install unzip sqlite3 libsqlite3-dev libleveldb-dev libunwind-dev CentOS:sudo yum install unzip leveldb-devel libunwind-devel 以共識節點用戶的身份登錄:su consensus cd ~ 在發行版中下載、驗證校驗和、解壓最新版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 復制節點運行的設置(測試網或主網):mv protocol.json protocol.json.back cp protocol.testnet.json protocol.json 如果這是首次操作,你需要給共識節點創建錢包:./neo-cli neo> create wallet /home/consensus/cn_wallet.json password: SOMESTRONGPASSWORD password: SOMESTRONGPASSWORD 復制start_consensus腳本:cd ~ wget https://raw.githubusercontent.com/CityOfZion/standards/master/assets/nodes/start_consensus.sh chmod u+x start_consensus.sh 編輯目錄使其與你的錢包文件地址及密碼匹配。現在就可以在supervisord的控制下在Ubuntu上運行了:sudo apt-get install supervisor CentOS:sudo yum install supervisor 配置supervisord以執行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 添加初始腳本以便在系統重啟時自動運行。這就是全部步驟,現在登出服務器并僅在必須部署更新或檢測到惡意行為時再重新登錄。 其他安全推薦GRUB密碼磁盤加密開啟TCP SYN Cookie功能(net.ipv4.tcp_syncookies = 1 -> /etc/sysctl.conf)原文翻譯自CoZ:https://github.com/CityOfZion/standards/blob/master/nodes.md
關于NEO共識節點推薦搭建步驟是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。