Application Delivery Management

Intégration avec Microsoft Sentinel

Vous pouvez intégrer NetScaler Console avec Microsoft Sentinel pour exporter les analyses suivantes de NetScaler Console vers Microsoft Sentinel :

  • Violations WAF
  • Violations de bot
  • Informations sur les certificats SSL
  • Informations sur la passerelle
  • Métriques et événements
  • Journaux d’audit de NetScaler® Console

Microsoft Sentinel fournit une collecte de données centralisée qui recueille des données de diverses sources telles que des applications, des serveurs, etc. En tant qu’administrateur, vous pouvez afficher les données et prendre des décisions après que les informations ou les violations ont été signalées dans Microsoft Sentinel.

Pour une intégration réussie, assurez-vous de disposer d’un abonnement Azure actif, puis suivez la procédure décrite dans chaque section :

Configurer l’espace de travail Log Analytics

Un espace de travail Log Analytics est nécessaire pour stocker et analyser les données collectées.

  1. Connectez-vous à Azure.

  2. Cliquez sur Créer une ressource.

    Ressource

  3. Dans la barre de recherche, tapez log analytics workspace et cliquez sur Créer sous Espace de travail Log Analytics.

    Espace de travail Log Analytics

  4. Sur la page principale de l’Espace de travail Log Analytics, cliquez sur Créer.

    Création de l’espace de travail

  5. Dans Créer un espace de travail Log Analytics :

    1. Sélectionnez l’abonnement actif et le groupe de ressources.

      Remarque :

      Vous pouvez également cliquer sur Créer un nouveau pour ajouter un groupe de ressources si vous disposez des privilèges nécessaires.

    2. Spécifiez un nom de votre choix.

    3. Sélectionnez votre région dans la liste.

    4. Cliquez sur Vérifier + créer.

      Étape pré-finale de la création de l’espace de travail

    5. Un message de validation réussie apparaît. Cliquez sur Créer pour déployer l’espace de travail.

      Création de l’espace de travail

    6. Vous pouvez voir le message de déploiement en cours. Une fois le message de déploiement terminé affiché, cliquez sur Accéder à la ressource.

      Ressource de l’espace de travail

      L’espace de travail est créé avec succès.

Créer une application Microsoft Entra

Vous devez créer une application Entra associée à votre abonnement Azure pour communiquer au nom de l’espace de travail Log Analytics. Après avoir créé l’application, vous devez également lui accorder l’autorisation avec le rôle Contributeur Microsoft Sentinel. L’application fournit également des détails tels que l’ID client, l’ID de locataire et le secret client. Nous vous recommandons de noter ces détails. Ces détails sont nécessaires lorsque vous créez un abonnement dans NetScaler Console pour terminer le processus d’intégration.

  1. Dans votre portail Azure, tapez le mot-clé dans la barre de recherche.

  2. Cliquez sur Microsoft Entra ID.

    Application Entra

  3. Cliquez sur Ajouter et sélectionnez Inscription d’application.

    Inscrire une application

  4. Spécifiez un nom pour l’application, sélectionnez l’option par défaut sous Types de comptes pris en charge, puis cliquez sur Inscrire.

    Inscription de l’application

  5. Après avoir enregistré l’application :

    1. Notez l’ID client et l’ID de locataire.

      ID client et de locataire

    2. Créez un ID secret pour votre application. Cliquez sur Certificats et secrets, puis sous Secrets client, cliquez sur Nouveau secret client. Fournissez une description, une validité, puis cliquez sur Ajouter pour créer un ID secret pour votre application.

      ID secret client

    3. Les détails sont affichés pour votre application. Assurez-vous de noter l’ID affiché sous Valeur immédiatement après la création du secret. Cette valeur est masquée si vous naviguez vers une autre option de l’interface graphique.

      ID de valeur

Envoyer des données à Microsoft Sentinel à l’aide du connecteur de données Microsoft Entra ID

Les journaux Microsoft Entra ID fournissent des informations complètes sur les utilisateurs, les applications et les réseaux accédant à votre locataire Entra. Pour plus d’informations, consultez Envoyer des données à Microsoft Sentinel à l’aide du connecteur de données Microsoft Entra ID.

Configurer le point de terminaison de collecte de données

Vous devez créer un point de terminaison de collecte de données pour obtenir l’URL du point de terminaison. Ceci est nécessaire lorsque vous créez un abonnement dans NetScaler Console.

  1. Dans votre portail Azure, sous Services Azure, sélectionnez Points de terminaison de collecte de données ou tapez le mot-clé dans la barre de recherche.

    Sélection DCR

  2. Cliquez sur Créer sur la page Points de terminaison de collecte de données.

    Créer DCR

  3. Dans Créer un point de terminaison de collecte de données :

    1. Spécifiez un nom de point de terminaison de votre choix.

    2. Sélectionnez l’abonnement, le groupe de ressources et la région.

    3. Cliquez sur Vérifier + créer.

    4. Après avoir vu le message de validation réussie, cliquez sur Créer.

Vous devez noter l’URL du point de terminaison. Sur la page principale du point de terminaison de collecte de données, sélectionnez le point de terminaison créé, cliquez sur Vue JSON et notez l’ID du point de terminaison.

ID DCR

Créer des tables pour exporter des données

Vous devez créer une table et fournir les informations JSON pour chaque aperçu que vous souhaitez exporter de NetScaler Console vers Microsoft Sentinel. Vous pouvez vous référer aux détails suivants concernant les exigences de la table pour chaque aperçu :

Aperçus Nombre total de tables requises
Aperçus SSL 3
WAF 1
Bot 1
Aperçus Gateway 5
Événements 1
Métriques 1
Journaux d’audit 1

Vous pouvez créer un maximum de 10 tables pour chaque règle de collecte de données (DCR). Au-delà de 10 tables, vous devez créer une autre DCR.

  1. Accédez à votre espace de travail dans le portail Azure et cliquez sur Tables sous Paramètres.

  2. Cliquez sur Créer et sélectionnez Nouveau journal personnalisé (basé sur DCR).

    Table

  3. Dans Créer un journal personnalisé :

    1. Spécifiez un nom de table. Le nom de la table doit être au format console_insightname. Par exemple : console_ns_sslvserver, console_ns_ssl_certkey. Vous pouvez vous référer à l’étape 4 pour obtenir les noms de table applicables à chaque aperçu.

    2. Fournissez une description pour ajouter plus d’informations sur le nom de la table. Ceci est facultatif.

    3. Créez une nouvelle règle de collecte de données et ajoutez-la.

    4. Sélectionnez le point de terminaison de collecte de données dans la liste.

      Paramètres de la table

    5. Cliquez sur Suivant.

  4. Dans l’onglet Schéma et transformation, vous devez télécharger les journaux d’échantillon JSON pour l’aperçu que vous souhaitez exporter. Vous pouvez utiliser l’exemple JSON suivant pour chaque aperçu et créer un fichier JSON à télécharger :

    Aperçus JSON Nom de table à utiliser
    SSL (1) {"id": "3eb05733-c326-493c-9aa0-f7db3a6b4277", "ns_ip_address": "10.106.186.141", "name": "zeta_192_168_110_250", "vsvr_ip_address": "", "vsvr_port": -1, "vsvr_type": "", "state": "", "partition_name": "", "display_name": "10.106.186.141", "poll_time": 1716539986, "managed": "f", "ssl2": "f", "ssl3": "t", "tls10": "t", "tls11": "t", "tls12": "t", "dh": "f", "ersa": "t", "sslprofile": "", "tls13": "f", "dhkeyexpsizelimit": "DISABLED", "pushenctriggertimeout": 1, "sessionticket": "", "includesubdomains": "f", "sessionticketkeyrefresh": "", "ssllogprofile": "", "serverauth": "", "ssltriggertimeout": 100, "ersacount": 0, "strictcachecks": "NO", "dhfile": "", "sessreuse": "ENABLED", "redirectportrewrite": "DISABLED", "skipclientcertpolicycheck": "", "tls13sessionticketsperauthcontext": 1, "cipherredirect": "DISABLED", "dropreqwithnohostheader": "NO", "sessionticketlifetime": -1, "maxage": 0, "pushenctrigger": "Always", "strictsigdigestcheck": "f", "sslredirect": "DISABLED", "sessionkeylifetime": -1, "alpnprotocol": "", "clientauthuseboundcachain": "", "sesstimeout": 120, "clientcert": "", "snihttphostmatch": "CERT", "preload": "NO", "prevsessionkeylifetime": -1, "sessionticketkeydata": "", "encrypttriggerpktcount": 45, "cleartextport": "", "ssliocspcheck": "", "hsts": "f", "sslinterception": "", "commonname": "", "sslireneg": "", "ocspstapling": "DISABLED", "quantumsize": 8192, "insertionencoding": "Unicode", "sslimaxsessperserver": -1, "cipherurl": "", "pushflag": 0, "zerorttearlydata": "DISABLED", "allowextendedmastersecret": "", "dhekeyexchangewithpsk": "NO", "clientauth": "DISABLED", "denysslreneg": "NONSECURE", "sendclosenotify": "YES", "dhcount": 0, "snienable": "DISABLED", "table_name": "ns_sslvserver"} console_ns_sslvserver
    SSL (2) {"id": "a6673ab2-0b59-47b9-b530-bc30fb2b937c", "ssl_certificate": "/nsconfig/ssl/ca-cert.pem", "ssl_key": "/nsconfig/ssl/ca-key.pem", "certkeypair_name": "athul-ca", "cert_format": "PEM", "days_to_expiry": 281, "ns_ip_address": "10.106.186.141", "status": "Valid", "device_name": "10.106.186.141", "file_location_path": "", "certificate_data": "", "key_data": "", "poll_time": 1717434335, "no_domain_check": "f", "version": 3, "serial_number": "7B34B6A6A1A79E0FF168242D7BCFF78F04C9EE66", "signature_algorithm": "sha256WithRSAEncryption", "issuer": "C=IN,ST=KA,L=BAN,O=CIT,OU=ADM,CN=A", "valid_from": "Mar 12 08:51:11 2024 GMT", "valid_to": "Mar 12 08:51:11 2025 GMT", "subject": "C=IN,ST=KA,L=BAN,O=CIT,OU=ADM,CN=A", "public_key_algorithm": "rsaEncryption", "public_key_size": 4096, "no_of_bound_entities": 0, "partition_name": "", "display_name": "10.106.186.141", "hostname": "athulsadc", "key_name": "", "subjaltname": "", "managed_by": "", "certificate_dn": "", "linkcertkeyname": "", "table_name": "ns_ssl_certkey"} console_ns_ssl_certkey
    WAF [{"ip_address": "10.106.185.156", "ctnsappname": "vserver_1", "severity": 2, "violation_type": 19, "violation_type_desc": "Start URL", "block_flags": 1, "transformed_flags": 0, "not_blocked_flags": 0, "country_code": "-NA-", "region_code": "-NA-", "city": "-NA-", "latitude": 200.0, "longitude": 200.0, "signature_category": "", "attack_category": 2, "attack_category_desc": "Broken Authentication and Session Management", "total_attacks": 1, "rpt_sample_time": 1704783773, "source_ip_address": 174766492, "attack_time": 1704783538, "profile_name": "appfw_cs_lb_prof", "session_id": "", "http_req_url": "https://10.106.192.54/csrf_ffc/ffc.html?field10=asfasd", "violation_name": "-NA-", "violation_value": "-NA-", "violation_location": 4, "violation_threat_index": 5, "app_threat_index": 5, "http_method": 0, "violation_action": 3, "violation_action_desc": "Blocked", "severity_type": 2, "severity_type_desc": "Medium", "iprep_score": 0, "iprep_category": 0, "counter_value": 0, "appname": "vserver_1_10.106.185.156_lb", "violation_category": 12, "violation_category_desc": "Start URL", "source_ipv6_address": "", "true_client_ip": "\\N", "backend_vserver": "", "backend_appname": "", "transactionId": "0", "table_name": "af_threat_exporter_data_l2"}] console_af_threat_exporter_data_l2
    Bot {"ip_address": "10.106.186.122", "ctnsappname": "secure_gateway", "bot_type": "2", "bot_type_desc": "Bad", "action_type": "6", "action_type_desc": "Log", "country_code": "0.0", "region_code": "0.0", "city": "0.0", "bot_severity": "0", "bot_severity_desc": "Critical", "latitude": "0", "longitude": "0", "bot_detection_mechanism": "6", "bot_detection_mechanism_desc": "BlackList", "bot_category": "0", "bot_category_desc": "Uncategorized", "source_ip_address": "174758625", "bot_signature_category": "Custom Policy Expression", "appname": "secure_gateway_10.106.186.122_lb", "backend_vserver": "", "backend_appname": "", "total_attacks": "2", "rpt_sample_time": "1718783216", "table_name": "af_bot_attack_details_l2"} console_af_bot_attack_details_l2
    Aperçu Gateway (1) {"adc_ip_address": "10.106.186.141", "auth_server": "", "client_ip": 174766732, "epa_method_type": 0, "error_count": 14, "error_details": "Invalid credentials passed", "error_type": 1, "gateway_name": "vpn_vserver_142_6", "req_url": "", "resource": "", "rpt_sample_time": 1713505215, "sso_method_type": 0, "sta_ip": "", "table_name": "af_vpn_error_details", "username": "John"} console_af_vpn_error_details
    Aperçu Gateway (2) {"adc_ip_address": "10.102.71.166", "display_name": "10.102.71.166", "gateway_name": "firsthop", "ip_address": "10.102.71.168", "rpt_sample_time": "1718812158", "state": "Up", "table_name": "ns_vpnvserver"} console_ns_vpnvserver
    Aperçu Gateway (3) {"adc_ip_address": "10.106.186.141", "gateway_name": "vpn_vserver_141_7", "rpt_sample_time": 1702011308, "sessions": 1, "table_name": "af_vpn_session_details", "users": 1} console_af_vpn_session_details
    Aperçu Gateway (4) {"active_sessions": 59, "active_users": 1, "adc_ip_address": "10.106.186.136", "gateway_name": "vpnathul2", "rpt_sample_time": 1698919848, "table_name": "af_vpn_active_session_1"} console_af_vpn_active_session_1
    Aperçu Gateway (5) {"adc_ip_address": "10.106.186.136", "entity_type": 3, "gateway_name": "vpnathul2", "hits": 3, "rpt_sample_time": 1698052438, "table_name": "af_vpn_error_reports"} console_af_vpn_error_reports
    Événements {"rpt_sample_time": -1, "category": "HealthMonitoring", "entity": "10.106.186.148:HealthMonitoring:System Disk Usage", "counter_threshold_value": "", "id": "0f2607cf-f97d-4f71-9162-11e580262e93", "timestamp": 1712927472, "message": "Disk Usage High: 63.24%", "severity": "Critical", "user_name": "", "device_entity_type": "", "device_type": "", "counter_actual_value": "", "cmd_auth_status": "", "source": "10.106.186.148", "history": "Update Time= Fri, 12 Apr 2024 06:32:49 UTC ,Previous Severity= Critical ,New Severity= Critical, Source= 10.106.186.148\nUpdate Time= Fri, 12 Apr 2024 06:27:46 UTC ,Previous Severity= Critical ,New Severity= Critical, Source= 10.106.186.148\nUpdate Time= Fri, 12 Apr 2024 06:22:44 UTC ,Previous Severity= Critical ,New Severity= Critical, Source= 10.106.186.148\nUpdate Time= Fri, 12 Apr 2024 06:17:41 UTC ,Previous Severity= Critical ,New Severity= Critical, Source= 10.106.186.148\nUpdate Time= Fri, 12 Apr 2024 06:12:38 UTC ,Previous Severity= Critical ,New Severity= Critical, Source= 10.106.186.148\nUpdate Time= Fri, 12 Apr 2024 06:07:36 U", "config_cmd": "", "failureobj": "System Disk Usage", "operation_type": "undefined", "device_entity_name": "", "cmd_exec_status": "", "device_family": "", "source_event_id": -1, "source_system_ip": "10.106.186.148", "trap_id": 35, "table_name": "event"} console_event
    Métriques {"memory_free": 28830060544.0, "disk_used": 81248694272.0, "disk_free": 29632114688.0, "node_type": "", "memory_total": 34355544064.0, "cpu_usage": 0.49, "disk_total": 120522616832.0, "disk_usage": 73.28, "node_id": "", "id": "1be15a09-d078-469c-868a-bfbfcffe5ef1", "disk_total_capacity": 0.0, "page_size": 4096.0, "memory_usage": 16.08, "table_name": "mps_health"} console_mps_health
    Journaux d’audit {"system_gmt_time":1721868291, "source":"X.X.X.X", "severity":"INFO", "module":"DEVICECONFIG", "event_type":"CMD_EXECUTED", "message":"Sample Mesage", "instance_ip":"X.X.X.X", "app_name":""} console_syslog_messages

    Après avoir téléchargé le JSON, vous pouvez afficher les détails suivants :

    Détails JSON

    Cliquez sur Éditeur de transformation, entrez la requête suivante applicable à l’aperçu approprié, puis cliquez sur Exécuter pour accepter les données à partir de l’heure d’interrogation dans NetScaler Console.

    • SSL - source | extend TimeGenerated = todatetime(poll_time) | project-rename sslvserver_id = id

    • WAF et Bot - source | extend TimeGenerated = todatetime(rpt_sample_time)

    • Aperçu Gateway - source | extend TimeGenerated = todatetime(rpt_sample_time)

      Exécution de la table

  5. Cliquez sur Suivant, puis sur Créer pour terminer.

  6. Accédez à Règles de collecte de données, cliquez sur la DCR que vous avez créée.

  7. Sous Configuration, cliquez sur Sources de données pour afficher la table créée.

    Source de la table

    La DCR (règle de collecte de données) nécessite un accès au rôle Éditeur de métriques de surveillance.

    1. Accédez à votre DCR à laquelle vous pouvez accéder depuis votre portail Azure sous Récents.

    2. Cliquez sur Contrôle d’accès (IAM) depuis votre page DCR et cliquez sur Ajouter une attribution de rôle.

      Attribution de rôle

    3. Dans la barre de recherche, tapez le mot-clé monitor pour sélectionner Éditeur de métriques de surveillance et cliquez sur Suivant.

    4. Dans l’onglet Membres, cliquez sur Sélectionner des membres et sélectionnez l’application Entra que vous avez créée.

    5. Cliquez sur Vérifier + attribuer.

      Vous devez noter l’ID des règles de collecte de données. Accédez à la page des règles de collecte de données, sélectionnez votre DCR et cliquez sur la vue JSON pour noter l’ID.

      Valeur DCR

Créer un abonnement dans NetScaler Console

Vous avez maintenant tout préparé. La dernière étape consiste à configurer NetScaler Console en créant un abonnement et en ajoutant les détails requis que vous avez notés :

  • URL du point de terminaison
  • ID des règles de collecte de données
  • ID de locataire
  • ID client
  • Secret client
  1. Connectez-vous à NetScaler Console.

  2. Accédez à Paramètres > Intégration de l’observabilité.

  3. Sur la page Intégrations, cliquez sur Ajouter.

  4. Sur la page Créer un abonnement, spécifiez les détails suivants :

    1. Spécifiez un nom de votre choix dans le champ Nom de l’abonnement.

    2. Sélectionnez NetScaler Console comme Source et cliquez sur Suivant.

    3. Sélectionnez Microsoft Sentinel et cliquez sur Configurer. Sur la page Configurer le point de terminaison, entrez tous les détails, puis cliquez sur Soumettre.

    4. Cliquez sur Suivant.

  5. Cliquez sur Ajouter des aperçus et dans l’onglet Sélectionner la fonctionnalité, en fonction des tables que vous avez ajoutées dans Microsoft Azure, sélectionnez les fonctionnalités que vous souhaitez exporter, puis cliquez sur Ajouter la sélection, et cliquez sur Suivant.

  6. Dans l’onglet Sélectionner l’instance, vous pouvez choisir Sélectionner toutes les instances ou Sélection personnalisée, puis cliquer sur Suivant.

    • Sélectionner toutes les instances - Exporte les données vers Microsoft Sentinel depuis toutes les instances NetScaler.

    • Sélection personnalisée - Vous permet de sélectionner les instances NetScaler dans la liste. Si vous sélectionnez des instances spécifiques dans la liste, les données sont exportées vers Microsoft Sentinel uniquement à partir des instances NetScaler sélectionnées.

  7. Cliquez sur Soumettre.

Afficher les journaux dans Microsoft Azure

Après avoir tout configuré, nous vous recommandons d’attendre 30 minutes pour afficher les détails dans Microsoft Azure.

  1. Dans votre portail Azure, accédez à votre espace de travail Log Analytics.

  2. Cliquez sur Journaux, indiquez le nom de la table, puis cliquez sur Exécuter pour afficher les résultats.

    Afficher les résultats

Vous pouvez également dépanner et utiliser les journaux pour vérifier les configurations. Par exemple, utilisez l’option Interroger maintenant dans l’interface graphique de NetScaler Console pour l’aperçu configuré et :

  1. Connectez-vous à votre NetScaler Console à l’aide d’un client SSH.
  2. Tapez shell pour passer en mode bash.
  3. Utilisez la commande suivante pour afficher les journaux :

    tail -f /var/mps/log/nbs/nbs_api.log

Les exemples suivants vous aident à analyser les erreurs possibles pour le dépannage :

  1. Journaux non valides

    Ce journal indique que vous avez fourni un ID client non valide pour l’abonnement Microsoft Sentinel dans NetScaler Console (Paramètres > Intégration de l’observabilité).

    Solution de contournement : Assurez-vous d’avoir copié le bon ID client et modifiez l’abonnement en fournissant le bon ID client. Pour plus d’informations, consultez Créer une application Microsoft Entra.

  2. Clé SSL non valide

    Ce journal indique que vous n’avez pas configuré la table ssl_certkey requise dans votre Microsoft Azure.

    Solution de contournement : Configurez une table pour ssl_certkey dans Microsoft Azure. Pour plus d’informations, consultez Créer des tables pour exporter des données.

Intégration avec Microsoft Sentinel