Synology のログを収集する
概要
このパーサーは、grok パターンを使用して Synology SYSLOG メッセージからフィールドを抽出し、UDM にマッピングします。さまざまなログ形式を処理し、ユーザー ログインとリソース アクセスを特定して、キーワードに基づいてイベントを分類し、ベンダーとプロダクトの情報でデータを拡充します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス。
- Synology DSM への特権アクセス。
フィードを設定する
フィードを構成する手順は次のとおりです。
- [SIEM Settings] > [Feeds] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一のフィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Synology Logs)。
- [Source type] として [Webhook] を選択します。
- [ログタイプ] として [Synology] を選択します。
- [次へ] をクリックします。
- 省略可: 次の入力パラメータの値を指定します。
- Split delimiter: ログ行を区切るために使用される区切り文字(\nなど)。
- Asset namespace: アセットの名前空間。
- Ingestion labels: このフィードのイベントに適用されるラベル。
 
- Split delimiter: ログ行を区切るために使用される区切り文字(
- [次へ] をクリックします。
- [Finalize] 画面でフィードの設定を確認し、[Submit] をクリックします。
- [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
- 秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、その場合以前の秘密鍵は無効になります。
- [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。 このエンドポイント URL をクライアント アプリケーション内で指定する必要があります。
- [完了] をクリックします。
Webhook フィード用の API キーを作成する
- Google Cloud コンソール > [認証情報] に移動します。 
- [認証情報を作成] をクリックして [API キー] を選択します。 
- API キーのアクセスを Google Security Operations API に制限します。 
エンドポイント URL を指定する
- クライアント アプリケーション内で、Webhook フィードで提供される HTTPS エンドポイント URL を指定します。
- 次の形式でカスタム ヘッダーの一部として API キーと秘密鍵を指定して、認証を有効にします。 - X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET- 推奨事項: API キーは URL 内で指定するのではなくヘッダーとして指定してください。 
- Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーと秘密鍵を指定できます。 - ENDPOINT_URL?key=API_KEY&secret=SECRET- 以下を置き換えます。 - ENDPOINT_URL: フィード エンドポイントの URL。
- API_KEY: Google Security Operations に対する認証に使用する API キー。
- SECRET: フィードの認証用に生成した秘密鍵。
 
Google SecOps 用に Synology で Webhook を作成する
- Synology NAS の DiskStation Manager(DSM)にログインします。
- [コントロール パネル] > [通知] > [Webhook] に移動します。
- [追加] をクリックします。
- 次のパラメータの値を指定します。 - プロバイダ: [カスタム] を選択します。
- ルール: Webhook で送信するメッセージの種類を選択します。 
- [次へ] をクリックします。 
- プロバイダ名: Webhook にわかりやすい名前を付けます(例: Google SecOps)。 
- 件名: 通知メッセージのプレフィックスとして追加されます。 
- Webhook URL: ENDPOINT_URL と入力します。 
- [通知メッセージを英語で送信する] を選択します。 
- [次へ] をクリックします。 
- HTTP Method: [POST] を選択します。 
- ヘッダー X-Webhook-Access-Key を追加し、値に SECRET を指定します。 
- API_KEY 値を使用して、ヘッダー X-goog-api-key を追加します。 
- [適用] をクリックします。 
 
- [適用] をクリックして、Webhook を保存します。 
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック | 
|---|---|---|
| app | target.application | grok フィルタによって抽出された appフィールドの値がtarget.applicationに割り当てられます。 | 
| desc | metadata.description | grok フィルタによって抽出された descフィールドの値がmetadata.descriptionに割り当てられます。 | 
| desc | target.file.names | descフィールドに「Closed)」が含まれている場合、かっこ内のファイルパスが抽出され、target.file.namesに割り当てられます。descフィールドに「accessed shared folder」が含まれている場合、角かっこ内のフォルダパスが抽出され、target.file.namesに割り当てられます。 | 
| host | principal.hostname | host_and_ipフィールドから grok フィルタによって抽出されたhostフィールドの値がprincipal.hostnameに割り当てられます。 | 
| host_and_ip | principal.ip | host_and_ipフィールドが解析されます。IP アドレス(ip1)が見つかった場合は、principal.ipに割り当てられます。2 つ目の IP アドレス(ip2)が見つかった場合は、principal.ipにも追加されます。 | 
| intermediary_host | intermediary.hostname | grok フィルタによって抽出された intermediary_hostフィールドの値がintermediary.hostnameに割り当てられます。メッセージに「signed in」または「sign in」が含まれている場合、extensions内に空のauthオブジェクトが作成されます。未加工ログのcollection_timeフィールドのタイムスタンプが使用されます。メッセージに「signed in」または「sign in」が含まれている場合、値はUSER_LOGINに設定されます。メッセージに「accessed shared folder」が含まれている場合、値はUSER_RESOURCE_ACCESSに設定されます。それ以外の場合は、デフォルトでGENERIC_EVENTになります。grok フィルタによって抽出されたtypeフィールドの値がmetadata.product_event_typeに割り当てられます。値は静的に「SYNOLOGY」に設定されます。値は静的に「SYNOLOGY」に設定されます。メッセージに「failed to sign」が含まれている場合、値はBLOCKに設定されます。メッセージに「success」が含まれている場合、値はALLOWに設定されます。severityフィールド(Grok によって抽出)が「INFO」の場合、値はINFORMATIONALに設定されます。 | 
| severity | security_result.severity | grok フィルタによって抽出された severityフィールドの値は、security_result.severityの決定に使用されます。値が「INFO」の場合、「INFORMATIONAL」にマッピングされます。 | 
| time | metadata.event_timestamp | grok フィルタによって抽出された timeフィールドが解析され、タイムスタンプに変換されます。このタイムスタンプはmetadata.event_timestampに割り当てられます。 | 
| type | metadata.product_event_type | grok フィルタによって抽出された typeフィールドの値がmetadata.product_event_typeに割り当てられます。 | 
| user | target.administrative_domain | ドメインが userフィールドから抽出されると、target.administrative_domainに割り当てられます。 | 
| user | target.user.userid | userフィールドのユーザー名部分(存在する場合は「\」の前)が抽出され、target.user.useridに割り当てられます。未加工ログのcollection_timeフィールドのタイムスタンプが使用されます。 | 
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。