SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for 4月 12th, 2009

[Web サーバー立ち上げ体験日記]Windows のセキュリティについて考える その 2

leave a comment

<[Web サーバー立ち上げ体験日記]Windows のセキュリティについて考える その 1

Windows のセキュリティチェックをするツールとして Microsoft Baseline Security Analyzer (MBSA) があります。

Microsoft Baseline Security Analyzer 2.1
ダウンロードはこちらから↓
Microsoft Baseline Security Analyzer 2.1 (for IT Professionals) – 日本語

MBSA 2.1 から Windows Server 2008 をサポートしていますので、サーバーを公開する前にこのツールを使用して
セキュリティチェックをすると安全性が増すかと思います。

MBSA では以下の内容をチェックすることができます。

  • Windows の管理上の脆弱性をチェックする
  • 脆弱なパスワードをチェックする
  • IIS の管理上の脆弱性をチェックする
  • SQL Server の管理上の脆弱性をチェックする
  • セキュリティ更新プログラムをチェックする

image

[IIS の管理上の脆弱性をチェックする] を実行するためには [IIS 6 メタベース互換] の役割サービスをインストールしておく必要があります。
image?

ログオン監査については見落としがちなのでこのツールでチェックしたほうがよいかと思います。
image?

監査ポリシーは [管理ツール] → [ローカル セキュリティ ポリシー] の [ローカル ポリシー] → [監査ポリシー] で設定することができます。
image

image

デフォルトでは監査ポリシーはすべて [監査しない] になっているのでもしもサーバーに不正ログインされた場合に、
後追いで調べることができません。
なにかあった際に調べる術として監査系の設定はしておいたほうが良いとおおみます。
image?
簡単に実行できるツールでセキュリティの考慮事項がわかりますので公開前に実行されてみてはいかがでしょう。

MBSA は以下のファイルのもコピーすることによってインストールをしないでも使用することができます。
# インストールした環境から以下のファイルをコピーして使用します。

  • mbsacli.exe
  • wusscan.dll

オフラインのカタログファイル (wsusscn2.cab) が必要になりますが、以下の URL からダウンロードすることことができます。
http://go.microsoft.com/fwlink/?LinkId=76054

これらのファイルを使用して以下のようなコマンドを実行することによりコマンドラインからセキュリティプログラムの適用状況を
調べることも可能です。

mbsacli.exe /xmlout? /catalog c:tempwsusscn2.cab /unicode > results.xml

出力された xml ファイルの内容の先頭に <?xml version="1.0"?> をつけると EXCEL で開けますので見やすくなると思います。

オフライン実行もできますので方法は以下の URL をご参照ください。
オフライン実行できると実際に運用している企業のサーバーでも実行できて便利だと思います。
MBSAをオフラインで実行する - @IT

セキュリティについてはもう少し考えてみたいと思います。

>[Web サーバー立ち上げ体験日記]Windows のセキュリティについて考える その 3

Written by Masayuki.Ozawa

4月 12th, 2009 at 2:18 pm

[Web サーバー立ち上げ体験日記]Windows のセキュリティについて考える その 1

leave a comment

<[Web サーバー立ち上げ体験日記]リモートデスクトップについて考える その 3

サーバーを立ち上げるにあたって、Windows のセキュリティ設定はどこまですればよいのかを考えてみました。

ちょうど @IT でセキュリティについての記事がありました。
Windows Web Server 2008 のセキュリティ対策と今回の環境にうってつけの記事です♪
Windows Web Server 2008のセキュリティ対策 - @IT

[ファイアウォールを利用する]

まずは Windows ファイアウォールについて書かれていますね。
既定で有効になっていますので手動で無効にしない限りは問題なさそうです。
例外については不要なものが例外設定されていないか確認する必要がありそうですね。

細かい設定に関しては [セキュリティが強化された Windows ファイアウォール] で設定と。

[管理用ポートを許可する]

リモートデスクトップ用の管理ポートについて書かれていました。
接続元が特定できるのであればスコープの設定が有効そうですね。
管理用端末が準備できるのであればそこからのみ接続を許可したほうがよさそうです。
# 公開サーバーとは別に踏み台サーバーを作ってそこからというのが良いのでしょうか。

[Web コンテンツの管理]

ファイル共有は危険と。コンテンツディレクトリを共有にするのはリスクが高そうです。
なるべくポートを開けずとあるので FTP も控えたほうがよいのでしょうかね。
管理共有は以下の KB の逆をすれば停止することができますが、一部のミドルで管理共有を使っていることが
ありますので停止する場合はサーバーで異常がないことを確認しながら設定する必要があるかと。
Windows Server 2008 で共有管理者を削除する方法
# レジストリ設定後に再起動すると管理共有が停止されます。
  KB にも記述されていますが IPC$ だけは削除することができません。
??? 複数の環境で試してみたところ CD/DVD ドライブの管理共有が削除されないものがありました。

[不要なコンポーネントの無効化]

IIS 7.0 は役割サービスを細かくインストールできますので、意図的に入れない限りは静的コンテンツのコンポーネントのみ
導入された状態になっていると思います。
[使う機能がわからないからすべてインストール!] ということをしなければ不要なコンポーネントは入らなさそうですね。

[定期的なセキュリティパッチの適用]

Windows Update で定期的なパッチ適用を心掛ける必要があります。
夜間にリブートがかかるようなタイミングでの適用がよさそうですね。

ひとまず @IT の記事で何をすればよいかを考えてみました。

次は MBSA を使ったセキュリティチェックをまとめてみたいと思います。

>[Web サーバー立ち上げ体験日記]Windows のセキュリティについて考える その 2

Written by Masayuki.Ozawa

4月 12th, 2009 at 11:12 am

[Web サーバー立ち上げ体験日記]リモートデスクトップについて考える その 3

leave a comment

<[Web サーバー立ち上げ体験日記]リモートデスクトップについて考える その 2

デフォルトではすべてに NIC でポート 3389 を使用してリモートデスクトップをリッスンしています。

C:UsersAdministrator>netstat -an

アクティブな接続

? プロトコル? ローカル アドレス????????? 外部アドレス??????? 状態
? ~ 省略 ~
? TCP??? 0.0.0.0:3389?????????? 0.0.0.0:0????????????? LISTENING
? TCP??? [::]:3389??????????????? [::]:0?????????????????? LISTENING
? ~ 省略 ~

その 2 でも書きましたがデフォルトの 3389 ポートは予約済みポートとなっていますので既知のポート番号です。
このままですと、リモートデスクトップを有効にしていると nslookup で DNS 名を確認して、リモートデスクトップで
接続しようとすると単純につなげてしまいますよね。

ポート番号を 3389 から変更すると接続時にリモートデスクトップでポート番号を明示的に指定する必要があります。
この方がセキュアな感じがしますね。

また複数の NIC をサーバーに接続している場合は特定の NIC でのみリモートデスクトップの接続を許可することができます。
うまくセグメントまで分けられればいいのですが、家庭用のルーターでそこまでできるかの検証がとれませんでした。
ひとまず Web サーバーに 172.0.0.12 という IP を持つ NIC を追加したと想定してみます。

?? image

172.0.0.10 で Web サーバー、172.0.0.12 でリモートデスクトップを提供する構成にしたいと思います。
ポートは Web サーバーが 80 、リモートデスクトップを 56000 として設定してみます。

[ポート番号の変更方法]

ポート番号を 3389 から変更するにはレジストリを変更します。

Microsoft の KB でも情報が掲載されていますね。
リモート デスクトップのリスニング ポートを変更する方法
# Mac 用のリモートデスクトップは 3389 以外はサポートしていないんですね。

  1. ファイル名を指定して実行で [regedit.exe] を実行
  2. [HKEY_LOCAL_MACHINESSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp] の
    [PortNumber] を開きます。
    image
  3. ポート番号を変更します。
    # 10 進数で入力したほうがわかりやすいかと。
    image
  4. この状態ではぱだポート番号は変更されていません。
    # 以前のバージョンの Windows だとすぐに変わった気がするのですが。

    C:UsersAdministrator>netstat -an

    アクティブな接続

    ? プロトコル? ローカル アドレス????????? 外部アドレス??????? 状態
    ? ~ 省略 ~
    ? TCP??? 0.0.0.0:3389?????????? 0.0.0.0:0????????????? LISTENING
    ? TCP??? [::]:3389??????????????? [::]:0?????????????????? LISTENING
    ? ~ 省略 ~

  5. [サーバーマネージャ] から [Terminal Service] のサービスを再起動します。
    ?image
  6. ポートが変わっていることが確認できます。

    C:UsersAdministrator>netstat -an

    アクティブな接続

    ? プロトコル? ローカル アドレス????????? 外部アドレス??????? 状態
    ? ~ 省略 ~
    ? TCP??? 0.0.0.0:56000?????????? 0.0.0.0:0????????????? LISTENING
    ? TCP??? [::]:56000??????????????? [::]:0?????????????????? LISTENING
    ? ~ 省略 ~

  7. この状態ではファイアウォールのポートの例外が設定されていません。
    # リモートデスクトップ設定時に設定される例外はポート 3389 ですので、設定したポートに対しては手動で設定します。
    [管理ツール] の [セキュリティが強化された Windows ファイアウォール] を起動します。
    image
  8. デフォルトで作成されている受信の規則の [リモートデスクトップ (TCP 受信)] の内容を確認してみたいと思います。
    image?
    ポートが [3389] になっていて変更できません。
    リモートデスクトップのポートを変更した場合は、新規に受信規則を作成する必要がありますね。
    image
  9. [操作] から [新規の規則] をクリックします。
    image
  10. [ポート] を選択し、[次へ] をクリックします。
  11. [TCP] の [56000] を設定し、 [次へ] をクリックします。
    image
  12. [接続を許可する] を選択し、[次へ] をクリックします。
    image
  13. 全プロファイルで接続を許可しようと思いますのですべてを選択した状態 (デフォルトの状態) で [次へ] をクリックします。
    image
  14. [名前] を入力して、[完了] をクリックします。
  15. 新しい規則が作成されます。
    image

リモートデスクトップ接続する際にポート番号を指定しないと、3389 で接続しに行きますので接続時にはポート番号を
指定する必要があります。

コンピュータ名に [コンピュータ名 (または IP アドレス):ポート番号] の形式で入力します。
image

これでポート番号を指定しないと接続ができないように設定ができました。
ポートスキャンをされるとリモートデスクトップのポートがわかってしまいそうな気がしますが単純には接続ができなくなります。

[使用する NIC の変更]

デフォルトでは [0.0.0.0] でリモートデスクトップの応答を待っていますので、複数の NIC を使用している場合は全 NIC で
リモートデスクトップの接続を許可していることになります。

企業で 裏 LAN / 運用 LAN / 管理 LAN と呼ばれる管理用の LAN を構築している場合は特定の NIC だけリモートデスクトップを
許可したいということがありますよね。

ポートの変更同様 Microsoft の KB に情報があります。
影響を受けてある製品のいずれかを実行しているコンピュータのリモート デスクトップ セッションは確立できません

レジストリを変更する手順になっているのですが [ターミナル サービス構成] から変更することができます。

  1. [管理ツール] → [ターミナルサービス] → [ターミナル サービス構成] を開きます。
    image
  2. [RDP-Tcp] のプロパティを開きます。
    image
  3. [ネットワーク アダプタ] タブを選択し、[ネットワーク アダプタ] から使用する NIC を選択します。
    # 下の画像は Hyper-V のゲスト OS を使用し、エミュレーション NIC と Loopback Adapter で複数 NIC の環境にしています。
    今回は [Microsoft Loopback Adapter] でリモートデスクトップを使用したいと思います。(172.0.0.12 の IP です)
    image
  4. 設定が終了したら、サーバーを再起動します。
    サービスの再起動だけではだめでした。
  5. [netstat ?an] でポートの状態を確認してみます。
    特定の IP アドレスにポートが割り当てられているのが確認できます。

    C:UsersAdministrator>netstat -an

    アクティブな接続

    ? プロトコル? ローカル アドレス????????? 外部アドレス??????? 状態
    ? ~ 省略 ~
    ? TCP??? 172.0.0.12:56000?????????? 0.0.0.0:0????????????? LISTENING
    ? ~ 省略 ~

他の環境で試してみたのですが、ネットワークアダプタを固定すると netstat にポートが上がって来ませんでした…。
[このプロトコルで構成されたすべてのネットワーク アダプタ] にするとポートもきちんと立ち上がるのですが。
ネットワークアダプタを固定すると駄目でした…。
ネットワークアダプタの固定についてはもう少し調査する必要がありそうです。

[ターミナル サービス構成] では他にも同時接続ユーザー数や、1 ユーザーのセッション数制限もすることができますので、
環境に応じていろいろと試してみる必要がありますね。
# 接続に証明書が使えるようですのでここは少し勉強したいです。

運用のためのリモートデスクトップについてはここまでで。

次は Windows のセキュリティ設定について考えてみたいと思います。

>[Web サーバー立ち上げ体験日記]Windows のセキュリティについて考える その 1

Written by Masayuki.Ozawa

4月 12th, 2009 at 4:54 am