Tech-Blogカテゴリにおけるサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。

当記事では、LogStare Collector(以下、LSCと記載)の機能を利用して、LinuxのAudit.logを監視する方法について設定例を交えた説明を記載します。

前提条件

当記事内の説明は下記前提にて検証した内容になります。

設定(Linux側)

Auditルールの追加方法

Auditルールの追加方法には、ルール追加後にauditdサービスを再起動すると追加したルールが消失する一時的なルール追加方法と、auditdサービスを再起動しても追加したルールが消失しない永続的なルール追加方法の2種類ございます。

一時的なAuditルール追加方法

auditctlコマンドを使用します。auditctlに続けて追加したいルールを記述しエンターキーを押下します。
下記は/etc/sudoersファイルに対して属性変更があった場合、ログとして記録するルールをauditctlコマンドにて追加する方法です。

  • auditctlにて現在のAuditルールを確認します。※現在の設定によってコマンドの実行結果は下記内容と異なります。

  • auditctlにて追加したいルールを設定します。

  • auditctlにて追加されたルールを確認します。

永続的なAuditルール追加方法

OS再起動後も追加したAuditルール設定を永続的に反映させるには、/etc/audit/rules.d/配下のファイルにて設定したいAuditルールを追記し、augenrulesコマンドにてルールを読み込む必要があります。
下記はシステムコール「execve」が呼び出された場合、ログとして記録するルールを/etc/audit/rules.d/配下のファイルに追記してaugenrulesコマンドにてルールを読み込むための方法です。

  • /etc/audit/rules.d/配下のファイルを確認します。

  • audit.rulesファイルのバックアップを取得します。

  • auditctlにて現在のAuditルールを確認します。
    ※現在の設定によってコマンドの実行結果は下記内容と異なります。

  • audit.rulesファイルに追加したいルールを追記します。※バージョンによってファイルの中身は異なります。

変更前

変更後

  • augenrulesにて追加したルールを読み込みます。

  • auditctlにて追加されたルールを確認します。

ファイル/ディレクトリアクセス監視のルール設定

特定のファイルまたはディレクトリへのアクセスを監視するためのルール設定について説明します。ファイル/ディレクトリアクセス監視のルールを定義するためには下記の構文を使用します。

構文内の各設定について

-w path_to_file : 監視対象としたディレクトリもしくはファイルパスをpath_to_fileの部分に記載します。
下記は/etc/sudoersを監視対象とする場合の設定例です。

-p permissions : ログ出力対象とするパーミッションを設定します。パーミッションは下記の4種類から選択できます。

  • r : ファイルまたはディレクトリーへの読み取りアクセス。
  • w : ファイルまたはディレクトリーへの書き込みアクセス。
  • x : ファイルまたはディレクトリーへの実行アクセス。
  • a : ファイルまたはディレクトリーへの属性変更。

下記は監視対象とした/etc/sudoersに対して読み取りもしくは属性変更が場合、ログとして記録する設定例です。

-k key_name : どのルールにてログが記録されたかを特定する際に役立つオプションです。
下記は監視対象とした/etc/sudoersに対して読み取りもしくは属性変更が発生した場合、記録されるログメッセージ内に「key=sudoers」という文字列を含ませる設定例です。

システムコール監視のルール設定

特定のシステムコールが発生した時にログ出力するためのルール設定について説明します。システムコール監視のルールを定義するためには下記の構文を使用します。

構文内の各設定について

-a action,filter : 特定のイベントについてログを記録するかどうか、タイミングを指定します。

action:ログ記録の有無を設定できます。下記の2種類より選択します。

  • always : ログを記録します。
  • never : ログを記録しません。

filter:フィルターは、「task」「exit」「user」「exclude」の4種類から選択できます。通常、「exit」を選択します。
下記は特定のシステムコールを監視する場合の設定例です。

-S system_call : ログに記録するシステムコールを選択します。複数のシステムコールを指定する場合、一つのシステムコール毎に-Sを記載します。すべてのシステムコールを対象とする場合、「-S all」と記載します。
下記はシステムコール「execve」「clone」を監視対象とする場合の設定例です。
※システムコールは英字もしくは数字にて指定します。

-F field=value : 当項目にて設定した要素と合致したイベントのみログに記録されます。
下記はシステムコール「execve」「clone」かつユーザIDが1000以上のイベントを監視対象とする場合、ログとして記録する設定例です。
※システムコール監視のルールを設定する際、エラーメッセージとして、「WARNING – 32/64 bit syscall mismatch in line XX, you should specify an arch」と出力される場合があります。その場合、-Sの前に「-F arch=b32」もしくは「-F arch=b64」を挿入する必要があります。

-k key_name : どのルールにてログが記録されたかを特定する際に役立つオプションです。
下記はシステムコールが「execve」「clone」で、ユーザIDが1000以上のイベントが発生した場合、記録されるログメッセージ内に「key=actions」という文字列を含ませる設定例です。

Audit.logのLSCへの出力方法

設定方法についての詳細は以下の記事をご参照ください。
Audit.logをsyslogを利用して収集する方法

その他

SELinux有効時のログについて

SELinux有効時と無効時ではログメッセージの中身が異なります。
下記はSELinux有効時のログサンプルです。

下記はSELinux無効時のログサンプルです。

違いとしてSELinux有効時のみログメッセージ内に追加される項目が存在することが挙げられます。

ログフォーマットの変更方法について

Audit.logのログフォーマットには「RAW」と「ENRICHED」があります。初期設定では「RAW」が選択されています。
下記はログフォーマット「RAW」のログサンプルです。

下記はログフォーマット「ENRICHED」のログサンプルです。

違いとしてログフォーマット「RAW」にはフィールド「type」の前にフィールド「node」という項目が含まれますが、ログフォーマット「ENRICHED」にフィールド「node」という項目は含まれません。また、ログフォーマット「ENRICHED」では、ユーザIDやグループID等が数字からテキストに変換された形式のメッセージが付与されています。

下記はAudit.logのログフォーマットの変更方法についての説明となります。

  • auditd.confファイルのバックアップを取得します。

  • 「RAW」を「ENRICHED」へ変更します。変更箇所は「log_format」です。

変更前

変更後

  • サービスを再起動します。

設定(LSC側)

基本設定

設定方法についての詳細は以下の記事をご参照ください。
Audit.logをsyslogを利用して収集する方法

ログ監視設定

監視・収集より監視したい機器を選択し、テキストマッチング文字列の欄に通知を受けたいログで使用される文字列を、設定名欄に説明を設定します。
設定方法についての詳細は下記の記事をご参照ください。
テキストマッチングについて

以下は「ログイン失敗」と「sudoコマンド使用」のログを検知する場合の設定例になります。

 

以下はテキストマッチングにて設定した文字列を検知して、「ログイン失敗」としてアラートメールにて通知されたものです。

以下はテキストマッチングにて設定した文字列を検知して、「sudoコマンドの使用」としてアラートメールにて通知されたものです。

以上でテキストマッチングを利用したAudit.logの監視についての説明は終了となります。

 


この情報の発信者

セキュアヴェイルグループ(SecuAvail Inc. | CareAvail Inc. | LogStare Inc.)