Windowsのセキュリティ機能
本稿ではWindowsのセキュリティ機能(ウィンドウズのセキュリティきのう)について記述する。本稿ではMicrosoft Windows本体のみならず、Active DirectoryやWSUSなどWindowsと連携するサーバソフト等が提供するセキュリティ機能も説明するものとする。
Windowsには以下の種類のアカウントがある:
これらのアカウントの情報の表示や設定は以下のコマンドで実行可能である:
Windowsの全てのユーザアカウント、コンピュータアカウント、グループアカウントのように認証やアクセス制御の対象となる主体の事をセキュリティプリンシパルといい、WindowsのセキュリティプリンシパルにはSID(Security Identifier、セキュリティ識別子)、GUID(Globally Unique Identifier、グローバル一意識別子)という2つの固有識別子が割り振られている。
SID、GUIDはいずれもユーザアカウントを識別するためのものだが、以下のような特徴と違いがある。まずSIDはActive Directoryドメイン(後述)で一意な識別子でアクセス制御などに使われる。SIDはユーザ名やコンピュータ名を変更してもSIDは変更されない。また異なる2つのマシンで同一のユーザ名のアカウントを登録した場合、それら2つのマシンのアカウントのSIDは互いに異なる。
しかしユーザの所属するドメインが変更になった場合はSIDも変更になる。そこでドメインが変更になってもアカウントを一意に識別できるように作られたのがGUIDである。
各ユーザアカウントには、ユーザアカウントのSID、ユーザが属しているグループ(達)のSID、アクセス制御情報等を記述したアクセストークンが割り振られている。
ネットワーク経由でアクセスしてくるユーザーに対しては、アクセス トークンの代わりにUID (User IDentifier、ユーザー識別子)が用いられる。アクセストークンの全情報をネットワークに流すのはセキュリティ上危険なので、アクセストークンから必要情報のみを抜き出したUIDを用いるのである。
小規模なネットワークではワークグループの機能を使う事により、マシンをまたがるアカウント管理・ファイル共有を行う事ができる。大規模なネットワークであればディレクトリサービスActive Directoryで一括管理する必要がある。
ユーザ名を用いてアカウント管理を行う仕組みである。すなわち、あるマシンから別のマシンのリソースにアクセスする(例:エクスプローラーにパス名を打ち込んでファイルやフォルダにアクセスする)場合、アクセス元のマシンとアクセス先のマシンで同一のユーザ名が登録されており、しかもアクセス先に登録されているパスワードを打ち込めばアクセスが許可される。
クライアントWindowsではワークグループはユーザ数が20以下(Windows 7)ないし10以下(それ以前)の場合しか利用できない。WindowsサーバやNASを使えばこの制限はない。
ワークグループはTCP/IPベースのNetBIOSにより通信を行っている。古いバージョンのWindowsではNetBEUIベースのNetBIOSでも通信できた。
Windows 10の場合、ワークグループの機能を使うには、「システムのプロパティ」でワークグループ名を事前に設定しておく必要がある。複数のマシンを同一のワークグループに置くには各マシンで同一のワークグループ名を登録する必要がある。同一のワークグループに属している場合のみファイル共有が可能である。なお同一のワークグループ内にあるマシンのコンピューター名は互いに異なっている必要がある。
さらに「ネットワークと共有センター」の「共有オプション」で「ネットワーク探索を有効にする」をチェックし、必要に応じ「ファイルとプリンターの共有を有効にする」もチェックする。
リソース公開側のマシンがゲストアカウントを許可していれば、ユーザ名がなくともパスワードだけ知っていればアクセスできる。特にパスワードを空に設定すれば誰でもアクセスできるようになるが、セキュリティ上危険である。
Windows 7で導入された新しい形態のワークグループネットワークであるが、Windows 10 (Version 1803) 以降では削除されている。
NTドメインという単位でマシンやアカウントなどを管理する仕組み。ユーザアカウント、グループアカウント、システムポリシーが利用可能。「ドメインコントローラー(DC)」と呼ばれるサーバーでユーザアカウントやグループアカウントを一括管理しており、DCに(ユーザないしグループ)アカウントがNTドメイン内でどのような権限(書き込み権限、読み込み権限など)を持つかを一度登録すればNTドメイン内の全てのマシンでこの登録情報が共有される。このためワークグループと違い、個々のマシンにユーザ登録する必要はない。
ただし、NTドメインやアカウント管理に階層構造がない事やアカウント数に上限があるといった欠点がある。
Active Directoryが登場したこともあり、Windows 2000以降は新規にNTドメインが利用される事はほとんどなくなった。
Active Directory(以下、AD)はユーザ、グループ、およびコンピュータアカウントを管理するディレクトリサービスである。マイクロソフトはソフトウェアとしてADを提供しているのみならず、Azure Active Directory(Azure AD)としてクラウド提供もしている。
ADはこれらのアカウントをActive Directoryドメイン(略してADドメイン、あるいは単にドメイン)としてまとめられる。さらに複数のドメインをツリー型の階層構造を持つドメインツリーとしてまとめられ、ドメイン・ツリー同士を結び合わせたフォレストを作る事ができる。Windows Server 2003以降ではフォレスト間の信頼関係(クロスフォレスト信頼)も設定可能である。
企業を例に取ると、例えば以下のように上記分類を利用できる:
ドメイン:部署
ドメインツリー:関西支社といった拠点
フォレスト:企業全体
各ドメインはドメインコントローラーというサーバで管理できる。ドメインコントローラーの主な役割は、ユーザアカウントを管理し、ユーザが自身の端末にログオンする際ADが管理しているユーザアカウント情報と照らし合わせてログオン認証することと、アカウントに特権・権利を認可する事である。
各ドメイン内のアカウントはOU(Organizational Unit、組織単位)という単位でまとめる事ができ、さらにOU内にOUをいれるなど階層的な管理も可能である。なお、OU毎に別の管理者を割り当て管理委任する事も可能である。
1つのドメインに複数のドメインコントローラーを設置してレプリケーションを行う事でドメインコントローラーの可用性や信頼性を向上する事ができる。なお、レプリケーションはマルチマスタである。
ドメイン内のアカウントの信頼関係はドメインコントローラーが制御する。
同一ドメイン・ツリー内の各ドメイン間には双方向かつ推移的な信頼関係が結ばれる。よってドメイン・ツリー内の他ののドメインのリソースへもアクセス可能になる。
同一フォレスト内の各フォレストツリーも双方向かつ推移的な信頼関係が結ばれている。
フォレスト間の信頼(クロスフォレスト信頼)は、一方向の信頼関係も双方向の信頼関係も築ける。また信頼関係は推移的にも非推移的にもできる。なおデフォルトは双方向かつ推移的な信頼である。ただし、ドメインコントローラーのレプリケーションがフォレストをまたいで行われる事はない。
Windowsではファイルシステム、ファイル共有、プリンター、レジストリ、グループポリシー、サービス、WMIなど様々な箇所にアクセス制御を導入している。
Windowsの標準ファイルシステムの一つであるNTFSではDACL(Discretionary Access Control List、随意アクセス制御)というアクセス制御機構を導入している。これはTCSECC2レベルセキュリティ(=コモンクライテリア・ISO/IEC15408のEAL3に対応)を実現するために導入されたものである。
NTFS DACLはリソースの所有者が任意にアクセス権を規定できるアクセス制御方式(任意アクセス制御方式)で、具体的にはファイルやフォルダの「プロパティ」から「セキュリティ」を選択する事でアクセス制御を設定できる。
アクセス制御は複数のACE(Access Control Entry)からなっており、各ACEは以下の4つの項目の組み合わせとして記述される:
「制御内容」として選択可能なのは以下の14種類である:「フォルダーのスキャンとファイルの実行」、「フォルダーの一覧/データの読み取り」、「属性の読み取り」、「拡張属性の読み取り」、「ファイルの作成/データの書き込み」、「フォルダーの作成/データの追加」、「属性の書き込み」、「拡張属性の書き込み」、「サブフォルダーとファイルの削除」、「削除」、「アクセス許可の読み取り」、「アクセス許可の変更」、「所有権の取得」、「同期」。
なお、アクセス制御設定画面の「簡易表示」では制御内容として「フルコントロール」、「変更」、「読み取りと実行」、「フォルダーの内容の一覧表示」、「読み取り」、「書き込み」があるが、これらは前述した14項目の組み合わせとして定義される。例えば「読み取り」は「フォルダーの一覧/データの読み取り」、「属性の読み取り」、「拡張属性の読み取り」、「アクセス許可の読み取り」、「同期」の5項目を全て「許可」にし、それ以外の9項目を全て「拒否」にするという設定である。
「適用先」に関しては、ACEを定義するのがファイルの場合はそのファイル自身が選択肢としてあるだけだが、ACLを定義するのがフォルダである場合は、そのフォルダに属するファイルやサブフォルダにACEの制御が継承されるか否かを決める必要がある。
ACEの継承関係は以下の3つのフラグでより規定される:
フラグが3つあるので、組み合わせは8通りあるが、フラグIOのみ立っているのは無意味なので、実際はこれを除いた7通りが選択肢となる。フォルダの「プロパティ」>「セキュリティ」で表示されるGUIベースのAECの設定では、この7通りの選択肢が以下のように表示される:
なお、アクセス権を全て拒否したとしても、そのリソースの所有者とCREATE OWNERグループのメンバーはそのリソースのアクセス権を変更できる。
cacls、icacls、Get-ACLのようなCUIベースのコマンドの場合は、前述したOI、CI、IO以外にさらに2つのフラグが表示される:
共有フォルダ(SMB・CIFSによるファイル共有)ではNTFS DACLとは別のACLにより共有アクセスのアクセス権を制御しており、このACLで付与されたアクセス権を共有アクセス権という。共有アクセス権は「共有フォルダのプロパティ>共有>詳細な共有」で設定可能。共有アクセス権とNTFS DACLのアクセス権が競合している場合は両者とも許可の場合のみアクセスが許可される。
Windows Server 8では任意アクセス制御であるDACLの他に強制アクセス制御であるCentral Access Policy(集約型アクセス ポリシー)が実装されている。
AzureではAzure RBACというロールベースアクセス制御が導入されている。
WebDAV(Web-based Distributed Authoring and Versioning、ウェブダブ)はマイクロソフトが開発したHTTP拡張で、「ファイル システムなどの格納媒体を HTTP 接続で使用可能にする、HTTP 1.1 規格の拡張機能」で、WebサーバのIISなどに実装されている。WebDEVでは以下のアクセス権を設定できる:
ディレクトリおよびファイルとそのプロパティの作成、変更、削除、および参照
ファイルおよびディレクトリのカスタム プロパティの保存および検索
AD環境ではグループアカウントを利用してアクセス制御を行うので、まずグループアカウントの種別について述べた後、AD環境のアクセス制御の基本方針である「AGUDLP」について述べる。
AGUDLPはAD環境においてロールベースアクセス制御を行うためのマイクロソフト推奨の方針である。ここでAGUDLPはAccount(アカウント)、Grobal group(グローバルグループ)、Universal group(ユニバーサルグループ)、Domain Local group(ドメインローカルグループ)、Permission(パーミッション)の頭文字を集めたもので、これらを以下のように用いるとよいと推奨している:
規模がより小さい企業では上述したA、G、U、DL、Pを全て用意する必要はなく、AUP、AGLP、AGDLPなどにする。
Windowsではユーザやプロセスの振る舞いを監査するため、監視者が予め指定した行為をユーザが行った場合には監査ログに記述する事ができる。
何を監査ログに書き込むのかは管理者が監査ポリシーとして事前にしてする必要がある。監査ポリシーはコンピュータの構成\Windows の設定\セキュリティの設定\ローカル ポリシー \監査ポリシーで閲覧・設定が可能である。監査ポリシーに記述可能なイベントとしては
Active Directoryのオブジェクトへのアクセスイベント
Active Directoryでは監査ポリシーはSACL(システムアクセス制御リスト)として記述される。
Window 10には以下の4通りのサインイン方法がある:
上記4種類のサインインのうち、PINは個々の端末にしか保管されない為、PINが漏洩しても攻撃者がユーザになりすまして他のPCからMicrosoft アカウントにサインインする事はできない。
またサインインの際、事前に指定した携帯電話やメール アドレスに送信されるセキュリティコードを入力する2 段階認証もできる。
Active Directoryはユーザ認証としてケルベロス認証とNTLM認証が利用可能である。ただし、NTLMは(バージョン1、2双方とも)認証プロトコルそれ自身がセキュリティ上脆弱である事が知られているので、その利用は推奨されない。クライアント端末がWindows 7以降であればケルベロス認証に対応しているのでNTLM認証を停止可能である。
Azure ADは多要素認証にも対応している。
Active Directoryはケルベロス認証により、ドメイン内のシングルサインオンを実現する。ドメイン連携の仕組みやADFS(Active Directoryフェデレーションサービス)というを使えば、ドメインの垣根を超えてシングルサインオンが可能になる。
Azure ADの場合はSAMLやOpenID Connectなどでシングルサインオンを実現している。
Azure ADはシングルサインオン機能のよりマイクロソフトを含む各社のクラウドアプリケーションと連携可能で、Azure AD経由でアクセス可能なクラウドアプリケーションは2000種類以上ある(2016年現在)。
またWindow 10では事前にAzure ADにアカウントを登録しておくと、ユーザが端末にサインインしたときに透過的にAzure ADからも認証され、Azure ADの連携サービスにシングルサインオンできる。
Microsoft アカウント(マイクロソフトアカウント、以前は Microsoft Wallet、Microsoft Passport、.NET Passport、Microsoft Passport Network、Windows Live ID)は、
マイクロソフトのウェブサイト(例:Outlook.com)
マイクロソフトのOS(例:Windows 10、Windows Phone、Xbox)が載っているデバイス
マイクロソフトのソフトウェア(例: Visual Studio、Skype)
にログインするためのシングルサインオンWebサービスである。OpenID、FIDO2をサポートしている。
AD環境のAGUDLPではグループ管理が煩雑になる事を踏まえて作られたユーザープロビジョニングサービス。「ID統合」を行うためのサービスで、特に「「IDのライフサイクル管理を行う」ことで、管理者の作業・監査における省力化を目的」としている。下記のように、何度か名称が変更されている:
Windowsにおけるユーザ権限は、シャットダウンやバックアップなどマシン全体に関わる権限である特権とローカルログインなど個々のユーザに関する権限である権利に分かれる。
ユーザの特権・権利はsecpol.msc(ローカル セキュリティ ポリシー)の「ユーザー権利の割り当て」から確認でき、グループポリシー(後述)はgpmc.msc(グループポリシーの管理)の「ユーザー権利の割り当て」から確認できる。
各マシンローカルなセキュリティ設定はローカルセキュリティポリシーと呼ばれ、secpol.mscツールを使えばアカウントに対してどのような特権・権利が与えられているかを確認できる。
ADではグループポリシーという機能を用いて各ユーザアカウントの各端末における特権・権利を一括で設定できる。グループポリシーの管理はgpmc.mscツールを用いて管理できる。
各グループポリシーはGPO(グループポリシーオブジェクト)とリンクからなる。GPOにはユーザアカウントや端末に認可(ないし禁止)したい特権・権利を指定し、リンクはGPOを適用するOUを指定する。ユーザアカウントからなるOUやコンピュータアカウントからなるOUをリンクに指定する事で、ユーザや端末の特権・権利を一括で設定できる。
GPOとしては例えば以下のものが設定可能である:
セキュリティ周りでは例えば以下のものが設定可能である:
グループポリシーはGPMCというツールで管理する事ができる。
なお、Windows ServerにはセキュリティポリシーテンプレートというGPOの雛形が%SystemRoot%\Security\Templatesに複数置いてあるので、必要に応じてテンプレートの中身を書き換えて自組織の環境用にカスタマイズした上でテンプレートをGPOに読み込む事で容易にポリシーを設定できる。
AppLockerはアプリケーションの実行の許可・不許可を設定できるツールである。具体的には、「「実行可能ファイル(EXE)」「Windowsインストーラ・ファイル」「スクリプト」「DLL」の各カテゴリに対して、それぞれ「ファイルのパス」「ハッシュ値」「発行元(デジタル署名)」を設定し、これに「許可」「拒否」「例外」という3種類のルールが適用できる」。「AppLockerによるプログラムの実行制御は、ローカル・セキュリティ・ポリシーかグループ・ポリシーを使って行う」。
またApplockerでは「規則の実施」か「監査のみ」を選ぶことができ、前者を選ぶと実行の許可・不許可がAppLockerにより制御されるが、後者を選んだ場合には、AppLockerは実行を制御せず、実行結果がログに記載されるのみである。
Security Compliance Toolkitはマイクロソフト内外の専門家のフィードバックに基づいてベストプラクティスをまとめたセキュリティベースラインで、マイクロソフトが過去に公開していたベストプラクティス集Security Compliance Managerを置き換えるものである。各セキュリティ分野別の推奨設定がスプレッドシート形式で記載されており、分析テスト機能を使うと必要なGPO、テンプレート、クライアントインストールスクリプトが入手できる。
またSecurity Compliance Toolkitのページから、マイクロソフトのポリシーアナライザツールや、ローカルWindowsポリシーを管理する「Local Group Policy Object Utility」もダウンロードできる」。
BitLockerBitLockerはディスク全体を暗号化することができるセキュリティ機能。他のPCにディスクを接続されても、中身を読むことはできない。コンピューターにTrusted Platform Module(TPM)が搭載されていれば、それを使用して暗号化を行う。BitLocker To GoはUSBメモリなどのリムーバブル・ディスクの暗号化を行える。
Encrypting File System(EFS)はNTFSバージョン3.0で追加された機能で、レベルでの暗号化を提供する。この技術はコンピューターに物理的にアクセスする攻撃者から機密データを保護するために、ファイルの透過的暗号化を実現する。
Window 10では下記の仕組みによりブートキットやその他ルートキットに感染するのを防いでいる:
Microsoft Defenderはその内容が時とともに変化したが、2018年現在はマイクロソフトがWindows向けに提供するセキュリティ機能のシリーズ名で、下記のものを含んでいる:
2009年9月29日~2020年1月14日にWindows XP, Vista, 7向けに提供していたアンチウイルスソフトウェア。
VBSVBS(Virtualization-Based Security、仮想化ベースのセキュリティ)は仮想化基盤Hyper-Vを利用したハイパーバイザーベースのセキュリティ技術で、Windows Defender System Guardともいう。ハイパーバイザーが通常のWindows OS自身を1つの仮想マシンとして実行し、それとは別にもう一つの仮想マシンVSM(Virtual Secure Mode)を実行する。Windows OSとVSMはハイパーバイザーレベルで分離されている為、Windows OS側の特権が攻撃者に乗っ取られても、VSM側は乗っ取られない。
そこでVBSではVSMにWindows OS自身よりも高い特権レベルを要求する操作を割り振っており、Windows OS、VSMの特権レベルをそれぞれVTL 0、VTL 1という(VTLはVirtual Trust Levelの略)。(リングプロテクションと違い、数字が大きいほど特権レベルが高い事に注意)。
VTL 0、VTL 1はリングプロテクションのRing 0、Ring 3とは独立した特権レベル概念であり、VTLが0か1か、リングプロテクションレベルが0か3かの組み合わせで計4つの特権レベルがある事になる。
WindowsではVBSを使うことで以下の3つのセキュリティ機能を実現している:
Windows 10 Fall Creators Update(バージョン1709)ではDevice Guardに代わる機能としてWindows Defender Application Guard(WDAG)が導入されている。WDAGと並び、AppLockerもWindowsが持つもう一つのアプリケーションホワイトリスト機能であるが、両者はいわば補完関係にある。WDAGは自組織にとって可能な制限レベルに対してのみ強制すべきで、それより低いレベルに関してはAppLockerによる保護で補完する。
マイクロソフトでは、自社が提供するWindows、Microsoft Officeなどのソフトウェアの更新プログラム(パッチ)、およびデバイスドライバのダウンロードと更新を行うためサービスであるWindows Updateを提供している。
個人用の端末の場合には、マイクロソフトが提供するWindows Updateのサイトから直接更新プログラムを入手するが、企業などではWSUSという中間サーバを社内に立て、WSUSが代表してマイクロソフトから更新プログラムを取り寄せ、各社員の端末はWSUSから更新プログラムを取り寄せる構成にするケースも多い。このような構成を取る目的は、企業の側が社員のPCにおける更新プログラムの適用状況を把握したり、マイクロソフトからの更新プログラムのダウンロードによる通信帯域の圧迫を避けたりする事にある。
Window UpdateやWSUSはバックグラウンドでBITS(Background Intelligent Transfer Service、バックグラウンド インテリジェント転送サービス)という仕組みを用いている。これはアイドル中のネットワーク回線の帯域幅を使用し、非同期にマシン間のファイル転送を行う事を可能にする。
WSUS(読みはダブルサス。Windows Server Update Services、ウィンドウズサーバーアップデートサービス)は、更新プログラムやデバイスドライバなどの適用制御用のサーバ・アプリケーションである。
クライアントPCは、グループポリシーまたはレジストリによって指定されたWSUSサーバに対して、指定された時間間隔(既定値は約22時間間隔)でアクセスしてローカルにダウンロードし、「自動更新」コンポーネントに表示する。なおダウンロードのタイミングは指定できない。
またユーザがクライアントPCにログインしていなくても更新プログラムのダウンロードや適用を行うよう設定可能である。
更新プログラムの適用が完了すると、クライアントPCは適用ステータスをWSUSサーバ(グループポリシー設定での名称は「イントラネット統計サーバ」)に報告する。WSUSサーバでは、このステータス報告をもとに更新プログラムやクライアントPCごとのレポートを作成する。
更新プログラムのダウンロードはBackground Intelligent Transfer Service (BITS) が実行しており、利用可能なネットワーク帯域に応じて回線がパンクしないように、また更新データの配布によって回線を独占し、ネットワークが使用不可になるような状況にならないように、通信量が自動的に調整される。
WSUS管理者は、管理コンソール上で更新プログラムをどのように配布するか制御する事ができる。配布を許可する場合、更新プログラムに対して「承認」の作業を行う事が必要になる。WSUS 2.0 (SP1) においては、承認には以下の4つの状態がある。
WSUSでは、クライアントPCを「コンピュータ・グループ」という任意の管理グループに分類して、グループ毎に更新プログラムの承認を行う事が可能である。コンピュータ・グループの登録とグループ分けは、管理画面で管理者が手動で行うか、グループポリシーまたはレジストリによってクライアントPCに対して設定することで行う。
コンピュータ・グループによって、きめ細かな更新プログラムの適用管理が可能になる。例えば、更新プログラムをまず適用試験用のPCに適用して評価を行い、安全を確認した後に一般のクライアントPCに対して配布する、といった適用制御が容易に可能になる。
クライアントPCから報告されるステータス情報やWSUSサーバ自身のステータス情報を元に、WSUS 3.0 (SP1) では、以下のレポートを作成できる:
以下の種類の更新プログラムを配布する事ができる(2008年7月末日現在)。
Feature Packs : 新しく公開された機能。通常は時期リリース製品に含まれる。
Service Packs
セキュリティ問題の修正プログラム : 製品のセキュリティホールを修正する更新プログラム。
ツール : ユーティリティ類
ドライバ : デバイスドライバ
更新 : 重要性が低く、セキュリティに関連しない不具合を修正するための更新プログラム。
修正プログラム集 : 複数のホットフィックスやセキュリティ修正プログラムなどを集約した更新プログラム。
重要な更新 : 重要性が高く、セキュリティに関連しない不具合を修正するための更新プログラム。
定義自動更新プログラム : Windows DefenderやForefront Client Securityなどの定義ファイル。
Windowsにはバックアップを取る方法がいくつかある。