MYSQL ログを収集する
このドキュメントでは、Bindplane を使用して MYSQL ログを Google Security Operations に取り込む方法について説明します。パーサーは、まず grok
を使用して MySQL SYSLOG メッセージから共通フィールドを抽出します。次に、条件分岐(if
、else if
)と正規表現照合を使用して、ログメッセージ内の特定のイベントタイプを特定し、関連情報を抽出して統合データモデル(UDM)スキーマにマッピングします。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows 2016 以降、または
systemd
を使用する Linux ホスト - プロキシの背後で実行されている場合、ファイアウォール ポートが開いている
- MySQL ホストへの特権アクセス
- MySQL DB と Rsyslog をインストールしました
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindlane エージェントをインストールする
Windows のインストール
- 管理者として コマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux のインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
その他のインストール リソース
その他のインストール オプションについては、インストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
- 構成ファイルにアクセスします。
config.yaml
ファイルを見つけます。通常、Linux では/etc/bindplane-agent/
ディレクトリに、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano
、vi
、メモ帳など)を使用してファイルを開きます。
config.yaml
ファイルを次のように編集します。receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: 'MYSQL' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
<customer_id>
は、実際の顧客 ID に置き換えます。/path/to/ingestion-authentication-file.json
の値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart bindplane-agent
Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
MySQL で Syslog を構成する
SSH を使用して MySQL ホストにログインします。
MySQL データベースに接続します。
mysql -u root -p
server_audit.so
監査プラグインを確認します。show variables like 'plugin_dir';
プラグインのディレクトリにプラグイン ファイルが見つからない場合は、次のコマンドを使用してプラグインをインストールします。
install plugin server_audit soname 'server_audit.so';
プラグインがインストールされ、有効になっていることを確認します。
show plugins;
vi
を使用して/etc/my.cnf
ファイルを編集し、次を有効にしてファイルを保存します。server_audit_events='CONNECT,QUERY,TABLE' server_audit_file_path=server_audit.log server_audit_logging=ON server_audit_output_type=SYSLOG server_audit_syslog_facility=LOG_LOCAL6
次のコマンドを使用して、監査変数を確認します。
show global variables like "server_audit%";
次のコマンドを使用して、監査が有効になっていることを確認します。
Show global status like 'server_audit%';
vi
を使用してファイル/etc/rsyslog.conf
を編集し、UDP の使用を有効にしてファイルを保存します。*.* @@<bindplane-agent-ip>:<bindplane-agent-port>
<bindplane-agent-ip>
と<bindplane-agent-port>
は、Bindplane エージェントの構成に置き換えます。MySQL サービスを再起動し、MySQL データベースに接続します。
/etc/init.d/mysqld restart
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
アクション | read_only_udm.metadata.event_type | 値が Created の場合は FILE_CREATION、値が Deleted の場合は FILE_DELETION、それ以外の場合は変更なし。 |
データベース | read_only_udm.target.resource.parent | |
db_hostname | read_only_udm.target.hostname | |
db_user | read_only_udm.target.user.userid | |
説明 | read_only_udm.security_result.description | |
error_details | これは一時変数なので無視してください | |
error_level | read_only_udm.security_result.severity | 値が error の場合は ERROR、値が warning の場合は MEDIUM、値が note の場合は INFORMATIONAL になります。それ以外の場合は変更されません。 |
error_message | read_only_udm.security_result.summary | |
file_path | read_only_udm.target.file.full_path | |
file_size | read_only_udm.target.file.size | |
hostname | read_only_udm.principal.hostname | |
inner_message | read_only_udm.security_result.description | |
概要 | read_only_udm.metadata.product_event_type | |
テーブル | read_only_udm.target.resource.name | |
table_not_found | これは一時変数なので無視してください | |
timestamp | read_only_udm.metadata.event_timestamp | |
read_only_udm.extensions.auth.type | 静的な値 - MACHINE |
|
read_only_udm.metadata.event_type | 静的値 - USER_LOGIN 、GENERIC_EVENT 、STATUS_UPDATE 、FILE_CREATION 、FILE_DELETION |
|
read_only_udm.metadata.log_type | 静的な値 - MYSQL |
|
read_only_udm.metadata.product_name | 静的な値 - MySQL |
|
read_only_udm.metadata.vendor_name | 静的な値 - Oracle Corporation |
|
read_only_udm.security_result.action | 静的な値 - BLOCK |
|
read_only_udm.target.resource.resource_type | 静的な値 - DATABASE 、TABLE |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。