仮想ルータにパケットフィルタを設定するファイアーウォールサービスを利用するために、ファイアーウォールルール(ポート番号指定)を作成し、確認するまでの手順を解説します。
ヒント: ファイアーウォールサービスの設定は以下の要素から構成され、番号順にフィルタリング情報を構成していきます。ファイアーウォールを仮想ルータに関連付けることで、設定したフィルタリングが行われるようにします。
デフォルトではすべてのトラフィックを遮断するようになっており(ホワイトリスト形式)、許可ルール(AC=allow)によって定義されたもののみFWを通過します。
- ファイアーウォールルールの作成
- ファイアーウォールポリシーを作成し、ルール群を登録
- ポリシーを指定してファイアーウォールを作成し、仮想ルータに関連付け
本ガイドでは、具体的に以下にあげたルールの作成手順を解説します。
- 許可 : SSH(TCP:22)
- 許可 : HTTP(TCP:80)
- 許可 : HTTPS(TCP:443)
- 許可 : NTP(UDP:123)
- 許可 : KMS(TCP:1688)
- 許可 : RDP(TCP:3389)
ファイアーウォールは細かな設定をすることが出来ますが、本ガイドではよくあるルールの作成方法を扱っています。さらに細かな設定項目と設定方法は機能説明書とAPIリファレンスマニュアル参照してください。
-
以下の設定をします。
$ FWR_NAME=<FWルール名(任意)>
$ AC=allow
$ DESTINATION_PORT=<宛先ポート番号、または範囲、例 : "0 - 255"、22、等>>
$ PROTOCOL=<プロトコル(tcp、udp、icmpで指定)>
$ AVAILABILITY_ZONE=<作成先アベイラビリティゾーン名>
-
次の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'","destination_port": "'$DESTINATION_PORT'" , "protocol": "'$PROTOCOL'",
"availability_zone": "'$AVAILABILITY_ZONE'" }}' | jq .
以下のレスポンスが返ってきます。
{
"firewall_rule": {
"protocol": "<プロトコル>",
"description": "",
"ip_version": 4,
"tenant_id": "<プロジェクトID>",
"enabled": true,
"source_ip_address": "null",
"destination_ip_address": null,
"firewall_policy_id": null,
"action": "allow",
"shared": false,
"source_port": null,
"position": null,
"destination_port": "<設定したポート番号>",
"id": "<新規ファイアーウォールルールID>",
"name": "<新規ファイアーウォールルール名>",
"availability_zone": "<設定したアベイラビリティゾーン>"
}
}
アベイラビリティゾーンは、AZ1がjp-east-1a、AZ2がjp-east-1bで表現されます。
-
作成したファイアーウォールルールを確認するため、以下のAPIを実行します。
$ curl -Ss $NETWORK/v2.0/fw/firewall_rules -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | \
jq '.firewall_rules[] | .name,.id'
以下のように、設定したファイアーウォールルール名を含んだリストが出力された場合、作成は完了です。
...
"<新規ファイアーウォールルール名>"
"<新規ファイアーウォールルールID>"
...
ファイアーウォールルールを作成が完了すると、それらを束ねるファイアーウォールポリシーの作成に進みます。