Azure VM v2(ARM) でのポート開放

wf00

概要

社内オンプレミスや自宅サーバ、AWS、Azure VM v1でポート開放をしてサービス公開をしていたけど、v2(ARM)ではどうやるの?という解説だ。
初めての方でも分かりやすいようにまとめてみる。
※本記事の初版は2016年4月30日となる。

 

ARMって何?

Azure Resource Managerの略であって、CPUアーキテクチャのARMとは関係ない。
ではどんなものかというと、Azure上のあらゆるリソースをまとめて管理するための仕組みである。
詳細はこちらを参照してみてほしい

マイクロソフトAzureのIaaSは、v1とv2と呼ばれるものの2種類が現在ある。
v2形式は新しいポータル(現行ポータル)でのみ利用でき、v1形式はクラシックポータルと新しいポータル両方で使用できる。

これらは新規にVMを作成する際に、選択が可能だ。

armsv01

v1形式は現行ポータルがGA(General Availability=一般提供開始)されてからはクラシックと名前が付くようになったが、今後はv2形式が一般的に使われていくことになるだろう。
v1とv2ではARM対応の他、ネットワーク関連が1つのリソースになるなど大きく異なっている。

wf11
※執筆時点では、v2形式の表記が英語で、クラシックは日本語となっている。アイコンの色にも注目。

 

規則の確認方法

仮想マシンから調べる場合は、仮想マシンのネットワークを確認する。
するとセキュリティグループの名前があるばずだ。
この名前のセキュリティグループに設定が登録されている。
ルール自体は複数マシンで共有ができる。

wf04

盾のアイコンであるセキュリティグループを開こう。さらに設定を開くグループ名をクリックすると、下記のような画面が表示される。
受信セキュリティ規則と送信セキュリティ規則があるばずだ。ここでポート開放の設定を行ってく。

wf05

デフォルトの規則は、このアイコンをクリックすると追加設定したものと一緒に表示される。

wf09

 

デフォルトの規則(受信)

デフォルトの規則も仮想マシンを作成した際に設定されている。
まずは受信規則です。開けていくだけなら、デフォルトの規則は気にしなくても安全な方向に向けられているので、消したり大きく穴を開けないならば、読み飛ばしてもかまわない。
気を付けて欲しいのは、安全な方向に設定を振ることだ。

wf09

  • AllowVnetInBound
    仮想マシン(VM)が所属するネットワーク内でお互いに全てのTCP/UDP通信が可能。
  • AllowAzureLoadBalancerInBound
    Azureのロードバランサーから、任意の場所へは全てのTCP/UDP通信が可能。
    任意の場所は、所属ネットワークの他、インターネットを含む全て。
  • DenyAllInBound
    全通信を不許可。これが優先度65500となっているので、一番最初にかかる規則(ルール)となる。言い方を変えれば、全部を閉じたうえで、それより若いルール番号のもので必要なものだけを開けていく。
  • default-allow-rdp
    Azureのロードバランサーから、任意の場所から任意の場所へリモートデスクトップを許可する。
    任意の場所は、所属ネットワークの他、インターネットを含む全て。
    Windows ServerをAzure VM v2で作成した場合は、これが追加されている。
    そのため作成直後から、インターネットからリモートデスクトップで接続ができる。
    ※言い方を変えれば、ユーザー名・パスワードが漏れたら世界中からハッキングされる恐れがあるので、取り扱いに注意し、推測しにくいパスワードを設定する必要がある。

 

デフォルトの規則(送信)

次は送信規則だ。

wf10

  • AllowVnetOutBound
    仮想マシン(VM)が所属するネットワーク内でお互いに全てのTCP/UDP通信が可能。
  • AllowInternetOutBound
    仮想マシンが所属するネットワークからインターネットに対して内側からセッションを開くアウトバウンド(外向きの通信)は、全て可能。
    言い方を変えよう。自宅のインターネットルータを設置し、中から外のサービスを利用する場合は、制限がかかっていないことが多い。また、外からの自宅への通信は全くできないかPingが届くだけだ。それと同じイメージだ。
  • DenyAllOutBound
    全通信を不許可。これが優先度65500となっているので、一番最初にかかる規則(ルール)となる。言い方を変えれば、全部を閉じたうえで、それより若いルール番号のもので必要なものだけを開けていく。

 

追加の方法

次サーバ上に新しいサービスを導入し、外もしくは他ネットワークにサービスを提供する場合は、デフォルトのルールから考えると、大抵は受信ルールに追加するだけで解決するはずだ。

では受信の規則を追加してみよう。外から接続を要求された時のルールの追加だ。
まずは追加のアイコンをクリックする。

wf06

そしてルール名、優先度、ソース、プロトコル、宛先、ポート番号の範囲、アクションを選択する。
インターネットからの通信を開ける場合は、下記と違うのは名前、優先度、プロトコル、ポート番号の3つになるはずだ。優先度は全拒否の65500より若い番号を設定すればよい。
ポートの範囲は、単一の場合は数字のみ。範囲の場合は、”-“を付けて、”1024-1030″のように入力する。
だからといって、”0-65535″のように全ポートを開けてしまわないように注意してほしい。あなたと顧客、利用者の情報資産を守るためだ。業務利用で理解できない場合は、一度誰かに相談を行った方が良い。

wf07

実際に追加した例を見てみよう。インターネットのゲーム用のボイスチャットで利用されるTeamSpeak3のサーバの例だ。
TCPの30033、10011、そしてUDPの9987をオープンしている。

wf08
9987/UDPは、ボイスチャットの音声転送用だ。1つのWindowsに複数のサーバを立てる場合はこれが単一ではなく、範囲の設定が必要となる。
10011/TCPは、ビューワサービスを利用する場合に使用する。
30033/TCPはファイル転送用だ。TeamSpeak3のチャンネルで設定ファイルやMODを交換するときに使用される。

 

それでもつながらない?

大抵はこれだけでは外からサービスに接続できない。
それはWindowsファイアウォールが、新規に作成されたWindows Serverではオンになっているからだ。
だからといってWIndowsファイアウォールをオフにしないように。
例え前述の受信規則で制限していても、同一ネットワークにいるマシンがセキュリティリスクを持っている場合に踏み台にされ、ハッキングされる可能性もあるからだ。
例え自身の管理するマシンでも信用してはいけない。それがあなたが構築したサーバでも誰かが進入することがあるからだ。
※今回はサーバ間のセキュリティは割愛する。

でも安心してほしい。必要なのはポート追加か、アプリ単位の開放だけだ。設定そのものは簡単だ。
アプリ単位の場合は「Windowsファイアウォール」の「許可されたアプリの画面」から、「別のアプリを許可」のボタンをクリックする。

wf01

それから外に開放したいサービスの実行ファイルを参照から指定し、追加する。

wf02

それから、追加したソフトをパブリックに公開するため、パブリックにチェックを入れる。
パブリックとは、事実上、インターネットのことと考えてよい。

wf03

Windows Server自身が持っているIISなどのサービスは標準で登録されているので、これらははブリックにチェックを入れていくだけで良い。

 

最後に

ポート開放は設定者の責任範囲だ。Windowsファイアウォールのポート開放で「ファイアウォールをオフにする」というような記載がインターネットで散見されるが、外向けにサービス提供をするサーバでは絶対にやってはいけない。

例え、知り合いにしか伝えていなくてもポートスキャンをされればお終いだ。

必要なものだけを開けて設定していくことをよく考え、開放していこう。
会社の扉と同じだと考えてほしい。
必要な入口で入退室管理を行い、不審な人が入ってきたリ、燃えやすいものがある場所に火を投げ込まれたりしないようにする。それと同じだ。

Azure

コメントを残す

メールアドレスが公開されることはありません。