与 Microsoft Sentinel 集成
您可以将 NetScaler 控制台与 Microsoft Sentinel 集成,将以下分析从 NetScaler 控制台导出到 Microsoft Sentinel:
- WAF 违规行为
- 机器人违规行为
- SSL 证书见解
- Gateway Insight
Microsoft Sentinel 提供集中式数据收集,可从应用程序、服务器等各种来源收集数据。作为管理员,您可以在 Microsoft Sentinel 中报告见解或违规行为后查看数据并做出决策。
要成功集成,请确保您拥有有效的 Azure 订阅,然后按照每个部分下的步骤进行操作:
配置日志分析工作区
需要日志分析工作区来存储和分析收集的数据。
-
登录到 Azure。
-
单击 创建资源。
-
在搜索栏中,键入日志分析工作区,然后单击“日志分析工作区”下的“创建”。
-
在日志分析工作区主页上,单击“创建”。
-
在创建日志分析工作区中:
- 选择有效的订阅和资源组。
注意:
如果您有权限,也可以单击“新建”来添加资源组。
-
指定您选择的名称。
-
从列表中选择您所在的地区。
-
单击“查看 + 创建”。
-
将显示验证通过消息。单击“创建”以部署工作区。
-
您可以看到正在部署的消息。看到部署完成消息后,单击“转到资源”。
工作区已成功创建。
- 选择有效的订阅和资源组。
创建 Microsoft Entra 应用程序
必须创建与 Azure 订阅关联的 Entra 应用程序,才能代表日志分析工作区进行通信。创建应用程序后,还必须授予 Microsoft Sentinel 贡献者角色的权限。该应用程序还提供客户端 ID、租户 ID 和客户端密钥等详细信息。我们建议您记下这些细节。当您在 NetScaler 控制台中创建订阅以完成集成过程时,需要提供这些详细信息。
-
在 Azure 门户中,在搜索栏中键入关键字。
-
单击“Microsoft Entra ID”。
-
单击“添加”,然后选择“应用程序注册”。
-
为应用程序指定名称,在“支持的帐户类型”下选择“默认选项”,然后单击“注册”。
-
注册应用程序后:
-
记下客户端 ID 和租户 ID。
-
为您的应用程序创建密钥 ID。单击“证书和密钥”,然后在“客户端密钥”下,单击“新建客户端密钥”。提供描述和有效期,然后单击“添加”为您的应用程序创建密钥 ID。
-
将显示您的应用程序的详细信息。确保在创建密钥后立即记下“值”下显示的 ID。如果您导航到任何其他 GUI 选项,该值将被隐藏。
-
为 Entra 应用程序分配权限
您必须为应用程序分配 Microsoft Sentinel 贡献者角色。要授予权限,请:
-
在 Azure 门户中导航到 Microsoft Entra ID。
-
单击“应用程序注册 ”,然后选择您的应用程序。
-
单击“访问控制 (IAM)”,然后单击“添加角色分配”。
-
在搜索栏中,键入关键字 sentinel,选择 Microsoft Sentinel 贡献者,然后单击“下一步”。
-
在“成员”选项卡中,单击“选择成员”,然后选择您创建的 Entra 应用程序。
-
单击 Review + assign(检查 + 分配)。
配置数据收集端点
必须创建数据收集端点才能获取端点 URL。当您在 NetScaler 控制台中创建订阅时,这是必需的。
-
在 Azure 门户的 Azure 服务下,选择数据收集端点或在搜索栏中键入关键字。
-
在“数据收集端点”页面中单击“创建”。
-
在创建数据收集端点中:
-
指定您选择的端点名称
-
选择订阅、资源组和区域。
-
单击“查看 + 创建”。
-
看到验证通过的消息后,单击“创建”。
-
您必须记下端点 URL。在数据收集端点主页中,选择创建的终端节点,单击 JSON 视图,然后记下端点 ID。
创建表以导出数据
对于要从 NetScaler 控制台导出到 Microsoft Sentinel 的每项见解,您必须创建一个表并提供 JSON 信息。您可以参考以下有关每项见解的表格要求的详细信息:
见解 | 所需的桌子总数 |
---|---|
SSL 见解 | 3 |
WAF | 1 |
机器人 | 1 |
Gateway Insight | 5 |
对于每个工作区,您最多可以创建 10 个表。超过 10 个表,必须创建另一个工作区。
-
在 Azure 门户中导航到您的工作区,然后单击“设置”下的“表”。
-
单击“创建”,然后选择“新建自定义日志”(基于 DCR)
-
在“创建自定义日志”中:
-
指定表名。表名必须采用 console_insightname 格式。例如:console_ns_sslvserver、console_ns_ssl_certkey。您可以参考步骤 4 来获取适用于每个见解的表名。
-
提供描述以添加有关表名的更多信息。此为可选设置。
-
创建新的数据收集规则并添加。
-
从列表中选择数据收集端点。
-
单击下一步。
-
-
在架构和转换选项卡中,您必须为要导出的见解上载 JSON 示例日志。您可以为每个见解使用以下示例 JSON,并创建一个 JSON 文件进行上载:
见解 JSON 要使用的表名 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 SSL (3) {"id": "2baffd1a-7ed6-4035-91e8-ad3a3125bff4", "certkeypair_name": "cert1", "ns_ip_address": "10.106.186.127", "poll_time": 1715671567, "partition_name": "", "display_name": "10.106.186.127", "hostname": "", "entity_name": "secure_gateway", "entity_type": "sslvserver", "table_name": "ns_sslcertkey_binding"}
console_ns_sslcertkey_binding 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 机器人 {"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 Gateway Insight (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 Gateway Insight (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 Gateway Insight (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 Gateway Insight (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 Gateway Insight (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 上载 JSON 后,您可以查看以下详细信息:
单击“转换编辑器”,输入以下适用于相应见解的查询,然后单击“运行”,在 NetScaler 控制台中接受从轮询开始的数据。
-
SSL -
source | extend TimeGenerated = todatetime(poll_time) | project-rename sslvserver_id = id
-
WAF 和 机器人 -
source | extend TimeGenerated = todatetime(rpt_sample_time)
-
Gateway Insight -
source | extend TimeGenerated = todatetime(rpt_sample_time)
-
-
单击“下一步”,然后单击“创建”以完成。
-
导航到 数据收集规则,单击您创建的 DCR。
-
在“配置”下,单击“数据源”以查看创建的表。
DCR(数据收集规则)需要访问监视指标发布者角色。
-
在“最近”下导航到可以从 Azure 门户访问的 DCR。
-
在您的 DCR 页面上单击访问控制 (IAM),然后单击添加角色分配。
-
在搜索栏中,键入关键字 monitor 以选择“监视指标发布者”,然后单击“下一步”。
-
在“成员”选项卡中,单击“选择成员”,然后选择您创建的 Entra 应用程序。
-
单击 Review + assign(检查 + 分配)。
您必须记下数据收集规则 ID。导航到数据收集规则页面,选择您的 DCR,然后单击 JSON 视图以记下 ID。
-
在 NetScaler 控制台中创建订阅
您现在一切都准备好了。最后一步是通过创建订阅并添加所需的详细信息来配置 NetScaler 控制台。要在 NetScaler 控制台中创建订阅,您需要记下以下细节:
- 端点 URL
- 数据收集规则 ID
- 租户 ID
- 客户端 ID
- 客户端密钥
-
登录到 NetScaler 控制台。
-
导航到“设置”>“可观测性集成”。
-
在“集成”页面中,单击“添加”。
-
在“创建订阅”页面中,指定以下详细信息:
-
在“订阅名称”字段中指定您选择的名称 。
-
选择 NetScaler 控制台作为源,然后单击“下一步”。
-
选择 Microsoft Sentinel,然后单击“配置”。在“配置终端节点”页面中,输入所有详细信息,然后单击“提交”。
-
单击下一步。
-
-
单击“添加见解”,在“选择功能”选项卡中,根据您在 Microsoft Azure 中添加的表,选择要导出的功能,然后单击“添加选定功能”,然后单击“下一步”。
-
在“选择实例”选项卡中,可以选择“选择所有实例”或“自定义选择”,然后单击“下一步”。
-
选择所有实例 - 将所有 NetScaler 实例中的数据导出到 Microsoft Sentinel。
-
自定义选择 - 允许您从列表中选择 NetScaler 实例。如果您从列表中选择特定实例,则数据将仅从选定的 NetScaler 实例导出到 Microsoft Sentinel。
-
-
单击 Submit(提交)。
在 Microsoft Azure 中查看日志
配置完所有内容后,我们建议您等到 30 分钟才能在 Microsoft Azure 中查看细节。
-
在您的 Azure 门户中,导航到您的日志分析工作区。
-
单击“日志”,提供表名,然后单击“运行”以查看结果。