こんにちは、Aireです。
今回はAzure VMのインターネット接続を拒否する方法を紹介します。
Azureでは、ユーザ側でパブリックIPアドレスやNAT Gatewayを用意しなくても、Azureの既定の設定により、Azure VMからインターネットへのアウトバウンド接続が可能です。セキュリティ上の理由でインターネット接続設定を変更する場合は、本記事を参考にしてみてください。
Azureの既定の設定とAzure VMのインターネット接続
VNetにAzure VMをデプロイした場合、Azure VMにパブリックIPアドレスが割り当てられていない、またはNAT Gatewayと関連付けられたサブネットにAzure VMがデプロイされていない場合でも、Azure VMのインターネット接続(アウトバウンド)は許可された状態になります。
これは、明示的な送信接続が定義されていないVNet内のAzure VMには、リージョン内の既定の送信パブリックIPアドレスが割り当てられ、そのパブリックIPアドレスを使用してSNAT(送信元ネットワークアドレス変換)が行われることで、Azure VMのプライベートIPアドレスがパブリックIPアドレスに変換され、Azure VMからインターネットへの送信接続が可能になるためです。
以下、明示的な送信接続の例を示します。
- Azure VMにパブリックIPアドレスが割り当てられている。
- Azure VMがデプロイされたサブネットにNAT Gatewayが関連付けられている。
- Azure VMがロードバランサーのバックエンドプール内にデプロイされている。
詳細および公式情報については以下のドキュメントを参照してください。
インターネット接続を拒否する方法
Azure VMのインターネット接続(アウトバウンド)を拒否する方法は以下の2通りです。以降、それぞれの手順について紹介します。
- Network Security Group(NSG)でインターネット接続を拒否する
- ルートテーブルでインターネット接続を拒否する
Network Security Group(NSG)でインターネット接続を拒否する
NSGでインターネット接続を拒否する場合、以下の手順でNSGの設定を変更します。
- Azure Portalのサービス検索欄で「NSG」を検索後、NSG画面に移動し、対象のNSGを選択します。
- 左側のウィンドウ画面から[設定]-[送信セキュリティ規則]を選択し、[追加]をクリックします。
- 各入力欄を以下の表のように設定し、インターネットへの送信接続を拒否するセキュリティ規則を追加します。
設定項目 | 設定値 |
---|---|
ソース | Any |
ソースポート範囲 | * |
宛先 | Service Tag |
宛先サービスタグ | Internet |
サービス | Custom |
宛先ポート範囲 | * |
プロトコル | Any |
アクション | 拒否 |
優先度 | 任意の値(100〜4096) |
名前 | 任意の名前 |
ルートテーブルでインターネット接続を拒否する
ルートテーブルでインターネット接続を拒否する場合、以下の手順でルートテーブルの設定を変更します。
- Azure Portalのサービス検索欄で「ルートテーブル」を検索後、ルートテーブル画面に移動し、新規にルートテーブルを作成します。(本ステップではリソースグループやリージョンを選択するだけなので設定項目の説明は割愛)(*1)
- 作成したルートテーブル画面に移動後、左側のウィンドウ画面から[設定]-[ルート]を選択し、[追加]をクリックします。
- 各入力欄を以下の表のように設定し、インターネットへルーティングされないようにするルートを追加します。
設定項目 | 設定値 |
---|---|
ルート名 | 任意の名前 |
アドレスプレフィックス送信先 | IPアドレス |
宛先IPアドレス/CIDR範囲 | 0.0.0.0/0 |
ネクストホップの種類 | なし |
ネクストホップアドレス | ー(設定不可) |
- 左側のウィンドウ画面から[設定]-[サブネット]を選択し、[関連付け]をクリックします。
- インターネット接続を禁止するサブネットを選択します。
(*1)サブネット作成時に自動的に関連付けられる既定のルートテーブル(システムルート)は、直接設定変更することができないため、新規に作成したカスタムルートをサブネットに関連付けることで、システムルートの設定をオーバーライドする必要があります。
ルートテーブルでインターネット接続を拒否した場合、そのルートテーブルが関連付けられたサブネット内のAzure VMにパブリックIPアドレスが割り当てられていても、インターネットからそのVMにアクセスすることはできなくなるため注意が必要です。
【参考】Azure VMのインターネット接続を確認する方法
ここまででインターネット接続を拒否する設定が完了しました。ここでは、実際にインターネットに接続されていないかどうか確認する方法についてお話しします。
Azure VMにパブリックIPアドレスが割り当てられていない場合、Azure既定のSNATによってインターネットへの送信接続が行われるのですが、ICMPによる通信は許可されません。つまり、お馴染みのpingによる接続テストはできないということです。
pingの代替ツールはいくつかありますが、ここでは「hping3」を使用した方法を紹介しておきます。hping3は任意のTCP/IPパケットを送信し、ターゲットからの応答をpingのように表示できるネットワークツール(コマンド)です。
hping3を使用すると、以下のようにTCP/UCPのポート番号を指定したpingが可能になります。
1 2 3 4 5 6 |
[azureuser@vm-rhel8 ~]$ sudo hping3 -S -p 443 -c 4 yahoo.co.jp HPING yahoo.co.jp (eth0 183.79.250.123): S set, 40 headers + 0 data bytes len=46 ip=183.79.250.123 ttl=51 DF id=0 sport=443 flags=SA seq=0 win=29200 rtt=11.3 ms len=46 ip=183.79.250.123 ttl=51 DF id=0 sport=443 flags=SA seq=1 win=29200 rtt=11.2 ms len=46 ip=183.79.250.123 ttl=51 DF id=0 sport=443 flags=SA seq=2 win=29200 rtt=11.1 ms len=46 ip=183.79.250.123 ttl=52 DF id=0 sport=443 flags=SA seq=3 win=29200 rtt=11.0 ms |
hping3のインストール方法や使い方は以下の記事を参考にしてください。