Fujitsu Cloud Direct ブログ

初心者エンジニア向け技術ブログ

【開発者向け】FJcloud-Vスタートアップガイド セキュリティ編

こんにちは。日本仮想化技術株式会社の水野です。前回の記事では、初心者向けにFJcloud-Vでのサーバーの立て方を紹介しました。

クラウドが流行っているのは理解していても、その利用に漠然とした不安を感じたり、なんとなく抵抗感のある人も多いと思います。

そしてそう感じる原因のひとつが、セキュリティではないでしょうか。誰もがアクセスできるインターネット上に、サーバーを立てるのがなんとなく怖かったり。あるいはクラウドサービスそのものを不正利用されてしまうと、膨大なコストが請求される可能性もあります。

怖いですね。

blog.clouddirect.jp.fujitsu.com

そこで今回は、FJcloud-Vを利用するにあたって、初心者がとりあえずやっておくべきセキュリティ強化策を、「FJcloud-Vの不正利用を防ぐ対策」と「ネットワークのアクセスを制御する対策」のふたつに分けて紹介します。

今回紹介する施策は、すべて無償で行えますので、とりあえずこれだけはやっておきましょう。

FJcloud-Vのセキュリティを強化する

まずはクラウドサービスそのもののセキュリティ対策です。繰り返しになりますが、サービスそのものへの不正アクセスを許してしまうと、情報漏洩、システムの破壊、不正利用による高額請求などなど、様々な問題に繋がってしまいます。

二要素認証

まず最初にやっておくべきは、アカウントへの二要素認証の設定です。もはやWebサービスではお馴染みのセキュリティ対策ですね。

一般的なパスワードによる認証は、当てずっぽうや力技で突破することが可能です。また、強度の低いパスワードを使ってしまうユーザーも、必ず一定数存在します。そのためパスワードだけでは、セキュリティとして不十分なのは、もはや常識と言えるでしょう。

二要素認証とは、下記の認証における3要素のうち、ふたつを利用する認証の総称です。

・知識認証
・所有認証
・生体認証

Webサービスでは、知識認証にあたるパスワードに、スマートフォンのアプリや、SMSで送信される認証コードを用いた所有認証を組み合わるのが一般的です。

FJcloud-Vでは、スマートフォンのアプリを利用したワンタイムパスワード(OTP)を使えます。

まずWebコントロールパネルにログインして、アカウント管理画面を開きます*1

右上にあるアカウント名をクリックして「アカウント管理」を開きます。

するとユーザーの一覧が表示されますので、OTPを設定したいユーザー(多くの場合は自分自身でしょう)にチェックを入れた上で、「選択したアカウントの操作」プルダウンから「OTP設定」を実行します。

上記のスクリーンショットではメニューに隠れてしまっていますが、OTPを設定したいユーザーにチェックを入れた上で、「OTP設定」を実行します。

OTPを設定するダイアログが開きます。Google AuthenticatorやFreeOTPといったスマホアプリでQRコードを読み取って、OTPを設定してください。

   スマホアプリに表示された6桁の数字を「ワンタイムコード」の欄に入力して「設定する」をクリックします。

コードが正しければ設定は完了です。以後はログインの度に、ユーザー名とパスワードにくわえて、OTPの入力が求められるようになります。

マルチアカウント

最初に作成されたFJcloud-Vのアカウントは、あらゆる操作が可能な最高権限を持っています。

例えばチームで作業するような場合、このアカウントを使い回すのはセキュリティ的に好ましくありません。

そのような場合は、各ユーザーごとに、制限されたアカウントを発行すべきです。 そのためFJcloud-Vには、マルチアカウント機能が用意されています。

先ほどの二要素認証と同様に、アカウント管理画面を開いたら、「アカウント作成」をクリックします。

アカウント作成のダイアログが開きますので、アカウント名とパスワードを入力し、付与する権限を選択してください。

設定できる権限は「閲覧のみ」「閲覧と限定した操作」「すべての操作」の3種類です。

なお当然ですが、アカウントを発行したら、そのユーザーにも二要素認証を設定しておきましょう。

IPアドレス制限

FJcloud-Vでは、コントロールパネルやAPIの呼び出しを、ユーザーごとにIPアドレスで制限することができます。

クラウドやリモートワークが全盛の現在、変化することが前提のソースIPアドレスで制限をかけるのは、時代にそぐわないという意見もあるでしょう。またIPアドレスのホワイトリスト運用は、メンテナンスのコストも無視できません。

例えば新しいメンバーがプロジェクトに参画しても、IPアドレスを許可するまでは仕事になりません。逆にメンバーが離脱した場合は、すみやかにそのメンバーのIPアドレスを削除しなければ、逆にセキュリティホールとなってしまいます。

とはいえ、オフィスのVPN経由でしかアクセスしないなど、完全にIPアドレスを固定できるのであれば、依然としてコストパフォーマンスのよいセキュリティ施策ではあります。

IPアドレス制限も、アカウント管理画面から行います。IPアドレスを制限したいユーザーを選択したら、メニューから「IP許可設定追加」を実行します。

IPアドレスの追加ダイアログが開きますので、「IPアドレス追加」ボタンをクリックしてください。

追加するIPアドレス欄にテキストボックスが表示されますので、具体的なIPアドレスを入力し、最後に「IP許可設定追加」をクリックします。

許可するIPアドレスを追加します。

別のIPアドレスからのアクセスはブロックされます。

サーバーのセキュリティを強化する

続いては、サーバーの設定によるセキュリティ対策を紹介します。

ファイアウォール

前回の記事では、サーバーを構築する時に、専用のファイアウォールを作成しました。

FJcloud-Vでは、サーバー単位でファイアウォールを設定できます。これにより、マイクロセグメンテーションごとに、細かく柔軟な設定が可能となっています。

Linuxにはソフトウェアファイアウォールが搭載されているため、そちらを利用したいと考える人もいるかもしれません。

しかし、「このポートは完全に閉じる」「このポートは特定のIPアドレスに対してのみ解放する」といったざっくりしたルールであれば、クラウドサービス側のファイアウォールに任せた方が楽だというのが筆者の考えです。

逆に「一定時間内に多数のアクセスがあった場合は、ログに記録した上でそのIPアドレスをブロックする」といった細やかな制御が行いたい場合は、OSのファイアウォールを使うのがよいでしょう。

FJcloud-Vのファイアウォールは、「ファイアウォールグループ」と、それに紐づく「ファイアウォールルール」で構成されています。まずサービスから「コンピューティング」を開いてください。そして左ペインのメニューから「ファイアウォール」→「ファイアウォールグループ作成」の順にクリックします。

新規ファイアウォールグループを作成します。

ファイアウォールグループの作成ダイアログが開きますので、順にルールを設定していきましょう。まずはファイアウォールグループの名前を決めて、作成するゾー ンを選択します。

FJcloud-Vではファイアウォールグループはゾーンに紐づきます。異なるゾーンのサーバーに、ファイアウォールグループを適用することはできないため、作成先は間違えないようにしてください。

続いてIN方向のルールを設定します。許可するプロトコル、必要に応じてポート番号、許可する接続元などを設定してください。

HTTP/HTTPSをパブリックに解放し、SSHのみIPアドレスを制限してみました。Webサーバーとしてはよくある例です。

OUT方向のルールを設定します。ルールを何も設定しない場合、すべての外向きの通信が許可されます。一般的なサーバーであれば、そのままで構わないでしょう。

マルウェア感染時の被害を抑えたいといった理由で、外向きのルールも厳しく縛りたい場合は、適宜ルールを設定してください。

このファイアウォールグループを適用したいサーバーを選択します。選択は必須ではないため、ここではそのまま次へ進みましょう。続くルーターの選択、拠点間VPNGWの選択も同様に、何も選択しなくて構いません。ファイアウォールグループを作成したいだけであれば、そのまま次に進んでしまってください。

最後に確認が表示されますので、問題がなければ「作成する」をクリックしてください。以後このファイアウォールグループは、同じゾーンのサーバーやルーターに適用できるようになります。

前述したように、ファイアウォールグループはサーバーごとに独立したものを作ることもできます。ですが同一のルールであれば、ひとつのファイアウォールグループを共有した方が、管理がしやすいでしょう。

プライベートLAN

FJcloud-Vでは、プライベートLANを使って、細かくネットワークセグメントを分割することができます。いくらファイアウォールで防御ができるからとはいえ、そもそも必要のないサーバーを直接インターネットに公開してしまうのはセキュリティリスクです。前回はサーバーをグローバルネットワークに所属させましたが、例えばデータベースサーバーのように、インターネットに公開する必要のないサーバーは、プライベートLANにだけ所属させるようにするとよいでしょう。

サーバー作成時に、所属するグローバルとプライベートのネットワークを選択できます。グローバルIPアドレスを「使用しない」にすることで、このサーバーは共通プライベートLANにのみ接続されるようになります。

Webサーバーはグローバルとプライベート両方のネットワークに所属し、DBサーバーはプライベートLANだけに所属させた例です。オンプレミスでよくある、NICを2枚刺しにして、グローバルとプライベートを分割した構成と同じものを再現できます。

まとめ

今回紹介した施策は、どれもシステムの使い勝手を損ねず、セキュリティレベルを引き上げることができます。また冒頭で述べた通り、どれも無償で実施可能ですから、この程度は最低限やっておくべきだと言ってよいでしょう。

セキュリティ対策に完璧な答えはありませんし、システムによって最適解も変わってきます。自身のシステムに生じるリスクを考慮した上で、必要な対策を行うよう心がけてください。

*1:なお今回も作業の都合上、スクリーンショットの撮影にはFJcloud-Vではなくニフクラを利用しています。