Lightsailでは独自の初期設定が為されているので、1-Ubuntu初期設定 の項目ではマニュアルと手順が一部異なります。
下記の手順をご参考ください。(2-ノードインストール 以降の作業はマニュアルと同じです。)
lightsailアカウント(WEB)のセキュリティは厳重にしておきましょう。(2段階認証など)
1.R-Login(Windows) https://kmiya-culti.github.io/RLogin/
2.Terminal(Mac)
https://www.webdesignleaves.com/pr/plugins/mac_terminal_basics_01.html
”プラットフォーム”は「Linux/Unix」
”設計図の選択”は「OSのみ」からの「Ubuntu 20.04 LTS」か「Ubuntu 22.04 LTS」
”インスタンスプランの選択”は、カルダノサーバーの最小構成メモリを上回るプランを選択してください。
SSHキーペアをダウンロードします。(項目5 にてSSHキーを新しく作り直すのでデフォルトキーで大丈夫です。)
ユーザー名を初期設定の”ubuntu”から変更したい方向け(中上級者用)
「オプション」の「起動スクリプトの追加」を選択し、OLD_USER=ubuntu
NEW_USER=<新ユーザー名>
usermod -l $NEW_USER -md /home/$NEW_USER -c $NEW_USER $OLD_USER
groupmod -n $NEW_USER $OLD_USER
echo $NEW_USER:$NEW_USER | chpasswd
passwd -e $NEW_USER
上記を、<新ユーザー名>の箇所を置き換えてから入力してください。
その後ターミナルソフトにて、
ユーザー名→新ユーザー名
パスワード→新ユーザー名
でログインします。
Current password:
の表示が出るので、新ユーザー名を入力します。
その後、新しいパスワードとなる文字列を入力し設定してください。
一度SSH接続が切れるので、
ユーザー名→新ユーザー名
パスワード→新しいパスワード
でログインしなおせば完了です。
BP用サーバーとリレー用サーバーを用意します。
最小構成:BP用サーバー1台、リレー用サーバー2台
WEB管理画面の上側の”ホーム”→”ネットワーキング”→”静的IPの作成”
静的IPを使用してログインします。
ログインユーザー名は「ubuntu」(ユーザー名を変更した方は変更後の名前を入力)
SSH認証鍵は、サーバー構築時にダウンロードしたものを指定してください。
Ubuntu22.04の場合の特別設定
ご利用のOSがUbuntu22.04の場合は、以下のコマンドを実行してください。ブラケットペーストモードOFF
echo "set enable-bracketed-paste off" >> ~/.inputrc
デーモン再起動自動化
echo "\$nrconf{restart} = 'a';" | sudo tee /etc/needrestart/conf.d/50local.conf
echo "\$nrconf{blacklist_rc} = [qr(^cardano-node\\.service$) => 0,];" | sudo tee -a /etc/needrestart/conf.d/50local.conf
ペア鍵の作成
ssh-keygen -t ed25519 -N '' -C ssh_connect -f ~/.ssh/ssh_ed25519
cd ~/.ssh
ls
戻りが、
authorized_keys ssh_ed25519 ssh_ed25519.pub
であることを確認します。
cd ~/.ssh/
cat ssh_ed25519.pub > authorized_keys
chmod 600 authorized_keys
chmod 700 ~/.ssh
SSH鍵ファイルをダウンロードします。
1.R-loginの場合はファイル転送ウィンドウを開く
2.左側ウィンドウ(ローカル側)は任意の階層にフォルダを作成する。
3.右側ウィンドウ(サーバ側)は「.ssh」フォルダを選択する
4.右側ウィンドウから、ssh_ed25519とssh_ed25519.pubの上で右クリックして「ファイルのダウンロード」を選択する
5.一旦サーバからログアウトする(ターミナルソフトを終了する)
6.R-Loginのサーバ接続編集画面を開き、「SSH認証鍵」をクリックし4でダウンロードしたssh_ed25519ファイルを選ぶ
7.サーバへ接続する
※注意※
DLしたssh_ed25519は、紛失するとサーバーへのログインが不可能になる重要なキーです。
今後構築を進めていくとプール管理において重要なキーを作成するので、それと共に複数のUSBに保存しバックアップを取ってください。
/etc/ssh/sshd_configファイルを開きます。
sudo nano /etc/ssh/sshd_config
#Port 22
の行の、最初の#を削除してから、
22の数字を49513~65535までの間のランダムな数字に変更します。
その後Ctrlキー+o 同時押しからのエンターで変更を保存し、Ctrl+xでファイルを閉じます。
変更した数字をメモしておきましょう。
SSH構文にエラーがないかチェックします。
sudo sshd -t
SSH構文エラーがない場合、SSHプロセスを再起動します。
sudo service sshd reload
一旦、ログオフします。
exit
AWS系のVPSは独自のファイアウォールが設定されている為、
ポートの開放はターミナルソフトからの操作で行うのではなく、
各サーバーのインスタンス管理画面(WEB)の”ネットワーキング”内の”IPv4 ファイアウォール”から設定する必要があります。
サーバーの種類に合わせ下記の通りにポートを開放してください。
初期で開放されている、22番と80番は削除してください。
IPv6ネットワーキング機能は無効にしてください。
BP用サーバー
アプリケーション | プロトコル | ポートまたは範囲 |
---|---|---|
カスタム | TCP | 先ほど設定した変更後のSSH用ポート番号(SSH接続用) |
カスタム | TCP | 49513~65535までの任意番号(カルダノノード用) ※リレーIP制限 |
カスタム | TCP | 9100(Prometheus用) ※リレーIP制限 |
カスタム | TCP | 12798(Prometheus用) ※リレーIP制限 |
カスタム | UDP | 123(Chrony用) |
Ping (ICMP) | ICMP |
※リレーIP制限
”IP アドレスに制限する”にチェックを入れ、出てきた入力欄にリレーノードの静的IPを入力してください。
※注意※
BPにおけるカルダノノード用の任意番号は、SSH接続用のポート番号とは別にしてください。
ここでBPにて設定したカルダノノード用の任意番号は、2-4. ノード起動スクリプトの作成 にて使用しますのでメモしておいてください。
リレー用サーバー
アプリケーション | プロトコル | ポートまたは範囲 |
---|---|---|
カスタム | TCP | 先ほど設定した変更後のSSH用ポート番号(SSH接続用) |
カスタム | TCP | 6000(カルダノノード用) |
カスタム | TCP | 3000(Grafana用) |
カスタム | UDP | 123(Chrony用) |
Ping (ICMP) | ICMP |
リレーサーバーの2台目以降を作成する場合
リレー2台目以降サーバーアプリケーション | プロトコル | ポートまたは範囲 |
---|---|---|
カスタム | TCP | 先ほど設定した変更後のSSH用ポート番号(SSH接続用) |
カスタム | TCP | 6000(カルダノノード用) |
カスタム | TCP | 9100(Prometheus用) ※リレー1 IP制限 |
カスタム | TCP | 12798(Prometheus用) ※リレー1 IP制限 |
カスタム | UDP | 123(Chrony用) |
Ping (ICMP) | ICMP |
また、BP用サーバーのファイアウォール設定を
アプリケーション | プロトコル | ポートまたは範囲 |
---|---|---|
カスタム | TCP | 先ほど設定した変更後のSSH用ポート番号(SSH接続用) |
カスタム | TCP | 49513~65535までの任意番号(カルダノノード用) ※リレー1 IP制限 |
カスタム | TCP | ↑と同じ番号(カルダノノード用) ※リレー2 IP制限 |
カスタム | TCP | 9100(Prometheus用) ※リレー1 IP制限 |
カスタム | TCP | 12798(Prometheus用) ※リレー1 IP制限 |
カスタム | UDP | 123(Chrony用) |
Ping (ICMP) | ICMP |
のように、所持している全てのリレーのIP制限でカルダノノード用ポート番号を開放するようにします。
ここでは、今後の構築作業において必要なポート開放をすべて纏めて行っています。
なので以後の構築手順におけるsudo ufw allow xxxxx sudo ufw reload
のようなufwのポート開放のコマンドは実行せずに飛ばしてもらって大丈夫です。
(3-リレー/BPの接続 と 9.監視ツールセットアップ にて出てきます。)
ターミナルソフトの接続設定画面でSSHポート番号を変更してから接続してください。
※不正アクセスを予防するには、システムに最新のパッチを適用することが重要です。
sudo apt update -y && sudo apt upgrade -y
ピンク色の画面が出てきたら、そのままエンターを入力してください。
sudo apt autoremove
sudo apt autoclean
質問にはyを入力してEnter
自動更新を有効にすると、手動でインストールする手間を省けます。
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
YESを選択しEnter
/etc/fstabを開きます。
sudo nano /etc/fstab
次の行をファイルの最後に追記して保存します。
tmpfs /run/shm tmpfs ro,noexec,nosuid 0 0
cd $HOME
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
cat /proc/sys/vm/vfs_cache_pressure
cat /proc/sys/vm/swappiness
システムを再起動します。
sudo reboot
Fail2banは、ログファイルを監視し、ログイン試行に失敗した特定のパターンを監視する侵入防止システムです。 特定のIPアドレスから(指定された時間内に)一定数のログイン失敗が検知された場合、 Fail2banはそのIPアドレスからのアクセスをブロックします。
sudo apt install fail2ban -y
SSHログインを監視する設定ファイルを開きます。
sudo nano /etc/fail2ban/jail.local
ファイルの最後に次の行を追加し保存します。
コマンド中の <SSHポートを入力してください> の部分を設定したSSHポート番号に置き換えてから入力してください。<>は不要です。
[sshd]
enabled = true
port = <SSHポートを入力してください>
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
fail2banを再起動して設定を有効にします。
sudo systemctl restart fail2ban
sudo apt-get install chrony
sudo cat > $HOME/chrony.conf << EOF
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
pool time.google.com iburst minpoll 2 maxpoll 2 maxsources 3 maxdelay 0.3
pool time.facebook.com iburst minpoll 2 maxpoll 2 maxsources 3 maxdelay 0.3
pool time.euro.apple.com iburst minpoll 2 maxpoll 2 maxsources 3 maxdelay 0.3
pool time.apple.com iburst minpoll 2 maxpoll 2 maxsources 3 maxdelay 0.3
pool ntp.ubuntu.com iburst minpoll 2 maxpoll 2 maxsources 3 maxdelay 0.3
# This directive specify the location of the file containing ID/key pairs for
# NTP authentication.
keyfile /etc/chrony/chrony.keys
# This directive specify the file into which chronyd will store the rate
# information.
driftfile /var/lib/chrony/chrony.drift
# Uncomment the following line to turn logging on.
#log tracking measurements statistics
# Log files location.
logdir /var/log/chrony
# Stop bad estimates upsetting machine clock.
maxupdateskew 5.0
# This directive enables kernel synchronisation (every 11 minutes) of the
# real-time clock. Note that it can’t be used along with the 'rtcfile' directive.
rtcsync
# Step the system clock instead of slewing it if the adjustment is larger than
# one second, but only in the first three clock updates.
makestep 0.1 -1
# Get TAI-UTC offset and leap seconds from the system tz database
leapsectz right/UTC
# Serve time even if not synchronized to a time source.
local stratum 10
EOF
sudo mv $HOME/chrony.conf /etc/chrony/chrony.conf
sudo systemctl restart chronyd.service
こちらの導入は必須ではありません。
導入する場合、事前にお手元のスマートフォンに「Google認証システムアプリ」のインストールが必要です
設定に失敗するとログインできなくなる場合があるので、設定前に二つ目のターミナルウィンドウでサーバーにログインしておいてください。
万が一ログインできなくなった場合、復旧できます。
sudo apt update
sudo apt upgrade
sudo apt install libpam-google-authenticator -y
SSHがGoogle Authenticator PAM モジュールを使用するために、/etc/pam.d/sshdファイルを編集します。
sudo nano /etc/pam.d/sshd
4行目の @include common-authの先頭へ#を付与してコメントアウトします。
#@include common-auth
最後の行に1行追加します。
auth required pam_google_authenticator.so
以下を使用してsshdデーモンを再起動します。
sudo systemctl restart sshd.service
/etc/ssh/sshd_config ファイルを開きます。
sudo nano /etc/ssh/sshd_config
ChallengeResponseAuthenticationの項目を「yes」にします。
ChallengeResponseAuthentication yes
Ubuntu22.04の方は
ChallengeResponseAuthentication
の代わりにKbdInteractiveAuthentication
の項目を「yes」にしてください。
最後の行に1行追加します。
AuthenticationMethods publickey,keyboard-interactive
ファイルを保存して閉じます。
以下を使用してsshdデーモンを再起動します。
sudo systemctl restart sshd.service
google-authenticator コマンドを実行します。
google-authenticator
質問事項が5つ表示されます。
途中で大きなQRコードが表示されますが、その下には緊急時のスクラッチコードが表示されますので、忘れずに書き留めておいて下さい。
表示されるQRコードはスマートフォンのGoogle認証システムアプリで読み取り、2段階認証を機能させます。
(Y/n)の質問には、
y→y→y→n→y
の順番で回答してください。
完了したら、一度接続を閉じます。
exit
サーバーへ再接続し、スマートフォンのGoogle認証システムアプリに表示される6桁の認証番号を入力して接続が成功すれば完了です。
1-Ubuntu初期設定は以上です。お疲れさまでした。
引き続き、2-ノードインストール 以降を進めていってください。
https://docs.spojapanguild.net/setup/2-node-setup/