ZenCash セキュアノード設定 (1) :VPS の準備
本稿では、ZenCash セキュアノードの構築方法に関し解説していきます。
本セキュアノード設定ガイドは 3 つのパートから構成されており、本稿ではパート1として VPS の準備・設定に関してみていきます。
世界で最も非中央集権化が進んだ、セキュアかつプライベートなプラットフォームとしての Zen ネットワークを実現していくにあたって、セキュアノードは非常に重要な役割を担っています。ネットワーク維持に貢献することで(そこまでは多くないものの)報酬として ZenCash を受け取ることができるという点において、ノード構築・運営は、ネットワークおよびノード運営者双方にとっての利益促進に繋がります。
なお、以下説明する内容でわからない部分がありましたら、ZenCash の Discord チャンネル(discordapp.com/invite/CEbKY9w)の #securenodes チャンネル(セキュアノード構築に際するトラブルシューティングのためのチャンネル)、#japanese チャンネル(日本語チャンネル)あるいはヘルプデスク (暗号通貨業界初 !) にてご質問ください。ノード構築に限らず、マシンと作業をするにあたっては、一見すると複雑怪奇なエラーや、想定外の事態に遭遇することはよくあるものです。そんなときは、チームメンバーもしくはコミュニティメンバーが、あなたの疑問を解決してくれるでしょう。
VPS のレンタル
VPS のプロバイダーは数多くあるので、好みのものを使用するとよいでしょう。旧ガイドにおいては Linode を紹介していましたが、これよりもコストパフォーマンスが高いプロバイダーとして、本項では OVH をご紹介します。
まず、ホーム画面 から、上部メニューの “Cloud” という部分にカーソルを合わせ、”All VPSs” という部分をクリックしてください。
次に、画面を下の方にスクロールするとオーストラリアとシンガポールのデータセンターにおけるメニューの一覧表があります。ここでは、”VPS SSD APAC 2″ を選択します(月々 5$ というプランです)。”Order Now” というボタンをクリックしてください。
次に、サーバーの場所や OS を選択していきます。”My VPS” はデフォルトのまま、”My Location” は “Asia-Pacific > Singapore (SG)” または “Asia-Pacific > Sydney (AU)” を(ここでは前者を選択しています)、”My operating system” では、”Distribution” で “Ubuntu”、”Version” で “Ubuntu 16.04 Server 64bits”、”Language” は “English” を選択します(”Distribution” および “Version” はセキュアノード設定ガイド(原文)で紹介されていた例にのっとりました。”Language” は日本語がありませんので、”English” とさせていただきました)。”VPS options” は無視していただいて、画面下部の “Continue” をクリックしてください。
次に、注文内容の確認となります。ここで、契約の更新頻度を選択します。ちょうど執筆現在キャンペーン中ですので、ここでは 1 年プランを選択しました。
画面を下にスクロールしていき、”Continue” をクリックします。
すると、ログインするように促されますから、メールアドレスとパスワードを入力してログインします。アカウントをお持ちでない方は、”Create an account” をクリックし、国名、メールアドレス、氏名などを入力してアカウントを作成してください。
ログインすると、”Responsibilities” という画面に移行します。ここではそのまま “Continue” をクリックしてください。
すると、”Accept terms and conditions” という、利用規約に関する画面が表示されます。
画面下までスクロールし、”I have read and accepted all the conditions.” にチェックをして、”Continue” をクリックします。
すると、”Configuring renewal” という画面になるので、支払い方法を選択し(もしくは登録し)、”Continue” をクリックしてください。
次に “Order payment” という画面に移行しますので、下にスクロールして “Payment methods available” という部分から適切なものを選択してください。今回はクレジットカードを登録したので、”Payment by card” を選択しました。
以上で、VPS のレンタルが完了です!この後、OVH がサーバーの準備を行います。しばらく(数十分 ~ 数時間)経過すると、OVH から以下のようなメールが送られてきます。ここでは、VPS の IP アドレス、VPS の名前、ルートユーザーとしてのパスワードが記載されており、これらは VPS にログインする際に使用しますから、このメールは削除しないようにお願いします。
VPS の準備が整うまで時間がありますから、この間に、ドメイン名の習得を行ってしまいましょう。
ドメイン名の取得
セキュアノード運営にあたって必要となるものの一つとして、ドメイン名があります。ドメイン名登録サービスはたくさんありますが、本項では原文の設定ガイドにならい、namecheap を用いていきます。
アカウント登録がお済みでない方はまずホームページから “SIGN UP” をクリックし、ユーザー名、パスワード、メールアドレスなどを入力した上でアカウント登録を行い、ログインしてください。アカウントをお持ちの方は “SIGN IN” からログインしてください。
ログインが完了したら、希望ドメイン名の取得を行っていきます。まず、ドメイン検索ページにいき、希望ドメイン名が利用可能であるかどうか調べます。例えば、”securenode-domain-1″ と入力して “Search” をクリックしたところ、”securenode-domain-1.club” というドメイン名が非常に安く(1年あたり $0.99)提供されていることがわかりました。例えばこれを選ぶとすると、”Add to Cart” をクリックし、”View Cart” をクリックすることになります。
すると、注文確認画面となりますから、”Confirm Order” をクリックして注文完了です。
VPS の設定
さて、上述の OVH からのメールが届きましたら、VPS の設定を行っていきましょう。
VPS への接続
まず、SSH を用いて VPS へと接続します。
Linux, Mac
Linux、Mac ユーザーの方はターミナル(Mac の場合、cmd + スペースを押してサーチバーに “terminal” と入力し、これをクリックすることで開くことができます)から、以下のコマンドを実行してください。 パスワードを聞かれた際は、先ほどのOVH からのメール内に記載されたパスワードを入力してください。
ssh root@[VPS名]
(なお、”[” および “]” に関しては入力する必要はありません。あくまで適切な値に置き換えて入力するという意味です。なので、例えば VPS 名が “vps123456.vps.ovh.ca” であるという場合、入力すべきコマンドは
ssh root@nullvps123456.vps.ovh.ca
であり、
ssh root@[vps123456.vps.ovh.ca]
ではないので、ご注意ください。一応、念のため!以下同様です)
Windows
Windows ユーザーの方は PuTTY というソフトウェアを用いて接続します(PuTTY のダウンロードはこちらから)。ダウンロードが終了したら PuTTY を起動させ、VPS 名もしくは IP アドレス、ならびにポートを入力します。VPS 名と IP アドレスはともに先ほどの OVH からのメール内に記載されているのでそれを参照してください。ポート名は 22 と記入してください。
それが完了したら、”Open” をクリックしてターミナルを起動させます。起動したら、”Login as:” という状態で入力待ちとなるので、”root” と入力します。するとパスワードを求められるので、パスワード(上述の OVH からのメールに含まれています。これはあとで変更します)を入力してください(入力の際は画面上に何も表示されませんが、実際にはしっかりと認識されていますので、安心して入力してください)。正しく入力を行うと、VPS にログインすることができます。
なお、以下のスクリーンショットは、Mac OS のターミナルを例に用いていきますが、入力するコマンドは同じです。
ルートパスワードの変更
OVH から送信されるメールにはルートユーザーとしてログインする際のパスワードがそのまま記載されており、仮にコンピュータがハッキングされた場合はこのパスワードを用いて VPS にログインされてしまう可能性があります。従って、念のためここでルートパスワードを変更しておきましょう。passwd
コマンドにより、新たなパスワードを入植します。なお、パスワード入力時には画面に何も表示されませんが、実際には認識されているのでご安心ください。確認のための2 度目のパスワード入力を終えれば、パスワード変更が可能です。なお、このパスワードは忘れないようにどこかに書き留めておくと良いでしょう(なお、忘れてしまった場合でも再設定は可能(詳しくはこちら)ですが、これにより余計なタスクが一つ増えることとなります。やはりルートパスワードは忘れないようにしておいてください)。
以後、仮にルートユーザーとしてログインすることがある場合はここで設定したパスワードを用いることとなります。
VPS 名の変更
OVH のホーム画面の上部のナビゲーションメニューから、”Web Control Panel” という部分をクリックします。すると、以下のような画面となります。
上部メニューから “Cloud” を選択したのち、左メニューから “Servers” をクリックします。すると、ドロップダウンメニューが現れ、先ほど作成された VPS の名前が表示されます。それをクリックし、以下のような画面に移行します。
ここで設定を行いたいのは “Name”、すなわちサーバー名です。というのも、この時点におけるサーバー名は vps******.vps.ovh.ca のような形となっており、今後ターミナルから VPS に接続するにあたってこれを毎回入力するとなると非常に不便だからです。そこで、これをわかりやすい名前に変更しましょう。”Name” の右側にある点が3つ横に並んだ丸型のアイコンをクリックすると、ポップアップ画面が現れるので、”Custom name” の欄に好きな名前を入力します。ただし、アルファベットと数字のみを用いてください。例えばここでは、”znode” としました。
VPS の詳細設定
まず、自分のパソコンが VPS を認識できるように、hosts ファイルを編集します。現在、ターミナル上で VPS に接続中かと思いますから、Ctrl + D などによってログアウトしてください。そして以下のコマンドにより、vim というテキストエディターを用いて hosts ファイルの編集を行っていきます。
sudo vim /etc/hosts
etc/hosts ファイルの一番下に、VPS に関する基本的な情報を入力してください。これによって、IP アドレスを覚えておく必要がなくなり、VPS の名前だけ記憶しておけば良い状態になります(Shift + GG でファイルの一番下へ移動し、o で入力を開始して必要事項を入力し、Esc を押し、:wq を入力して保存します。間違ってしまった場合は、:q! を入力して編集内容を削除してください)。
入力内容としては、IP アドレス、および先ほどカスタマイズした VPS 名(ホスト名)の順です。
[IPアドレス] [VPS名]
次に、ホスト名および VPS への基本的なネットワーク接続がきちんと機能していることを確認するために、ping コマンドを実行してください。
ping [VPS名]
結果、以下のようになるはずです。ping を終了させるには Ctrl + C を入力してください。
それでは、改めてVPS に接続していきます。まずはルートユーザーとして接続します。ここで、先ほど新たに設定したルートパスワードを入力する必要があります。
ssh root@[VPS名]
ここで、以下のコマンドによりシステムをアップデートします。
apt-get update && apt-get -y upgrade
次に、ホスト名を適切なものへと設定します。
hostnamectl set-hostname [VPS名]
次に、システムが自らを探知できるように、hostsファイルを編集します。
vim /etc/hosts
最後の行に、IP アドレスとホスト名を挿入します。なお、ホスト名としては完全修飾ドメイン名(FQDN)を入力しますが、そのためには先ほど取得したドメイン名が必要となります。
[IPアドレス] [VPS名] [FQDN]
なお、FQDN は、[VPS名(ホスト名)].[ドメイン名] というフォーマットとなります。例えば、ホスト名が “znode”、ドメイン名が “securenode-domain-1.club” であるとすると、FQDN は “znode.securenode-domain-1.club” となります。
次に、タイムゾーンの設定を行います。これは必須ではありませんが、ログ情報を検証する際に役立ちます。以下のコマンドを入力することで、世界各地のタイムゾーンのコードを調べることができます。
timedatectl list-timezones
なお、日本にお住まいの場合は、”Asia/Tokyo” とすれば大丈夫です。タイムゾーンを設定するコマンドは以下のようになります:
timedatectl set-timezone 'Asia/Tokyo'
さて、ここでルートユーザー以外のユーザーアカウントを追加し、このユーザーに管理者権限を付与していきます。パスワードに関しては、ルートパスワードと異なるものにして下さい。
adduser [ユーザー名] && adduser [ユーザー名] sudo
(なお、”Full Name” から “Other” に至るまではただエンターキーを押して進んでしまって問題ありません。”Other” まで進んだら “Y” を入力します)
ここで、VPS から退出します。ルートユーザーとしてシステムに接続するのはこれが最後となることを祈りましょう。
exit
次に、先ほど設定したユーザーとして VPS にログインします。
ssh [ユーザー名]@[VPS名]
ここでは、先ほど設定したパスワードの入力を求められますので、正確に入力してください。うまく接続されたようであれば、一度 exit
もしくは Ctrl + D によってログアウトしてください。
認証鍵の作成
このセクションは必須ではありませんが、非常に役立つ設定となっています。今までは VPS へのログインにあたり毎回パスワードを入力する必要がありましたが、この設定により、それが不要となるのです!
まず、認証鍵のペアをコピーします(まだ認証鍵ペアが存在していないかもしれませんが、大丈夫です。その場合、あとで生成します)。
ssh-copy-id [ユーザー名]@[VPS名]
ssh [ユーザー名]@[VPS名]
これがうまくいかなかった場合、認証のためのキーペアを作成する必要があります。下記の方法を実行するのは、上述の方法でうまくいかなかった場合のみにしてください!以下のコマンドにより認証鍵を生成します。
ssh-keygen -b 4096
それでは、VPS の詳細設定を続けましょう。
VPS のセキュリティを向上させていきます。まず、ユーザーとしてログインを行い、コンフィグファイルを編集し、ルートユーザーとしてのログインを禁止します。ハッキング被害を防止するため、これは確実に行ってください:
ssh [ユーザー名]@[VPS名]
(未ログインの場合実行)
sudo vim /etc/ssh/sshd_config
j キーを用いてスクロールダウンしてください。そして(おそらく28行目の)コードを以下のように変更してください(a または o で入力開始となります。必要事項を入力し、終了したらEsc を押し、:wq を入力してファイルを保存してください)。
PermitRootLogin no
変更後のファイルは以下のようになります:
ここで、sshd サービスを再開させます。
sudo systemctl restart sshd.service
今後のために、いくつかの基本的なプログラムをインストールしておきましょう:
sudo apt update
sudo apt -y install git screen vim nmap ncdu busybox inxi links unzip python pwgen
ファイアウォールの設定
これまでで基本的なサーバー設定は終了したので、セキュリティの強化に移ります。まず、ファイアウォールを設定し、いくつかのポートを開いていきます。以下のコマンドをそっくりそのまま(かつ以下の順番通りに)入力し、ファイアウォールの設定を行ってください:
まず、すでにファイアウォールが有効化されているか確かめるために、以下のコマンドを入力してください(この時点では、”Status” が “inactive” となっているはずです):
sudo ufw status
注意:以下のコマンドの入力に際しては、必ず順番を守ってください。そうでない場合、プログラムが機能しません!(必要であれば、sudo ufw disable
によってファイアウォールを無効にしてください)
sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo ufw allow ssh/tcp
sudo ufw limit ssh/tcp
sudo ufw allow http/tcp
sudo ufw allow https/tcp
sudo ufw allow 9033/tcp
sudo ufw logging on
sudo ufw enable
最後のコマンドで、有効化するか否か尋ねられた場合、”y” (yes) と返答してください。そして、以下のコマンドを用いて、ファイアウォールが有効化されているかどうか確かめてください:
sudo ufw status
すると、ufw が有効化されている旨のメッセージが表示されるはずです。さらに、こちらが意図した通り、ファイアウォールは再起動後も有効化されることになります。
Fail2Ban を用いた基本的な侵入防止策
ここでは、システムに対する絶え間ない辞書攻撃への防止策としての設定を行います。具体的には、同じ IP アドレスからのログインが 10 回失敗した場合、そのIP アドレスは 10分間ログインが行えないように設定していきます。全く無防備であるよりは良いでしょう。
sudo apt -y install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
より多くのメモリを確保するためのスワップ領域の設定
VPS の費用はなるべく安く抑えたいものです。同時に、何かをコンパイルしたり、ZenCash においてシールドされたトランザクションを生成するなどといった理由により、サーバーが現行よりも多くのメモリを必要とする場合があります。しかしながら、こうしたことが頻繁に生じない限り、サーバーをアップグレードすることなく、一時的なメモリとしてハードドライブの領域を使用することで事足りる場合があります。
まず最初に、現在利用可能なハードドライブの領域を確認してみましょう:
df -h
続いて、どれだけのメモリが利用可能であるか確認しましょう:
free -h
ここで、ソリッドステートドライブ(SSD)の領域のいくらかをスワップ領域へと移します。以下のコマンドを入力していきます。
sudo fallocate -l 6G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
ここで free -h
を実行したのち “Swap” の “Total” という部分を見ていただくと、先ほどより多くのメモリが存在しているのがお分かりかと思います(下記スクリーンショットでは 4.2 G となっていますが、上述のコマンドを実行していただいた場合、これは 6 G となります)。
ここで、スワップ領域の機能を高めましょう。
sudo vim /etc/sysctl.conf
一番下に以下を挿入したのち、ファイルを保存してください:
vm.swappiness=10
そして、サーバーが再起動するたびにスワップ領域が利用可能となるように設定しましょう。もしそうでなかっとしたら、今まで行なった設定の意味があまりありません。fstab ファイルを編集していきます。
sudo vim /etc/fstab
一番下に以下を挿入したのち、ファイルを保存してください:
/swapfile none swap sw 0 0
これで、VPS において利用可能なメモリ容量がだいぶ増加したことになります。なお、これによってメモリに関する問題が全て解決されたわけではありません。処理速度が遅くなってきたならば、VPS をアップグレードする必要が出てくる可能性もあります。
Rootkit Detector のインストールおよびアップグレードスクリプト
VPS がハッキングされた場合に、それを検知して知らせる役割を果たすアプリケーションとして、rkhunter があります。 これによって、ハッキングされた場合でもサーバーイメージをきれいに消去した上で、バックアップからデータを復元させることが可能になります。
rkhunter をインストールし、最初のファイルスキャンを行います:
sudo apt -y install rkhunter
sudo rkhunter --propupd
VPS をアップデートした場合、rkhunter がアップデートファイルを検知できるように、アップデート直後に rkhunter を実行すると良いでしょう。そこで、以下のスクリプトを書いておきましょう。
vim upgrade_script.sh
以下をファイルに入力して下さい:
#!/bin/bash
sudo apt update
sudo apt -y dist-upgrade
sudo apt -y autoremove
sudo rkhunter --propupd
ファイルを保存したのち、ファイルを実行可能とするようにファイル権限を変更します。
chmod +x upgrade_script.sh
ここで、管理者権限を用いてファイルを実行します。
sudo ./upgrade_script.sh
これで、システムアップグレードにあたってのコマンドを全て覚えておく必要がなくなりました!ログインしたのち、このシェルスクリプトを実行するだけで大丈夫です。
お疲れ様です! これで無事安全な VPS の準備が完了しました。次に VPS の準備を行う際は、もっと素早く行えるでしょう。
パート 2 では、ZenCash に必要となるアプリケーションのインストールに関してみていきます。
ZenCash ウェブサイトおよび各種ソーシャルメディアも、ぜひ訪れてみてください!
- 公式ウェブサイト (英語)
- 公式ウェブサイト (日本語)
- Discord
- テレグラム
- 公式 Twitter (英語)
- 公式 Twitter (日本語)
- 公式 facebook (英語)
- 公式 facebook (日本語)
Horizen セキュアノード投資収益率 (ROI) – TransBorder
February 8, 2019 @ 5:27 pm
[…] ノード構築にあたっては、公式ガイド (英語)を参照していただければと思います (日本語の公式ガイドもあり、こちらでも構築可能ですが、内容がアップデートされていないため、公式ガイドをご覧いただくことをお勧めします。また、本ブログにおいて公式ガイドの日本語版をアップロードしていこうと思いますので、英語が面倒という方はそちらをご覧いただければと思います)。 […]