ファイアーウォールルール(拒否ルール)作成

仮想ルータにパケットフィルタを設定するファイアーウォールサービスを利用するために、ファイアーウォールルール(設定済みのルール以外すべて拒否)を作成し、確認するまでの手順を解説します。



ヒント: ファイアーウォールサービスの設定は以下の要素から構成され、番号順にフィルタリング情報を構成していきます。ファイアーウォールを仮想ルータに関連付けることで、設定したフィルタリングが行われるようにします。

デフォルトではすべてのトラフィックを遮断するようになっており(ホワイトリスト形式)、許可ルール(AC=allow)によって定義されたもののみFWを通過します。

  1. ファイアーウォールルールの作成
  2. ファイアーウォールポリシーを作成し、ルール群を登録
  3. ポリシーを指定してファイアーウォールを作成し、仮想ルータに関連付け

本ガイドでは、具体的に以下にあげたルールの作成手順を解説します。

  • 設定されていないポートを全て閉じる

ファイアーウォールは細かな設定をすることが出来ますが、本ガイドではよくあるルールの作成方法を扱っています。さらに細かな設定項目と設定方法は機能説明書とAPIリファレンスマニュアルを参照してください。

  1. 以下の設定をします。
    $ FWR_NAME=<FWルール名(任意)>
    $ AC=deny
    $ AVAILABILITY_ZONE=<作成先アベイラビリティゾーン名>
  2. 次のAPIを実行します。
    $ curl -X POST -Ss $NETWORK/v2.0/fw/firewall_rules -H "X-Auth-Token: $OS_AUTH_TOKEN" \
    -H "Content-Type: application/json" -d '{"firewall_rule": { "name": "'$FWR_NAME'",
     "action": "'$AC'", "availability_zone": "'$AVAILABILITY_ZONE'" }}' | jq .

    以下のレスポンスが返ってきます。

    {
      "firewall_rule": {
        "protocol": null,
        "description": "",
        "ip_version": 4,
        "tenant_id": "<プロジェクトID>",
        "enabled": true,
        "source_ip_address": "null",
        "destination_ip_address": null,
        "firewall_policy_id": null,
        "action": "deny",
        "shared": false,
        "source_port": null,
        "position": null,
        "destination_port": null,
        "id": "<新規ファイアーウォールルールID>",
        "name": "<新規ファイアーウォールルール名>",
        "availability_zone": "<設定したアベイラビリティゾーン>"
      }
    }

    アベイラビリティゾーンは、AZ1がjp-east-1a、AZ2がjp-east-1bで表現されます。

  3. 作成したファイアーウォールルールを確認するため、以下のAPIを実行します。
    $ curl -Ss $NETWORK/v2.0/fw/firewall_rules -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | \
     jq  '.firewall_rules[] | .name,.id'

    以下のように、設定したファイアーウォールルール名を含んだリストが出力された場合、作成は完了です。

    ...
    
    "<新規ファイアーウォールルール名>"
    "<新規ファイアーウォールルールID>"
    
    ...
    
    

ファイアーウォールルールの作成が完了すると、それらを束ねるファイアーウォールポリシーの作成に進みます。