NEMのスーパーノードを建てる人(建てた人)の心構え

さて、先日NEMのスーパーノード(以下、SN)の役割とか、管理者の認識とかをつらつらと書いたわけですが、

siwon-g.hateblo.jp

siwon-g.hateblo.jp

今までサーバー側の立場になった事がない人がほとんどだから。
特に、業務レベルでの経験や、多額の金銭に直結するような状況で関わった経験がないから。
つまり、システムにおけるサーバーの役割や影響度の強さを実感として理解出来ないから、クライアント側の立ち位置で考えてしまうのはある種自然なことだと思う。

この辺の補足というか、SN管理者(サーバー管理者)の心構え的なものを書いてみようかと。

なお、技術的な部分はOSやバージョン、VPSに付随するサービスによって異なる部分が多いので割愛します。
そのため、分かっている人には当たり前の内容だと思いますが、あくまでも「サーバー側の立場になった事がない人」向けの話と言うことを念頭に置いて読んでください。

 

1.サーバーの管理者になるということ

おそらく、SNを建てるときは自分のPCを使うのでは無くVPSを契約(レンタル)している人がほとんどだと思います。
そして、VPSを借りた時点で、あなたがそのサーバーの管理者になります。

VPSを運営している会社が管理をしているのでは?
と思う人もいるかと思いますが、運営会社はサーバーを貸しているにすぎないので、サーバーそのものを維持管理するのはあなたです。
なので、VPSの約款とか注意事項には、「セキュリティ対策は自分でしてください」とか「運営会社は個々のサーバーに対する責任を持ちません」とかそんなのが書かれているはずです。
まぁ、逆の立場になって考えたら当然のことですよね。
root権限(そのサーバーの最上位権限)を与えているのに、何か設定をミスったら会社のせいだと言われても、運営会社は困るわけですから。

と言うことで、「VPSを借りた人=サーバー管理者=SN管理者」となるので、まずはその自覚を持ちましょう。

2.サーバーは常に外部にさらされているということ

普段使用している個人のPCやスマホは、意図的に設定を変えない限りは直接第三者からアクセスされる可能性は低いです。
(なので、個人のPCを乗っ取ろうとする場合はメールにファイルを添付したり、改ざんしたファイルをダウンロードさせたり、マルウェアをどうにかインストールさせたり、と言うように間接的な方法を取ることが多いです。)

それに対してSNの場合は(接続ポートは限定するとしても)インターネット上の誰からでもアクセス出来るように設定する必要があるため、この限りではありません。
そして、誰でもアクセス可能と言うことは、悪意を持った人から常時狙われているということでもあります。

「自分のサーバーは有名じゃないから」という考えをするかもしれませんが、攻撃する側からすればそんなのどうでも良いことです。
攻撃側は「アクセス出来るなら、とりあえず侵入してみるか・・・」という感じで総当たりに攻撃を仕掛けますし、「防御が弱いところがあったらとりあえず攻め込んでみる」というスタンスを持っていると思った方が良いです。
(攻撃者は専用のソフトウェアを使っているので、攻撃する側の労力はほとんどありません。)
そもそも、SNは色々と情報が公開されているため、ある意味狙い目のサーバーという見方も出来ます。

・・・とはいえ、ニュースなどで情報が流出したとか、ハッキングされたとか、そういうのを見ても他人事だと思っている人の方が多いと思います。
(この辺が、冒頭で書いた「サーバー側の立場になった事がない」という部分に起因すると思います。)

しかし、サーバー管理者からすると外部からの攻撃は日常の一部ですので、個人PCやスマホはともかく、SNに対しては認識を改めてください。

例えば、こんなサイトを見ると、世界中で無差別に攻撃していると言うのが少しは分かるかもしれません。

securitynavi.jp

また、どうしても実感が湧かないと言うSN管理者がいたら、一度ファイアウォールで遮断する前のアクセスログを出力してみると良いかもしれません。
(もちろん、ファイアウォールを解除せずに、ですが。)
短時間で様々なポートに対して膨大なアクセスが行われているというログが残ると思います。

なお、アクセスログが肥大化してハードディスクを圧迫したり、処理速度の遅延が起きてSN報酬が貰えないと言う状況になっても責任は持てませんので、試してみる場合はご注意を。

3.セキュリティ対策は自分ですること

前述の通り、インターネット上に公開しているサーバーは世界中から攻撃をされる可能性があります。
そのため、企業のサーバー管理者は国単位でアクセスを制御したり、指定したIPアドレスしか通さないようにしたり、VPN(暗号通信)を使って外部からログインパスワードを盗み取られるのを困難にしたり、色々なセキュリティ対策をしています。

残念ながら、SNは国単位のアクセス制御もIPアドレスの制御も出来ませんが、それでも出来ることはやっておきましょう。
そして、その対策をするのはSNの管理者であると言うことを自覚しましょう。

でも、何をしたら良いかよく分からない・・・と言う人は「VPS セキュリティ設定」あたりのキーワードでGoogle先生にお伺いを立てましょう。
VPSによっては管理会社が独自のセキュリティ対策をしている場合もあるので、運営会社の名前(さくら等)を追加しても良いかもしれません。
また、LinuxはOSの種類によってコマンドも違うので、「Ubuntu」や「CentOS」(とOSのバージョン)等、自分の環境に関するキーワードも追加して絞り込むと、検索時のノイズが低減されると思います。
もちろん、「スーパーノード セキュリティ」等の検索も有効です。

ただし、情報が古い場合やOSのバージョンが異なる場合はそのまま使えないこともありますので、情報の更新日にも注目しましょう。

 

流石に、何も対策してないと言う人は居ないと思いますが、一応最低限の対応を記述するとこんな感じでしょうか?

  • 不要なユーザーアカウント(ユーザーID)を削除
  • ユーザーのパスワードを長く複雑にする
  • SSH接続(リモート接続)はポート番号を変更し、特定ユーザーのみ接続可能にし、出来れば秘密鍵の使用を必須にする
  • ファイアウォールの設定を行い、NEMに必要なポート以外は閉じる
  • 不要なサービスを止める
  • NTP(時刻同期)を設定する

4.セキュリティ対策を継続すること

当然ですが、セキュリティ対策は1回実施したら終わりでは無く、都度アップデートして最新にする必要があります。

ファイアウォールなんかは1回設定すれば基本的に変更不要ですが、OS(カーネル)やソフトウェアのアップデートは継続必須です。
Linuxの場合は「yum」や「apt-get」でUpdateコマンドを実行すれば大抵のものが更新されるので、定期的にコマンドを叩くだけでもある程度はなんとかなるはずですが、SNにとって一番重要なNISのアップデートは手動で行う必要がありますのでお忘れ無く。
Javaに関してはいくつか種類があるので、上記Updateコマンドで対応されるならそれで良し、駄目なら必要に応じて手動での対応も検討してください。
※Catapult後はJavaの更新が不要になる可能性も・・・?

あと、OSのアップデートを行った場合はOSを再起動した方が良い場合もありますので、必要に応じて再起動をしてください。
その際、NISも再起動されるので、OS再起動後はNISが正常に動作することも確認してください。
※DBの再同期が始まると、同期が終わるまでは一部のAPIしか正常に結果が返ってこないのでご注意を。


また、セキュリティ対策には情報収集とサーバーの監視も含まれます。
情報収集の対象については、主に脆弱性の情報や各種アップデートの情報ですね。
あらゆる情報を収集するのは現実的に無理ですが、緊急性の高い脆弱性とかが出ると攻撃側は普段以上に狙ってくるので、ある程度はアンテナを張って情報収集する必要があります。

サーバーの監視についてはどこまで実施するのか判断が難しいところですが、アクセスログを確認したり、ログイン履歴を確認したり、サーバーの負荷状況を確認したり(異常な負荷が掛かっていると、変なサービスを動かされている可能性や外部から攻撃されている可能性がある)とか、なるべくこまめに確認した方が良いです。
サーバーのスペックに余裕がある場合は、監視ツールを導入してメールで定期的にスマホに送信するとかも出来ると思いますが、あまり詳しくないので割愛。
多分、Google先生に尋ねれば何か出てきます。

5.アップデートに対する意識を変えること(利用者への影響を考えること)

普段使っているパソコンやスマホの場合は、基本的に何かあっても自分にしか影響を与えず、自己責任の範疇に収まることが多い(と考える人が多いが、実際には知り合いの連絡先が漏れたりするのでそうでは無いことも多い)ですが、サーバーの場合はそのサーバーを使用する人(アクセスする人)達に影響を与えます。
特にNEMのようなシステムは、ユーザーが世界中に存在し、尚且つ利用者が今後増加する(可能性が高い)ため、SNの与える影響は徐々に大きくなります。

そのため、別の記事にも書きましたが「SN管理者はクライアント側(利用者側)ではなくサーバー側(提供者側)に位置する」という自覚を持ち、アップデートの影響も個人レベルでは無いと言うことを認識しましょう。

ちなみに、アップデート後のソフトにバグがあるかもしれないからアップデートしないという人を見かけますが、機能追加以外の場合は基本的にバグや脆弱性があるからアップデートを行っています。
確かにアップデートを行うことで新しいバグが発生することもありますが、どちらの方がリスクが高いかと言うと、「アップデートしない場合」の方がリスクが高いと考えられます。

理由は、アップデート情報が公開されると、攻撃者はその情報を元に「まだアップデートされていないサーバー」を対象に攻撃を行う可能性が高いからです。
新しいバグについては、どういうバグかという「現象」はすぐに広まりますが、「原因」については対応方法が見つかるまでは非公開にすることが多いです。
対して、アップデートを公開した古いバグについては「原因」に関しても情報を公開することが(比較的)多いため、「古いバグの方が攻撃しやすい」ということになります。

なので、サーバーに関しては、「きちんと情報を収集してリスクの大小を判断し、適切な対応を出来る」という場合を除き、早めにアップデートをした方がリスクは低くなります。
※とか言いつつ、自分で使っているiPhoneとかはしばらく様子見してからアップデートしてますが。まぁ、この辺の意識の差がユーザー側とサーバー側の違いと言うことで。

6.NISのアップデートを継続して行うこと

正直、SNを建てているのは、NEMを維持するためというよりもSN報酬を目的にしている人の方が圧倒的に多いと思います。
ですが、NISのバージョンはSN報酬の条件にもなっています。
つまり、報酬が欲しい人にとって、NISのアップデートは必須要件です。

「NEMを維持しているから報酬を貰う」のでも「報酬を貰えるからNEMを維持する」のでも、どっちでも構いません。
どちらが目的であろうと、SN報酬の条件になっているのだからNISをアップデートするしかないのです。
なので、期限ぎりぎりで焦って報酬を逃したりしないように、適宜公式フォーラムやTelegram、Twitter等で情報を仕入れ、早めに更新してしまいましょう。
※新しいバージョンのNISはTestNetで事前検証されている他、緊急時はMainNetでも早々に検証しているとのことですので、NISの公開後すぐに適用して問題無いそうです。(というか、Alicex系のSNが先に適用しているので、他のSNによる適用実績は確実にあります。)

なお、NISの更新情報についてはこの前の記事も参照してみてください。

siwon-g.hateblo.jp

7.まとめ

色々書きましたが、SNに何か問題が発生すると、結果的にXEMの価格が下がる可能性が高いです。
※実害は無かったとしても、Twitter等で伝言ゲームが始まると尾ひれが付いて不信感だけが残るということもあります。
たとえSN報酬を換金するのが最終目標だとしても、いたずらにNEM(XEM)の価値を下げるようなことはしない方が良いのは当然なので、最低限の対応はしておきましょう。
自分で自分の首を絞めても仕方ないですからね。

8.その他

8.1.いざ問題が起こったときは?

例えば、ハッキングされて知らない端末からログインの履歴があったとか、自分のIDでログイン出来なくなったとか、訳の分からないサービスが動いてサーバーの負荷が異常に高くなったとか。
そんなときにどうするのが良いか?と言うと

  1. VPSの管理画面(管理用WEBページ)からサーバーを強制シャットダウンしてください
  2. 原因を調査し、対応策を見つけてください
  3. 無理なら、一度OSを潰して(初期化して)ください
  4. セキュリティ対策を見直してからOSを再作成(再インストール)し、セキュリティ対策をしっかりしてください

え~、これ、仕事としてサーバー管理者をしている人から見るとあり得ない対応ですが、SN管理者に関して言えばあり得る手段、且つそれなりに有効な手段だと思っています。
と言うのも、SNに登録している情報で重要なのは委任用のプライベートキー(秘密鍵)くらいで、300万XEM以上入っているWalletのプライベートキーは基本的に漏れないんですよね。
※SN上でNCC(ローカルハーベストが出来るクライアント)も使っている場合等は漏れる可能性がありますが。

なので、対応方法が見つからない場合は異常な状態であれこれ試すよりも、一度OSを潰してから再作成する(セキュリティをしっかり対策する)方がそれ以上の被害が発生しないので比較的安全です。
再度狙われるのが心配なら、別のVPSを契約してIPアドレスを変更しても良いと思いますし、Walletも移して委任用のプライベートキーを変更するのも良いと思います。
IPアドレスを変更した場合等はNEMフォーラムの専用スレッドに情報を書き込む等の対応が必要です。(追記:「IPアドレスの変更は、change ip コマンドで可能。委任アドレス変更は、一旦SNの登録をDeactiveして新規にenrollし、そのDeactiveの連絡はスレッドに書き込みが必要。」という情報を頂きました。ただし、今後の手順も同様とは限らないため、実施時には最新情報を調べてください。)
※再設定用のメモなどは予め残しておくことを推奨します。

もちろん、他の人が管理しているSNが無事なら、1台SNを停止したところでNEMには影響を与えません。

 

まぁ、SNの再設定をするのは面倒だし、対応が完了するまでのSN報酬は貰えませんが、ハッキングされたまま放置してNEM全体に被害を及ぼすよりはマシです。
というか、そのまま放置しているとそこを足がかりにしてSN管理者の資産や情報が抜き取られる、と言う可能性もゼロでは無いので、他人への影響なんて知ったことか・・・等と考えていると自爆することになるのでご注意ください。
※プライベートキーが直接抜かれる可能性は低くても、信頼性の高いノードが乗っ取られるというのはそれなりのリスクがあります。
※他のサーバーのハッキングをするための足がかりにされたり、その際の痕跡を消すために悪用されたりする可能性もあるので、NEMとは無関係のリスクもあります。

8.2.SN管理なんて無理だ・・・と言う人は

SNを諦めて委任ハーベストだけにしましょう。


と言うのは流石に酷なので、Google先生等に質問して知識を蓄えて実践しましょう。
それでも無理なら、対応方法の一つとして管理を代行してくれる人にお願いするという手段もあります。

ただ、代行を依頼することによるリスク(SN報酬のチェックがパスされずに報酬が貰えない、そもそもまともに管理されない、管理費用が掛かる、悪用される、etc)もありますので、依頼する場合は自分で管理する場合のリスクとしっかり比較してから決めてください。
また、友人に依頼して問題が発生した場合は友人関係にも影響を与える可能性がありますのでご注意を。
(金が絡むと色々と厄介ですから・・・)

なお、どこに依頼すれば良いかは聞かれても答えられませんので(そもそも詳しくないので)、代行してくれる人・企業に関してはここでは触れません。
あくまで、一つの手段として存在するということだけ記述しておきます。