AWS VPCで特定のホストからのアクセスを遮断する

こちらの記事の続きです。

AWSにはAmazon Virtual Private Cloud(VPC)という仮想ネットワークを構築、運用する機能があります。この機能を用いて攻撃者のサーバーへのアクセスを遮断しましょう。

Amazon VPCとは?

詳しくはこちらをご覧下さい。

VPCの仮想ネットワーク上でEC2等、AWSのサービスを稼働できます。Amazonが公開している以下の画像をご覧下さい。このような構成となります。

VPCを用いる狙い

攻撃者のアクセスがEC2インスタンスへ届く前に、EC2インスタンスの外側に位置するVPC層での攻撃者のアクセス遮断が狙いです。

それに用いるVPCの機能はネットワーク ACLです。

ネットワーク ACLとは

ネットワーク Access Control List。詳しくはこちらを御覧ください。

ざっくり言えば、ファイアウォールです。VPCへのアクセスの許可、拒否を行えます。

EC2のセキュリティグループと似ていますが、以下の点が大きく違います。

  1. アクセスの拒否が出来る。
  2. 仮想ネットワーク単位でアクセス制御を行える。

例えば、VPCにWebサーバーのインスタンスと、DBサーバーのインスタンスを起動したとします。それぞれのサーバーに対して、特定のホストからのアクセスだけを許可するよう、ネットワーク ACLで設定すれば、それぞれのサーバーに関連付けたセキュリティグループの設定を変更せずともアクセス制限を行えます。大まかな接続制限の一括管理が出来る、という訳です。

ルールを追加する

攻撃者のサーバーへのアクセスを遮断するルールを追加します。

  1. AWSへログイン後、サービス -> VPCへ選択し、VPCのページへ移動します。
  2. VPCページの左のメニューからセキュリティ -> ネットワーク ACLを選択し、ネットワーク ACL設定ページへ移動します。
  3. 以下のページが表示されたら、ネットワークACL を選択します。デフォルトで1つ存在するはずです。
  4. 以下のページが表示されたら、「インバウンドのルール」タブをクリックします。
  5. 「編集」ボタンをクリックします。
  6. 「別のルールの追加」ボタンをクリックします。
  7. 以下の画面が表示されたら、値を入力して「保存」ボタンをクリックすれば、設定は完了です。各項目について解説します。
    1. ルール #:数字が少ない程ルールの優先順位が高くなります。拒否ルールは先に行うよう設定した方が良いと思います。
    2. タイプ:どのプロトコルやポートに対してのルールとするか選択します。
    3. プロトコル:タイプに応じて変更されます。自分で変更は出来ない?ようです。
    4. ポート範囲:タイプで「カスタム~」を選択すると、ポートを指定できます。
    5. ソース:ルールを適用するセグメントを入力します。x.x.x.x/x形式で入力します。
    6. 許可/拒否:ソースで入力したセグメントを許可するか拒否するか、です。
    7. 削除:ルールを削除します。

以上で設定は完了です。EC2インスタンスにsshログインしてApacheのアクセスログをtail -fしてみて下さい。攻撃者のアクセスが無くなっているはずです。

有効に活用して攻撃者からサーバーを保護しましょう。