0

通过 CVE 搜索我可以从深度安全中检索数据以获取唯一策略以及从许多计算机中检索数据,但无法按 Recommendable 字段进行过滤。

recom="no"

在执行时

find_rules_for_recom(api, configuration, api_version, api_exception, recom))

终端说:

显示policesException:(400)原因:HTTP响应头:HTTPHeaderDict({'Cache-Control':'no-cache,no-store,no-cache =“set-cookie”','Content-Type':'application / json', 'Date': 'Thu, 27 Jun 2019 08:28:45 GMT', 'Pragma': 'n o-cache', 'Set-Cookie': 'AWSELB=8121890904A881CF1D6DF15EFDA53CC511612D62EB2B0749F6B1D0FE96DF2375AF5AB194BB3A0FCE0D676C1691AC480BB7AA104DD3549FC5F5C8B49F73540C9295DA200417;PATH=/;MAX-AGE =180 0', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains; preload', 'X-DSM-Version': 'Deep Security/12.5.85', 'X-Frame-Options': 'SAMEORIGIN', 'X-XSS-Protection': '1;mode=block', 'Content-Length': '76', 'Connection': 'keep-alive'}) HTTP 响应正文:{"message":"Invalid SearchFilter: Recommended is not a searchable field."}

4

2 回答 2

0

要查找推荐扫描可以推荐的入侵防御 (IPS/IDS) 规则,您需要搜索 IPS 规则的 RecommendationsMode 字段(IPS 规则没有推荐字段)。

API 字段名称和值不一定与您在 UI 中看到的相同。要查看 API 参考中的字段名称:

  1. 转到 API 参考: https ://automation.deepsecurity.trendmicro.com/article/12_0/api-reference?platform=on-premise
  2. 列表项向下滚动到入侵防御区域并单击 描述入侵防御规则
  3. 在中心面板,点击200 操作成功
  4. 在响应模式中,查找recommendationsMode

指示推荐扫描是否考虑规则。为避免现有规则出错,仅在启用(规则包含在推荐扫描中)和忽略(规则被推荐扫描忽略)之间更改值。其他值(禁用或忽略)表示推荐扫描不支持该规则。可作为选择进行搜索。

因此,您希望对具有recommendationsModeequals的规则执行选择搜索ignored

def find_rules_for_recommendable(api, configuration, api_version, api_exception):

    rule_id_s = []

    # Set search criteria
    search_criteria = api.SearchCriteria()
    search_criteria.field_name = "recommendationsMode"
    search_criteria.choice_value = "ignored"
    search_criteria.choice_test = "equal"

    # Create a search filter
    search_filter = api.SearchFilter()
    search_filter.search_criteria = [search_criteria]

    try:
        # Search for all intrusion prevention rules for the CVE
        ip_rules_api = api.IntrusionPreventionRulesApi(api.ApiClient(configuration))
        ip_rules_search_results = ip_rules_api.search_intrusion_prevention_rules(api_version,
                                                                             search_filter=search_filter)
        print(ip_rules_search_results)
        for rule in ip_rules_search_results.intrusion_prevention_rules:
            rule_id_s.append(rule.id)

        return rule_id_s

    except api_exception as e:
        return "Exception: " + str(e)`

作为奖励,并预测您下一步要去哪里,以下是您如何将规则列表分配给策略:

def apply_intrusion_prevention_recommendations(api, configuration, api_version, api_exception, policy_id, rule_ids):
    rule_ids_obj = api.models.RuleIDs(rule_ids)
    ips_recommendations_api = api.PolicyIntrusionPreventionRuleAssignmentsRecommendationsApi(api.ApiClient(configuration))
    try:
        ip_assignments = ips_recommendations_api.add_intrusion_prevention_rule_ids_to_policy(policy_id, api_version, intrusion_prevention_rule_ids=rule_ids_obj, overrides=False)
        return ip_assignments

    except api_exception as e:
        return "Exception: " + str(e)

希望有帮助!(顺便说一句,我是 DS 内容开发人员)

于 2019-07-12T16:55:17.667 回答
0

您看到的特定错误(“无效的 SearchFilter:推荐的不是可搜索的字段。”)是因为“推荐”不是 DSM /api 中任何对象的字段。(来源:DSM swagger 规范中没有提到任何地方)

正如斯科特所说,如果你可以用你的目标(你在看什么对象,你想过滤什么字段)和你正在使用的代码(你正在调用什么 python 函数,以及参数)来更新你的问题,我们可以更全面地回答它。

PS 我从事深度安全的研发工作

于 2019-06-27T14:55:38.553 回答