サイト内の現在位置

改めてWindows OSのセキュリティ設定を考える

NECセキュリティブログ

2022年2月18日

NECサイバーセキュリティ戦略本部セキュリティ技術センターの妹脊です。
突然ですが、みなさんはWindows OSのセキュリティ設定をする際、どのような方法で、何を参考にして行っていますか?Windows OSはセキュリティに関する設定項目が多い、複雑だという印象があるのではないでしょうか。今回は、そんなWindows OSのセキュリティの設定・管理の手助けとなるツールとその活用方法をご紹介します。

Windows OSのセキュリティはどう設定すべきか

Windows OSのシステム・アプリケーションの設定やセキュリティの設定などは、グループポリシー、ローカルグループポリシー、ローカルセキュリティポリシーで実現されています。これらのポリシーによって、例えば、コントロールパネルのアクセス制限、プロキシ設定、Windows Updateの強制、パスワードポリシー(長さ、複雑さ、有効期限など)など、きめ細やかな設定が行えます。
組織のなかでWindows OSやMicrosoft製品のセキュリティレベルをある一定以上に保つためには、上記のポリシーを決めていく必要があります。特に、Active Directoryによるドメイン環境では、グループポリシーを使ってドメイン参加しているコンピュータの制御を行うのが一般的です。
ただし、グループポリシーは項目数が非常に多く、例えばWindows10(OS単体)では3000個以上、Internet Explorerでは1800個以上の設定項目が存在します new window[1]。これらの項目のうち、セキュリティに関連する項目は一部です。これらを調査して1つずつシステムへの影響を考慮しつつ、組織が定義するセキュリティポリシーどおりに設定をしていくのはとても時間と労力がかかります。そのため、世の中にある推奨されたセキュリティ設定をベースにして、組織のセキュリティポリシーに合うようにカスタマイズを行うのが効率的だと考えられます。この推奨設定の1つに、Microsoftが提供しているセキュリティベースライン new window[1]があります。

セキュリティベースラインとは

セキュリティベースラインは、Windows OSやその他Microsoft製品についてMicrosoft が推奨するセキュリティ設定です。具体的には、グループポリシーのうちセキュリティに関連する項目について、最低限実施しておいたほうが良い設定の値が示されたものになります。
セキュリティベースラインはMicrosoftのページ new window[2]からダウンロードできます。本ブログの執筆時点(2022年2月14日)では、下記のバージョンのWindows OS、Microsoft製品に対応したものが公開されています。なお、こちらは随時更新されているようなので、利用する場合は必ず最新版をご確認ください。

  • Windows 11 security baseline
  • Windows 10 security baselines(Version 1507, 1607, 1809, 1909, 20H2, 21H1, 21H2)
  • Windows Server security baselines (Windows Server 2012R2, 2016, 2019, 2022)
  • Microsoft Office security baseline(Microsoft 365 Apps for Enterprise Version 2112, Office 2016)
  • Microsoft Edge security baseline(Edge Browser Version 97)

ダウンロードしたセキュリティベースラインのファイルの中には、以下が含まれます。

  • 推奨設定が一覧化されたExcelファイル
    こちらには下記の内容が記載されています。
    • Policy Path:ポリシーのパス
    • Policy Setting Name:ポリシーの項目名
    • OS名の列:対象OSごとの推奨値(サーバの場合はメンバサーバ、ドメインコントローラー別)
    • Help Text:ポリシーや設定値に関する説明
    • Registry Information:レジストリ情報
    • Comments:補足事項
    例として、Windows 10 Version 1809 and Windows Server 2019 Security Baseline.zip に含まれる、MS Security Baseline Windows 10 v1809 and Server 2019.xlsxは下記の図になります。
  • 推奨設定が記述されたGPO(Group Policy Object)
  • GPOのHTMLレポート(グループポリシー管理コンソール(GPMC)の[設定]タブに表示されるようなもの)
  • セキュリティベースラインをローカルポリシーに適用するためのスクリプト

推奨の設定値は、Microsoftのセキュリティエンジニアリングチーム、製品グループ、パートナー、および顧客のフィードバックに基づいて作られています。このセキュリティベースラインをよりどころとすることで対策の抜け漏れが減り、組織のWindows関連製品に対するセキュリティレベルを一定に保つことができると考えられます。

Security Compliance Toolkit (SCT) とは

では、Windows OSの現在の設定値がセキュリティベースラインと異なる部分を探したり、セキュリティベースラインで規定されている設定値を適用したりするためにはどうすればよいでしょうか。ここで活用できるのが、Microsoftが提供しているSecurity Compliance Toolkit(SCT) new window[3]というツール群です。
SCTは、Windows OSや他のMicrosoft製品に対するセキュリティ構成のベースラインをダウンロード、分析、テスト、編集、および格納するための一連のツールです。SCTを利用する対象者は、企業のセキュリティ管理者等と想定されています。
SCTを構成するツールは下記のとおりです。

  • セキュリティベースライン
    先で説明したセキュリティベースラインもSCTに含まれます。
  • Policy Analyzer(PolicyAnalyzer.exe)
    Policy Analyze.exeは、GPOを分析および比較するためのユーティリティです。
    主な機能は次のとおりです。
    • グループポリシー(複数でも可)を比較し、冗長な設定や内部的な不整合を検出
    • GPOを現在のローカルポリシーおよびローカルレジストリ設定と比較
    • Microsoft Excelのシートとして結果をエクスポート
  • Local Group Policy Object(LGPO.exe)
    LGPO.exeは、ローカルグループポリシーの管理を自動化するために設計されたコマンドラインユーティリティです。主な機能は次の通りです。
    • レジストリポリシーファイル(Registry.pol)、セキュリティテンプレート、高度な監査のバックアップファイル、およびLGPOテキスト形式のファイルからの設定のインポート
    • ローカルポリシーをGPOのバックアップとしてエクスポート
    • レジストリポリシーファイルの内容をLGPOテキスト形式にエクスポートして編集、LGPOテキストファイルからレジストリポリシーファイルを作成
  • Set Object Security(SetObjectSecurity.exe)
    SetObjectSecurity.exeは、ほぼすべての種類のWindowsセキュリティ保護可能なオブジェクト(ファイル、ディレクトリ、レジストリキー、イベントログ、サービス、SMB共有など)のセキュリティ記述子を設定するツールです。ファイルシステムおよびレジストリオブジェクトの場合、継承ルールを適用するかどうかを選択できます。REG_BINARYレジストリ値のセキュリティ記述子の.regファイル互換表現でセキュリティ記述子を出力することも選択できます。
  • GPO to Policy Rules(GPO2PolicyRules.exe)
    GPO2PolicyRules.exeは、GPOバックアップからPolicy Analyzerで読み込める形式への変換を自動化するコマンドラインツールです。Policy Analyzerのダウンロードファイルに含まれています。

Policy Analyzerの活用

SCTのうち、今回はGPOの比較に主眼を置いてPolicy Analyzer利用してみました。その使い方と活用方法について紹介します。

ここでは、インストール直後のWindows Server 2019(ドメインコントローラ)のグループポリシーと、Windows Server 2019のセキュリティベースラインをPolicy Analyzerで比較します。なお、Policy Analyzerでは複数のGPOの比較ができるので、もう1つ米国国防総省(DoD)の国防情報システム局(DISA)が発行しているSecurity Technical Implementation Guides(STIGs) new window[4]の設定値もあわせて比較します。STIGsはDoDのセキュリティ要件に準拠するためのチェックリストやベストプラクティス集であり、様々なOSや製品のセキュアな設定値が細かく記載されています。

Policy Analyzerを利用する前に、比較したいGPOを準備する必要があります。
Windows Server 2019のGPOは、Windowsの機能である「グループポリシーの管理」から、該当のグループポリシーオブジェクトを選択し、右クリックで[すべてバックアップ]を実行すれば取得できます。
ローカルGPO(LGPO。各端末に設定されているローカルグループポリシー)も比較したい場合は、SCTの中のLGPO.exeというツールでバックアップを取得することが可能です。このツールは下図のようにコマンドラインで操作し、簡単にLGPOを取得することができます。

また、SCTのダウンロードサイト new window[2]から、Policy Analyzer.zipと、Windows 10 Version 1809 and Windows Server 2019 Security Baseline.zip(比較したいセキュリティベースライン)を入手しました。STIGsはDoDのサイト new window[5]で準拠するためのGPOが公開されているため、そちらを入手しました。今回は、U_STIG_GPO_Package_October_2021.zipの中にあるDoD Windows Server 2019 MS and DC V2R3を使用しています。
以上で準備は完了です。

次に、Policy Analyzerを使ってGPOの比較を行いました。Policy Analyzer.zipの中にあるPolicyAnalyzer.exeを起動すると下記のような画面が表示されます。

[Add]をクリックすると「Policy File Importer」の画面が表示されます。 [File]からAdd files from GPO(s)を選択し、先ほどバックアップしたGPOを選択し、ポリシーファイルをインポートします。(複数のGPOの選択が可能です)

フォルダを選択すると、Policy File Importerに情報が入ります。

比較対象のGPOが取り込めたら、Importをクリックします。これでPolicy Analyzerにグループポリシーの情報が取り込めます。同じ手順で、比較したいセキュリティベースラインのGPO、STGsのGPOも取り込むと、下記のようになります。(Nameは任意でつけることができます。)

比較したいポリシーを選択し、[View / Compare]をクリックすると、下記のようにPolicy Viewerに結果が表示されます。

上記の図で、Group_Policyから右側が比較対象の設定値一覧です。

  • Group_Policy:対象サーバのグループポリシーの設定値
  • MSFT-WS2019-DomainController-FINAL:Windows Server 2019(ドメインコントローラ)のセキュリティベースラインの設定値
  • WS2019_DC_STIG:Windows Server 2019(ドメインコントローラ) のSTIGsの設定値

結果の見方は下記です。

  • 白色:ポリシーの設定値が同じ
  • 黄色:ポリシーの設定値が異なる
  • 灰色:ポリシーの設定値が設定されていない(未定義/該当なし)

例えば、グループポリシーを見ていくと、パスワード関連の設定において、「MaximumPasswordAge」(パスワード有効期間)や「MinimumPasswordAge」(パスワードの変更禁止期間)はどちらもセキュリティベースラインやSTIGsとグループポリシーでは値が異なることがわかります(上図の黄色部分)。逆に、「PasswordComplexity」(複雑さの要件を満たす必要があるパスワード)、「PasswordHistorySize」(パスワードの履歴を記録する)はベースラインやSTIGsと一致しています(上図の白色部分)。また、「ResetLockoutCount」(ロックアウトカウンターのリセット)は、インストール直後のWindows Server 2019(ドメインコントローラ)のグループポリシーにおいてそもそも定義がなされていないことがわかります(上図の灰色部分)。
これらの比較結果はExcel形式でエクスポートが可能ですので、黄色のセル部分のみを抽出して確認するなど加工もしやすいです。

セキュリティ設定を効率よく行うためには

様々なOSや製品のセキュリティ設定の参考となるものは、前述のSTIGs以外にもあります。例えば、以前ブログでご紹介したCIS(Center For Internet Security) が発行しているCIS Benchmarks new window[6]などがあります。なお、CIS Benchmarksに準拠した設定が施されているGPO(CIS Securesuite Build Kit) new window[7]も用意されています。ただし、こちらはCIS SecureSuite Membership(有償)に加入しているユーザーのみがダウンロード・利用可能です。
このように、セキュリティ設定の参考となる資料は複数ありますが、それぞれに特徴がありますので、それらも加味したうえで自組織が何を拠り所とするかを検討していくのが良いと考えます。公開されている資料やWeb上の情報をベースに、主な特徴を下記の表にまとめましたので、参考になりましたら幸いです。

言葉の定義に着目すると、各資料の目的の違いがみえてきます。CIS Benchmarksはベンチマークであり世の中でよいとされているセキュリティの設定を集めたベストプラクティスです。STIGsは、DoDに導入されたIT製品に対する一連のサイバーセキュリティ要件であって、DoDのシステムまたはネットワークに接続する組織は準拠する必要があり、そのガイダンスとなっています。一方、セキュリティベースラインはあくまでベースラインであり、Microsoftが推奨している最低限やっておくべき設定になります。そのため、設定の内容にもレベル感の違いがあると考えられます。まずは、セキュリティベースラインを最低限のセキュリティ対策としつつ、組織のセキュリティ向上の目的やサーバの用途、求められるセキュリティレベルや要件に応じて他のベンチマーク・ガイドラインも参考にポリシーの検討をしていくのがよいのではないでしょうか。
また、具体的なグループポリシーの設定値を検討する際には、選択したベンチマークやガイドラインへの準拠状況の確認や、設定の修正箇所特定のために今回ご紹介したPolicy Analyzerで設定値の比較を行うことでその作業の効率化が図れそうです。ただし、ベンチマークやガイドライン等に準拠するように修正したグループポリシーはセキュリティ設定としては万全なものになっているかもしれませんが、OSの上に搭載されるアプリケーション等の挙動に影響を与える可能性も大いにあります。そのため、本番環境への適用に際しては、セキュリティ設定を適用する前の十分なテストを行うことをお勧めします。

おわりに

Windows OSの設定は複雑で項目数が多いですが、今回ご紹介したツール類をはじめ様々なベンダー、公的機関、団体がセキュリティ設定の参考となるベンチマークやガイドラインを公開していますので、ぜひこれらを使って堅牢化を効率よく実施いただきたいと思います。堅牢化をすることで、設定ミスが原因で起こる脅威の可能性をぐっと減らすことができます。本ブログが、少しでもみなさまのお役に立てば幸いです。

参考文献

執筆者プロフィール

妹脊 敦子(いもせ あつこ)
セキュリティ技術センター セキュリティ実装技術チーム

OS・ミドルウェアの要塞化ツールの開発やセキュリティ要件定義・設計の支援を通じて、NECのセキュア開発・運用推進に従事。CISSP、CISA、情報処理安全確保支援士(RISS)を保持。
趣味は週末ヨガと年に数回の手仕事(梅酒・梅シロップ・味噌づくりは欠かせない)の母ちゃんエンジニア。

執筆者の他の記事を読む

アクセスランキング