・ログとレジストリの保護 のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- ・ログとレジストリの保護 へ行く。
ログの保護 †
基本的な考え方 †
攻撃の痕跡から検出されることを避けるために、攻撃者はログの改ざん、消去を行います。従って、攻撃の検出・分析を行うためにログの保護は極めて重要な戦術といえます。
ログの保護は、コンピュータの役割と機能、ログのアクセス権、保存とバックアップの観点から検討します。
コンピュータの役割と機能 †
Windows サーバー と Windows クライアント は非常に多くの機能を有しており、Windows 独自形式の Event Log と、RFC/W3C で定められた形式のログを出力します。そのため、コンピュータに与えられた役割と機能によって、セキュリティ監査の観点から出力されるログを整理する必要があります。
役割・機能 | ログの有効化 | 保存場所 |
Domain Controller File Server | ・DC 監査ポリシーの詳細な構成および・DC管理用テンプレートを参照してください。 | %systemroot%\System32\winevt\Logs\Security.evtx |
DNS サーバー | DNSログ | %systemroot%\System32\winevt\Logs\DNS Server.evtx |
DHCPサーバー | DHCPログ | %systemroot%\System32\Dhcp\DhcpSrvLog-*.log |
IIS | Webログ、FTPログ | %SystemDrive%\Inetpub\Logs\Logfiles\W3SVC1\*.log |
Network Policy Server (RADIUS) | ユーザー認証およびアカウンティング要求ログ(テキスト、SQL) | %systemroot%\System32\LogFiles\IN*.log |
Windows ファイアウォール | ・L1 セキュリティが強化されたWindowsファイアウォール | %systemroot%\system32\LogFiles\Firewal\pfirewall.log |
Event Log のアクセス権 †
すべてのEvent Log のアクセス権(ファイルのプロパティのセキュリティタブ)の設定は、以下のユーザー、グループに与えられていなければなりません。これ以外の文書化されていないユーザーやグループが登録されていた場合は、何らかの特権昇格した上での侵害の可能性を疑う必要があります。
グループ名またはユーザー名 | アクセス許可 |
Eventlog | フルコントロール |
SYSTEM | |
Domain\Administrators |
また、DNS、DHCP等のログのアクセス権は、保守運用のオペレーターを含めて個別に検討する必要がありますが、権限最小化の考え方から、SYSTEM、Domain\Administrators を基本にして、限定的に ServerOperators などに付与することを検討して下さい。
保存とバックアップ †
Event Log は初期値で 1Mbyte を超えた場合、上書きという設定になっています。このため、サーバーや端末を構築した場合は、すぐにグループポリシーを適用し、既定の容量を超えた場合は、上書きせずに保存するようにしなければなりません。メンバーサーバー等でドメインに参加しない場合は、構築直後に、手動で Event Log のプロパティを設定する必要があります。特に、セキュリティログは認証、認可の情報が書き込まれるため、優先的に設定を施すべきです。
- リアルタイムでの転送 米国国防総省の Security Technical Implementation Guide (STIG) では、システムの監査レコードをリアルタイムで他のシステムに転送すべき、としています。リアルタイムで転送することで、ログの改ざんを免れ、正しい検知ができるとの判断です。ただし、大規模システムの場合、ネットワークの負荷も高くなることから、SIEM との統合を見据えて検討すべきです。
- Event Log の保存サイズ セキュリティログは大量のログが書き込まれるため、保存サイズを大きくしますが、100GByte を超える設定をすると、イベントビューワーでの閲覧も困難になる場合が出てきます。一方で、小さい Event Log では、全体の流れや事象を判断することが難しくなります。手動で監査を行う場合は、100GByteを上限とし、SIEM や専用の分析ツールを使用する場合は分析するシステムに応じたサイズを設定して下さい。
Event Log 関連のツール †
Event Log はバイナリ形式であり、ツールを使いわない限り内容を確認することはできません。そのため、イベントログ関連のツールもしくはサードパーティーのイベントログビューワーが必要です。また、.Net もしくは Win32 インターフェースからアクセスが可能です。
GUI †
- イベントビューアー
- Log Parser Studio.Exe
- MessageAnalyzer.Exe (現在はダウンロードできません)
コマンドライン †
- wevtutil.Exe
- WMIC.Exe
- Logparser.Exe
- PowerShell Get-EventLogコマンドレット
レジストリの保護 †
基本的な考え方 †
MITRE ATT&CK では、 Modify Registry : https://attack.mitre.org/techniques/T1112/ として採番されているように、攻撃者にとってレジストリは、様々な利用方法がある魅力的なストレージという事ができます。例えば、永続性を確保するため、悪意のあるプログラムをファイル形式で保存せずに、レジストリにデータとして書き込み、スタートアップでレジストリから自分自身を読み出しメモリ上で実行したり、収集した情報を保存する場合があります。
従って、レジストリに対するアクセス権の監査と、変更があった場合の検出の観点から検討します。
レジストリハイブのアクセス権の監査 †
1. 管理者権限で立ち上げたコマンドプロンプトから、regiedit.exe を実行します。
2. [コンピュータ]>[HKEY_LOCAL_MACHINE]>[SECURITY] で右クリックし、[アクセス許可] をクリックし、[詳細設定] をクリックします。
3. 次のアクセス許可を確認します。基本的に規定値を維持します。
種類 | プリンシパル | アクセス | 継承元 | 適用先 |
許可 | SYSTEM | フルコントロール | なし | このキーとサブキー |
許可 | Administrators | 特殊 | なし | このキーとサブキー |
4. [コンピュータ]>[HKEY_LOCAL_MACHINE]>[SOFTWARE] で右クリックし、[アクセス許可] をクリックし、[詳細設定] をクリックします。
5. 次のアクセス許可を確認します。基本的に規定値を維持します。
種類 | プリンシパル | アクセス | 継承元 | 適用先 |
許可 | Users | 読み取り | なし | このキーとサブキー |
許可 | SYSTEM | フルコントロール | なし | このキーとサブキー |
許可 | Administrators | 特殊 | なし | このキーとサブキー |
許可 | CREATOR OWNER | フルコントロール | なし | このキーとサブキー |
許可 | ALL APPLICATION PACKAGES | 読み取り | なし | このキーとサブキー |
6. [コンピュータ]>[HKEY_LOCAL_MACHINE]>[SYSTEM] で右クリックし、[アクセス許可] をクリックし、[詳細設定] をクリックします。
7. 次のアクセス許可を確認します。基本的に規定値を維持します。
種類 | プリンシパル | アクセス | 継承元 | 適用先 |
許可 | Users | 読み取り | なし | このキーとサブキー |
許可 | SYSTEM | フルコントロール | なし | このキーとサブキー |
許可 | Administrators | 特殊 | なし | このキーとサブキー |
許可 | CREATOR OWNER | フルコントロール | なし | このキーとサブキー |
許可 | ALL APPLICATION PACKAGES | 読み取り | なし | このキーとサブキー |
リモートレジストリサービスを無効にする †
リモートレジストリサービスによって、リモートから操作される可能性があります。Windows サービスの Remote Registry が無効になっていることを確認します。
コントロールパネルからサービスを起動し、 RemoteRegistry が無効になっているかを確認するか、以下のコマンドを実行します。
C:\Windows\system32>sc query RemoteRegistry
SERVICE_NAME: RemoteRegistry TYPE : 20 WIN32_SHARE_PROCESS STATE : 1 STOPPED WIN32_EXIT_CODE : 1077 (0x435) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0
STATE が STOOPED になっていることを確認します。