0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

EC2でWindowsFireWallを利用する際の罠

Posted at

はじめに

皆様はEC2で WindowsFireWall を利用していますか?
通常であればEC2のアクセス制御はOS問わず、
セキュリティグループやネットワーク ACL、または WAF など AWS 上のリソースで行うため、
よほど入り組んだ要件がなければ使用しないかと思います。

そんな WindowsFireWall について以前やらかしたことを思い出したので共有します...。
なお本記事の対象はEC2ですが、
クラウドやオンプレ問わず、RDPで他サーバから接続する要件があるサーバに当てはまる内容だと思います。

目次

  1. アクセス制御の種類について
  2. デフォルトの設定について
  3. 設定の復元について
  4. やらかした場合の対処方法
  5. 最後に

1-アクセス制御の種類について

まず EC2 のアクセス制御の種類についてですが、冒頭でも触れたとおり、
大まかに以下の制御方法があります。

名称 制御対象     制御方法
セキュリティグループ EC2 許可
ネットワークACL サブネット 許可/拒否
WAF ALB、CloudFront 許可/拒否
パーソナルファイヤーウォール EC2 許可/拒否

この中で WindowsFireWall はパーソナルファイヤーウォールに該当します。

2-デフォルトの設定について

実はAWS公式が提供しているWindowsはEC2作成時点でWindowsFireWallが有効化されており、
デフォルト設定として外部からのRDP接続をすべて許可する設定となっています。
この設定が入ってないとRDP接続出来ないので当然ではありますが...。

WindowsFireWall デフォルト設定値 抜粋

image.png

3-設定の復元について

上記のデフォルト設定についてWindowsFireWallが無効化されている状態限定ですが、
ワンクリックですべての設定を削除するという、自爆スイッチが存在します。
以下画面の赤枠のボタン「設定の復元」がその自爆スイッチです...。
image.png

これをクリックすると数秒後に接続が切断され...。
image.png

そして永遠に繋がらなくなります...。
image.png

以降は RDPはおろか、 Ping や TraceRoute すら通らない状態になります。

4-やらかした場合の対処方法

もしこれをやらかしてしまった場合、以下の方法で対処が可能です。

(1)フリートマネージャー(Session Manager) で接続して WindowsFireWall を無効化

フリートマネージャーでの接続は WindowsFireWall で弾かれないため、
ログインしてWindowsFireWall を無効化しましょう。

ただしフリートマネージャーを利用するための前提として以下の設定が必要となります。
なおSSMエージェントはWindows Server 2016以降は標準でインストールされているので、
基本的にはIAM権限の設定やVPCエンドポイントを作成すれば利用できる場合が多いかと思います。

前提条件
・SSMエージェントがインストールされていること
・インスタンスプロファイルでSSM接続のIAM権限の付与されていること
・VPCにSSM用のVPCエンドポイントが作成されていること (Privateサブネット限定)
・セキュリティーグループのアウトバウンドルールで、
 VPCエンドポイント宛の443ポートが許可されていること (Privateサブネット限定)

詳しい前提条件や設定は公式ドキュメントにてご参照ください。
Session Manager の前提条件 - 公式ドキュメント

(2)SSM Run Command で WindowsFireWall を無効化

(1)と同様に、SSM 関連サービスである、Run Command を利用した方法です。
AWS公式が配布している Run Command に WindowsFireWall 無効化できるドキュメントがあり、
それを対象のWindowsに対して実行します。

AWSSupport-TroubleshootRDP - 公式ドキュメント

ただしこの方法もSSMエージェントを利用しているため、
(1)と同様の事前設定が必要となります。

(3)リモートレジストリを利用して WindowsFireWall を無効化

接続不可になった Windows の ルートボリュームをデタッチし、
他の Windows に EC2 へアタッチしてレジストリを変更することでWindowsFireWallを無効化できます。
リモートレジストリを使用 - 公式ドキュメント

SSMエージェントを利用できない場合はこの方法が有効となります。

(4)EC2 のリストア

最終手段ですが、素直にAMI からリストアします。
設定作業の出戻りは発生しますが、一番手堅い方法でもあります。

5-最後に

私がやらかした当時はSSMエージェントが利用できたのですぐに復旧ができましたが、
最悪リストアもありえたかなりデンジャーな事件でした。

皆様もやらかしてしまった場合は本記事を参考に対処いただければ幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?