これまで、この連載ではこAzureのIaaS機能について説明してきました。IaaS編の最後に、Azure仮想マシンに対するリモート接続のセキュリティ確保について解説します。
Azure仮想マシンのリモート管理用RDP/SSHポートは恰好の攻撃対象
Azure仮想マシンにパブリックIPを割り当て、WindowsへのRDP接続のポート(3389/TCP)や、Linux、WindowsへのSSH接続のポート(22/TCP)への接続を許可しておけば、企業内はもちろん、自宅や外出先からもAzure仮想マシンにリモート接続して管理作業ができるので便利です。
しかし、それは反面、世界中の誰でも資格情報があれば接続できることでもあります。セキュリティ構成に問題があったり(例えば、RDPでネットワークレベル認証を無効にしている、SSHでパスワードによる接続を許可など)、RDPやSSHのプロトコル自身やサービスに脆弱性があったりすると、さらにリスクは高まります。
たとえ、既定とは別のポートに変更したとしても、ブルートフォース攻撃(総当たり攻撃)からは逃れられません。
Azure仮想ネットワークへのVPN接続やExpressRoute接続がある場合、リモート管理用にパブリックIPを割り当ててRDPやSSHポートを許可する必要がありません。パブリックIPの割り当てが無ければ、ブルートフォース攻撃やその他のインターネット側からの攻撃の対象にはなり得ません。
そのようなプライベートな接続環境がない場合、あるいはプライベートな接続環境に加えてアウトオブバンド接続(緊急時の代替路)用にパブリックIPのRDP/SSHポート接続を可能にする場合は、攻撃を受ける露出面を可能な限り減らすことが重要です。
セキュリティセンター(有料)の「Just in Time VMアクセス」
パブリックIPで許可されたRDPやSSHといった管理用リモート接続ポートは、ブルートフォース攻撃などインターネットからの攻撃にさらされます。この攻撃面を減らす1つの方法は、ポートの開放時間を制限することです。
Azureの有料サービスである「セキュリティセンター」を利用すると、Azure仮想マシンに対する接続に「Just in Time VMアクセス」を適用することができます。Just in Time VMアクセスとは、通常は管理用リモート接続ポートを閉じておき、Azureポータルからのユーザーの要求時にだけポートを許可します。ユーザーが切断するか、事前に構成された最大要求時間を経過すると、ポートは再び閉じられます。
Just in Time VMアクセスは有料サービスであるセキュリティセンターの機能であり、このほかにも、Azureのその他のサービスをも横断した継続的なセキュリティ評価、行動分析と機械学習に基づいた脅威の検知と監視など、多数の高度なセキュリティ機能を提供します。セキュリティセンターは60日間、無料で評価できます。Just in Time VMアクセスの具体的な利用イメージについては、以下のドキュメントで詳しく説明されています。
また、Azureポータルに対するアクセスについては、Azureポータルの「条件付きアクセス」をセットアップすることで強化することができます。例えば、特定のIPアドレスやIPアドレス範囲に制限することができます。ただし、「条件付きアクセス」を利用するには、Azure Active Directory(Azure AD)を有料サービスであるAzure AD Premium P1以上にアップグレード(購入)する必要があります。
コストゼロでIP制限する方法-NSGを利用
Azure仮想マシンへのRDPやSSHによる接続が、パブリックな固定のIPアドレスまたはIPアドレス範囲に限定できる場合は、パブリックIPが割り当てられるネットワークインタフェースに関連付けられた「ネットワークセキュリティグループ(NSG)」の「受信ポートの規則」を編集して、RDPやSSHポートを許可する規則にソースIPアドレスの条件を加えることで、特定のIPアドレス(X.X.X.X/32)またはIPアドレス範囲(X.X.X.X/24、X.X.X.X/28など)からの接続のみを許可し、それ以外からの接続を拒否させることができます。
「受信ポートの規則」は、仮想マシンの作成時に編集することもできますし、後から編集することも可能です。接続元が動的なIPアドレスの場合は、少々面倒ですが、ダミーのIPアドレスとして「10.0.0.1/32」などプライベートIPアドレスを指定しておき、接続が必要なときに接続元のIPアドレスを確認の上でその都度規則を書き換えればよいでしょう(自分のパブリックIPアドレスを知る簡単なサービスはインターネット上で簡単に見つかります)。
コストゼロでIP制限する方法-ゲストOSのFWを利用
前述のJust in Time VMアクセスは、定義済みのNSGを必要とします。この連載の18回、19回で説明したDevTest Labsは、NSGを使用しないため、Just in Time VMアクセスを利用することができません。
そもそも、DevTest Labsは、共有パブリックIPを持つロードバランサーにラボユーザーが要求時に動的に作成される「受信NAT規則」によりAzure仮想マシンへのリモートアクセスが制御されるため、Just in Time VMアクセスと同じように攻撃に対する露出は少なくなります。
DevTest Labsを利用している場合やJust in Time VMアクセスを利用している場合でも、IPアドレスまたはIPアドレス範囲で接続制限をかけたいというニーズはあるでしょう。その場合は、Azure仮想マシンのゲストOSが持つファイアウォール機能を利用できます。
Windowsの場合は、「セキュリティが強化されたWindows(Defender)ファイアウォール」の「受信の規則」でソースIPアドレスを制御できます。具体的には、RDPやSSHを許可する規則を開き、「スコープ」の「リモートIPアドレス」に接続を許可するパブリックIPアドレスまたはIPアドレス範囲を追加します。
ただし、この方法の場合、設定を誤るとAzure仮想マシンに接続不能になってしまう危険性があることに注意してください。Azure仮想ネットワークの同じローカルサブネットに別の仮想マシンが接続されている場合は、ローカルサブネットのIPアドレス範囲も追加しておきましょう。規則を編集したAzure仮想マシンにインターネット側からの接続が可能であることをテストした上で、別のAzure仮想マシンにも同様の設定を行うのです。
著者プロフィール
山市良
Web媒体、IT系雑誌、書籍を中心に執筆活動を行っているテクニカルフリーライター。主にマイクロソフトの製品やサービスの情報、新しいテクノロジを分かりやすく、正確に読者に伝えるとともに、利用現場で役立つ管理テクニックやトラブルシューティングを得意とする。2008年10月よりMicrosoft MVP - Cloud and Datacenter Management(旧カテゴリ: Hyper-V)を連続受賞。ブログはこちら。
主な著書・訳書
「インサイドWindows 第7版 上」(訳書、日経BP社、2018年)、「Windows Sysinternals徹底解説 改定新版」(訳書、日経BP社、2017年)、「Windows Server 2016テクノロジ入門 完全版」(日経BP社、2016年)、「Windows Server 2012 R2テクノロジ入門」(日経BP社、2014年)などがある。