自定义日志过滤器

功能需求

  1. 默认情况下,在log filter中配置日志过滤器时(FortiOS 7.0及以上版本),只能指定某个分类的日志的开启和关闭;对于记录的日志级别,只能指定≥一个级别的日志的记录(例如日志级别设置为warning,则会记录warning、error、critical、alert、emergency级别的所有日志)。

    FortiGate # config log disk filter 
    
    FortiGate (filter) # set ?
    severity             Log to disk every message above and including this severity level.
    forward-traffic      Enable/disable forward traffic logging.
    local-traffic        Enable/disable local in or out traffic logging.
    multicast-traffic    Enable/disable multicast traffic logging.
    sniffer-traffic      Enable/disable sniffer traffic logging.
    ztna-traffic         Enable/disable ztna traffic logging.
    anomaly              Enable/disable anomaly logging.
    voip                 Enable/disable VoIP logging.
    dlp-archive          Enable/disable DLP archive logging.
    
    FortiGate (filter) # set severity ?
    emergency       Emergency level.
    alert           Alert level.
    critical        Critical level.
    error           Error level.
    warning         Warning level.
    notification    Notification level.
    information     Information level.
    debug           Debug level.
    
  2. 有些情况下,用户想要自定义本地或syslog日志的类型或级别。

    • 举例1:只需要记录或发送流量日志中包含源地址为192.168.100.77192.168.100.177,同时协议为TCP的日志。
    • 举例2:只需要记录或发送事件日志级别为alertinformation,同时用户为test的日志。
  3. 这种情况下通过简单的log filter是无法实现的。

解决方案

通过配置free-style类型的log filter,允许用户为每个日志记录设备配置个性化的日志类型/级别组合。筛选器可以包括日志类别和特定日志字段,可以创建为包含(include)关系和排除(exclude)关系,该方式需要通过CLI配置,配置方法如下,可配置多个free-style ID,多个free-style ID过滤的日志均会被记录/发送。

config log disk filter
    config free-style
        edit <id>
            set category <option>
            set filter <string>
            set filter-type {include | exclude}
        next
    end
end
选项 说明
category 日志类型: traffic, event, virus, webfilter, attack, spam, anomaly, voip, dlp, app-ctrl, waf, dns, ssh, ssl, file-filter, icap, ztna
filter 过滤关键字,可填写多个关键字,通过“or” 或“and”字符指定多个关键字之间的关系,举例:
set filter "((srcip 192.168.100.77) and (dstip 8.8.8.8)) or (srcip 192.168.100.177)",表示过滤源目IP字段为192.168.100.177和8.8.8.8,或源地址为192.168.100.177的日志。
filter-type {include exclude} 过滤器类型:
include表示包含,exclude表示排除

配置举例

我们使用功能需求中的举例1和举例2来进行配置。

举例1

只需要记录流量日志中包含源地址为192.168.100.77192.168.100.177,同时协议为TCP的日志。

  1. 在FortiGate的CLI下配置free-style类型的过滤器,需要注意的是,freestyle过滤的日志类型和级别,需要在filter中开启(同理可以配置syslog和FortiAnalyzer日志的过滤器)。

    config log disk filter
        set forward-traffic enable    //首先需要确认流量日志的总开关是开的
        set set severity information    //freestyle日志记录的流量日志的级别为information,所以filter中的日志级别至少要设置为information
        config free-style
            edit 1
                set category traffic
                set filter "((srcip 192.168.100.77) or (srcip 192.168.100.177)) and  proto 6"
                set filter-type include
            next
        end
    end
    
  2. 进入FortiGate的“日志&报表→转发流量”页面,查看相关日志,可以看到只有源地址为192.168.100.77192.168.100.177,同时协议为TCP的流量日志被记录。

    image-20230331180649043

  3. 使用CLI设置该freestyle过滤器,以及过滤器的dump。

    FortiGate # execute log filter free-style  "((srcip 192.168.100.77) or (srcip 192.168.100.177)) and (proto 6)"
    FortiGate # execute log display
    ...
    
    FortiGate # execute log filter dump
    category: traffic
    device: disk
    start-line: 11
    view-lines: 10
    max-checklines: 0
    HA member: 
    log search mode: on-demand
    pre-fetch-pages: 2
    Filter: ((srcip 192.168.100.77) or (srcip 192.168.100.177)) and (proto 6)
    Oftp search string:  (and  (or proto==6)  (or  (or srcip==192.168.100.177)  (or srcip==192.168.100.77)))
    

举例2

只需要记录或发送事件日志级别为alertinformation,同时用户为test的日志。

  1. 在FortiGate的CLI下配置free-style类型的过滤器,需要注意的是,freestyle过滤的日志类型和级别,需要在filter中开启(同理可以配置syslog和FortiAnalyzer日志的过滤器)。

    config log disk filter
        set set severity information    //freestyle日志记录的事件日志的级别为warning或information,所以filter中的日志级别至少要设置为information
        config free-style
            edit 1
                set category traffic
                set filter  "((level alert) or (level information)) and (user test)"
                set filter-type include
            next
        end
    end
    
  2. 使用admin账户登录FortiGate,进入“日志&报表→事件→系统事件”页面,查看相关日志,可以看到事件日志中只有级别为alertinformation,同时用户为test的日志。

    image-20230331184746268

  3. 使用CLI设置该freestyle过滤器,以及过滤器的dump。

    FortiGate # execute log filter free-style "((level alert) or (level information)) and (user test)"
    FortiGate # execute log display
    ...
    
    FortiGate # execute log filter dump
    category: traffic
    device: disk
    start-line: 1
    view-lines: 10
    max-checklines: 0
    HA member: 
    log search mode: on-demand
    pre-fetch-pages: 2
    Filter: ((level alert) or (level information)) and (user test)
    Oftp search string:  (and  (or user=="test" not-exact)  (or  (or level=="information" not-exact)  (or level=="alert" not-exact)))
    

注意事项

  1. 在6.4版本中freestyle的log filter配置方式与7.0有所不同,6.4版本中自定义filter中多个条件的关系为或(or)。如果6.4版本配置了自定义的log filter后,再升级到7.0版本后,或(or)的关系配置会被转换为与(and)的关系,请在升级后自行手动更改(将and改为or)。

    6.4版本:
    config log disk filter
        set severity information
        set filter "event-level(warning) logid(44547)"    //6.4版本中filter中的多个条件关系为或(or)
        set filter-type include
    end
    
    7.0版本:
    config log disk filter
        config free-style
            edit 1
                set category event
                set filter "((level warning error critical alert emergency) and (logid 44547))"    //升级到7.0后,配置被转换为与(and)的关系
            next
        end
    end
    
  2. 多个free-style ID之间为与(and)的关系,多个free-style ID过滤的日志均会被记录/发送。

Copyright © 2024 Fortinet Inc. All rights reserved. Powered by Fortinet TAC Team.
📲扫描下方二维码分享此页面👇
该页面修订于: 2023-09-12 15:24:08

results matching ""

    No results matching ""