Q

Windowsクライアントやサーバーのセキュリティを強化しようと考えています。そこでWindowsではデフォルトで許可されている匿名接続を禁止したいと思っています。そのための方法と,禁止した場合の影響など注意する点について教えてください。

A

NT系のWindowsには,ユーザー名とパスワードがNULLという特別なアカウントが存在します。これは,Windowsマシン同士が必要なネットワーク情報をやり取りするために利用するもので,これを利用したネットワーク接続を匿名接続と呼んでいます。

 匿名接続が有効になっていると,クライアントPCやサーバーがすぐに攻撃されることはありませんが,認証を受けずにドメイン,信頼関係,ネットワーク共有,ユーザーやグループ,レジストリ・キーといった情報を入手できてしまいます。これらの情報を悪用されて攻撃者にパスワードを推測されるといった,いわゆるソーシャル・エンジニアリング攻撃が可能です。

レジストリやGPOで制限可能


△ 図をクリックすると拡大されます
図1●レジストリを修正すると匿名接続を禁止できる
 セキュリティを考慮して匿名接続を制限したい場合には,レジストリを編集することで実現可能です。具体的には,HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet\Control\Lsaにある[RestrictAnonymous]というDWORD値を変更します(図1)。

 ここで設定できる値はWindowsのバージョンによって異なります。Windows 2000では,標準では「0」(16進数,以下同)となっていますが,これを「1」にすれば「SAMのアカウントと共有の列挙を許可しない」という設定になります。また,「2」にすれば「明示的な匿名アクセス権がない場合アクセスを許可しない」設定になります。

 Windows XPやWindows Server 2003も標準の値は「0」ですが,こちらは「0」以外の値を設定すれば「1」でなくとも「SAMのアカウントと共有の列挙を許可しない」設定になります。Windows 2000の「2」に相当する「明示的な匿名アクセス権がない場合アクセスを許可しない」という設定はなくなりました。


△ 図をクリックすると拡大されます
図2●グループ・ポリシーを使うとドメイン内のマシンについて一括して匿名接続を禁止できる
 この設定をドメインに所属する複数のマシンにまとめて適用したい場合は,グループ・ポリシー・オブジェクト(GPO)を使うのが簡単です。グループ・ポリシー・エディタで[コンピュータの構成]-[Windowsの設定]-[セキュリティの設定]-[ローカルポリシー]-[セキュリティオプション]を開くと,[ネットワークアクセス:SAMアカウントおよび共有の匿名の列挙を許可しない]という項目があります(図2)。

 この項目を[有効]に設定すると,匿名アカウントの接続を行っているユーザーおよびコンピュータから,SAMアカウントおよび共有を列挙することができなくなります。なお,ローカル・セキュリティ・ポリシーにも同じ項目があり,前述したレジストリのRestrictAnonymous値を設定した場合も,ローカル・セキュリティ・ポリシーのこの項目が自動的に[有効]になります。

ネットワークでの不具合に注意
 匿名接続を制限することで確かにセキュリティは強化されます。しかし,匿名接続はWindowsネットワークにとって全く無用なものではありません。そのため,制限するとネットワーク上の問題が発生します。特に,Windows NTマシンが存在する場合は要注意です。

 例えば,クライアントとしてWindows NTを使っている場合は,ドメイン・コントローラとの間でNetlogonサービスによるセキュア・チャネルを開けなくなります。このため,パスワードの変更ができなくなったり,Active Directoryドメインで管理しているユーザーやグループをローカルに追加できなくなったりします。また,サーバーにNTを使っている場合は,ドメイン・コントローラ間の複製や信頼関係,ブラウザ・サービスなどでも問題が発生します。

 Windows 2000以降のマシンについても,ネットワーク・プリンタの追加や,DFS(分散ファイル・システム)の照会に失敗するといった障害が発生します。これらの制限事項に関する詳細は,マイクロソフトのサポート技術情報(246261823659)に掲載されています。

瀧澤 俊臣