Collecter les journaux Synology
Présentation
Cet analyseur extrait des champs des messages SYSLOG Synology à l'aide de modèles Grok, et les met en correspondance avec l'UDM. Il gère différents formats de journaux, identifie les connexions des utilisateurs et l'accès aux ressources, et catégorise les événements en fonction de mots clés, en enrichissant les données avec des informations sur les fournisseurs et les produits.
Avant de commencer
- Assurez-vous de disposer d'une instance Google SecOps.
- Assurez-vous de disposer d'un accès privilégié à Synology DSM.
Configurer un flux dans Google SecOps pour ingérer les journaux Synology
- Accédez à Paramètres du SIEM > Flux.
- Cliquez sur Ajouter.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Synology Logs).
- Sélectionnez Webhook comme type de source.
- Sélectionnez Synology comme Type de journal.
- Cliquez sur Suivant.
- Facultatif: spécifiez des valeurs pour les paramètres d'entrée suivants :
- Délimiteur de fractionnement: délimiteur utilisé pour séparer les lignes de journal, par exemple
\n
. - Espace de noms des éléments: espace de noms des éléments.
- Libellés d'ingestion: libellé appliqué aux événements de ce flux.
- Délimiteur de fractionnement: délimiteur utilisé pour séparer les lignes de journal, par exemple
- Cliquez sur Suivant.
- Vérifiez la configuration du flux dans l'écran Finaliser, puis cliquez sur Envoyer.
- Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
- Copiez et stockez la clé secrète. Vous ne pourrez plus afficher cette clé secrète. Si nécessaire, vous pouvez générer une nouvelle clé secrète, mais cette action rend l'ancienne clé secrète obsolète.
- Dans l'onglet Détails, copiez l'URL du point de terminaison du flux dans le champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
- Cliquez sur OK.
Créer une clé API pour le flux webhook
Accédez à la console Google Cloud > Identifiants.
Cliquez sur Créer des identifiants, puis sélectionnez Clé API.
Limitez l'accès de la clé API à l'API Google Security Operations.
Spécifier l'URL du point de terminaison
- Dans votre application cliente, spécifiez l'URL du point de terminaison HTTPS fournie dans le flux de webhook.
Activez l'authentification en spécifiant la clé API et la clé secrète dans l'en-tête personnalisé au format suivant:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Recommandation: Spécifiez la clé API en tant qu'en-tête plutôt que dans l'URL.
Si votre client webhook n'est pas compatible avec les en-têtes personnalisés, vous pouvez spécifier la clé API et la clé secrète à l'aide de paramètres de requête au format suivant:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Remplacez les éléments suivants :
ENDPOINT_URL
: URL du point de terminaison du flux.API_KEY
: clé API permettant de s'authentifier auprès de Google Security Operations.SECRET
: clé secrète que vous avez générée pour authentifier le flux.
Créer un webhook dans Synology pour Google SecOps
- Connectez-vous à DiskStation Manager (DSM) sur votre NAS Synology.
- Accédez à Panneau de configuration > Notifications > Webhook.
- Cliquez sur Ajouter.
Spécifiez les valeurs des paramètres suivants:
- Fournisseur: sélectionnez Personnalisé.
Règle: sélectionnez le type de messages que vous souhaitez envoyer dans votre webhook.
Cliquez sur Suivant.
Nom du fournisseur: attribuez un nom distinctif au webhook (par exemple, Google SecOps).
Objet: sera ajouté en tant que préfixe du message de notification.
URL du webhook: saisissez ENDPOINT_URL.
Sélectionnez Envoyer des messages de notification en anglais.
Cliquez sur Suivant.
Méthode HTTP: sélectionnez POST.
Ajoutez l'en-tête X-Webhook-Access-Key, avec la valeur SECRET.
Ajoutez l'en-tête X-goog-api-key, avec la valeur API_KEY.
Cliquez sur Appliquer.
Cliquez sur Apply (Appliquer) pour enregistrer le webhook.
Tableau de mappage UDM
Champ du journal | Mappage UDM | Logique |
---|---|---|
app |
target.application |
La valeur du champ app extraite par le filtre grok est attribuée à target.application . |
desc |
metadata.description |
La valeur du champ desc extraite par le filtre grok est attribuée à metadata.description . |
desc |
target.file.names |
Si le champ desc contient "Closed)", le chemin d'accès au fichier entre parenthèses est extrait et attribué à target.file.names . Si le champ desc contient "accessed shared folder" (Dossier partagé consulté), le chemin d'accès au dossier entre parenthèses est extrait et attribué à target.file.names . |
host |
principal.hostname |
La valeur du champ host extraite par le filtre grok à partir du champ host_and_ip est attribuée à principal.hostname . |
host_and_ip |
principal.ip |
Le champ host_and_ip est analysé. Si une adresse IP (ip1 ) est détectée, elle est attribuée à principal.ip . Si une deuxième adresse IP (ip2 ) est détectée, elle est également ajoutée à principal.ip . |
intermediary_host |
intermediary.hostname |
La valeur du champ intermediary_host extraite par le filtre grok est attribuée à intermediary.hostname . Un objet auth vide est créé dans extensions si le message contient "connecté" ou "se connecter". L'horodatage du champ collection_time du journal brut est utilisé. Si le message contient "connecté" ou "se connecter", la valeur est définie sur USER_LOGIN . Si le message contient "accédé au dossier partagé", la valeur est définie sur USER_RESOURCE_ACCESS . Sinon, la valeur par défaut est GENERIC_EVENT . La valeur du champ type extraite par le filtre grok est attribuée à metadata.product_event_type . La valeur est définie de manière statique sur "SYNOLOGY". La valeur est définie de manière statique sur "SYNOLOGY". Si le message contient "Échec de la signature", la valeur est définie sur BLOCK . Si le message contient "success", la valeur est définie sur ALLOW . Si le champ severity (extrait par grok) est "INFO", la valeur est définie sur INFORMATIONAL . |
severity |
security_result.severity |
La valeur du champ severity extraite par le filtre grok permet de déterminer le security_result.severity . Si la valeur est "INFO", elle est mappée sur "INFORMATIONAL". |
time |
metadata.event_timestamp |
Le champ time , extrait par le filtre grok, est analysé et converti en code temporel. Cet horodatage est ensuite attribué à metadata.event_timestamp . |
type |
metadata.product_event_type |
La valeur du champ type extrait par le filtre grok est attribuée à metadata.product_event_type . |
user |
target.administrative_domain |
Si un domaine est extrait du champ user , il est attribué à target.administrative_domain . |
user |
target.user.userid |
La partie du nom d'utilisateur du champ user (avant le "\", le cas échéant) est extraite et attribuée à target.user.userid . L'horodatage du champ collection_time du journal brut est utilisé. |
Modifications
2024-01-16
- Analyseur nouvellement créé.