# Copyright (c) 2010 Flowerfire, Inc. All Rights Reserved. raptor_exception = { plugin_version = "1.0.1" # Initial creation - 1.0 # 2011-07-13 - 1.0.1 - MSG - Edited info lines. info.1.manufacturer = "Symantec" info.1.device = "Raptor (Exception Reporting)" info.1.version.1 = "" # This log format is to track errors on the firewall only. # Code 121 messages are dropped because they are normal. # The name of the log format log.format.format_label = "Raptor Log Format (Exception Reporting)" log.miscellaneous.log_data_type = "firewall" log.miscellaneous.log_format_type = "firewall" # The log is in this format if any of the first ten lines match this regular expression log.format.autodetect_regular_expression = "(Raptor Firewall|Raptor Security Gateway)" # The format of dates and times in this log log.format.date_format = "mmm dd" log.format.time_format = "hh:mm:ss" # All log field parsing will be done using the parsing filters log.format.parse_only_with_filters = "true" # Log fields log.fields = { date = { label = "$lang_stats.field_labels.date" type = "date" index = 0 subindex = 0 hierarchy_dividers = "" left_to_right = false leading_divider = "false" } # date time = { label = "$lang_stats.field_labels.time" type = "time" index = 0 subindex = 0 hierarchy_dividers = "" left_to_right = false leading_divider = "false" } # time duration = { label = "$lang_stats.field_labels.duration" type = "hierarchical" index = 0 subindex = 0 hierarchy_dividers = "." left_to_right = false leading_divider = "false" } # duration microseconds = { label = "$lang_stats.field_labels.microseconds" type = "flat" index = 0 subindex = 0 } # microseconds server = { label = "$lang_stats.field_labels.server" type = "flat" index = 0 subindex = 0 } # server proxy = { label = "$lang_stats.field_labels.proxy" type = "flat" index = 0 subindex = 0 } # proxy iteration = { label = "$lang_stats.field_labels.iteration" type = "flat" index = 0 subindex = 0 } # iteration user = { label = "$lang_stats.field_labels.user" type = "flat" index = 0 subindex = 0 } # user code = { label = "$lang_stats.field_labels.code" type = "flat" index = 0 subindex = 0 } # code id = { label = "$lang_stats.field_labels.id" type = "flat" index = 0 subindex = 0 } # id rcvd = { label = "$lang_stats.field_labels.rcvd" type = "size" index = 0 subindex = 0 hierarchy_dividers = "" left_to_right = false leading_divider = "false" } # rcvd src = { label = "$lang_stats.field_labels.src" type = "hierarchical" index = 0 subindex = 0 hierarchy_dividers = "/" left_to_right = true leading_divider = "false" } # src dst = { label = "$lang_stats.field_labels.dst" type = "hierarchical" index = 0 subindex = 0 hierarchy_dividers = "/" left_to_right = true leading_divider = "false" } # dst operation = { label = "$lang_stats.field_labels.operation" type = "flat" index = 0 subindex = 0 } # operation arg = { label = "$lang_stats.field_labels.arg" type = "URL" index = 0 subindex = 0 hierarchy_dividers = "/?" left_to_right = true leading_divider = "false" } # arg result = { label = "$lang_stats.field_labels.result" type = "flat" index = 0 subindex = 0 } # result proto = { label = "$lang_stats.field_labels.proto" type = "flat" index = 0 subindex = 0 } # proto } # log.fields # # Log Parsing Filters log.parsing_filters = { # Parse our date, time, server name, proxy, result code and place text of # error message into the "arg" field 1 = { label = "1" comment = "" value = "collect_fields_using_regexp('^()(... [0-9][0-9]) ([0-9][0-9]:[0-9][0-9]:[0-9][0-9])([0-9.]* )([^ ]*) ([a-z-]*)(\\\\[[0-9]*\\\\])*: ([0-9]*) (.*)', '*KEY*,date,time,microseconds,server,proxy,iteration,code,arg')" } # 1 # Parse out the space-separated, =-divided variables 2 = { label = "2" comment = "" value = "collect_listed_fields_using_regexp('^()... [0-9][0-9] [0-9:.]* [^ ]* [a-z0-9]*\\\\[[0-9]*\\\\]: [0-9]* (.*)$', ' ', '=', '')" } # 2 # Accept a collected field entry 3 = { label = "3" comment = "" value = "accept_collected_entry_using_regexp('()', false)" } # 3 } # log.parsing_filters # Database fields database.fields = { date_time = { label = "$lang_stats.field_labels.date_time" log_field = "date_time" type = "string" suppress_top = 0 suppress_bottom = 3 display_format_type = "date_time" } # date_time src = { label = "$lang_stats.field_labels.src" log_field = "src" type = "string" suppress_top = 0 suppress_bottom = 2 } # src server = { label = "$lang_stats.field_labels.server" log_field = "server" type = "string" suppress_top = 0 suppress_bottom = 2 } # server proxy = { label = "$lang_stats.field_labels.proxy" log_field = "proxy" type = "string" suppress_top = 0 suppress_bottom = 2 } # proxy user = { label = "$lang_stats.field_labels.user" log_field = "user" type = "string" suppress_top = 0 suppress_bottom = 2 } # user code = { label = "$lang_stats.field_labels.code" log_field = "code" type = "string" suppress_top = 0 suppress_bottom = 2 } # code arg = { label = "$lang_stats.field_labels.arg" log_field = "arg" type = "string" suppress_top = 1 suppress_bottom = 3 } # arg dst = { label = "$lang_stats.field_labels.dst" log_field = "dst" type = "string" suppress_top = 0 suppress_bottom = 2 } # dst operation = { label = "$lang_stats.field_labels.operation" log_field = "operation" type = "string" suppress_top = 0 suppress_bottom = 2 } # operation id = { label = "$lang_stats.field_labels.id" log_field = "id" type = "string" suppress_top = 0 suppress_bottom = 2 } # id proto = { label = "$lang_stats.field_labels.proto" log_field = "proto" type = "string" suppress_top = 0 suppress_bottom = 2 } # proto result = { label = "$lang_stats.field_labels.result" log_field = "result" type = "string" suppress_top = 0 suppress_bottom = 2 } # result day_of_week = { label = "$lang_stats.field_labels.day_of_week" log_field = "day_of_week" type = "string" suppress_top = 0 suppress_bottom = 2 display_format_type = "day_of_week" } # day_of_week hour_of_day = { label = "$lang_stats.field_labels.hour_of_day" log_field = "hour_of_day" type = "string" suppress_top = 0 suppress_bottom = 2 display_format_type = "hour_of_day" } # hour_of_day } # database.fields # Log Filters log.filters = { # drop some routine messages 1 = { label = "1" comment = "" value = "if (matches_regular_expression(code, '1..')) then 'reject';" } # 1 2 = { label = "2" comment = "" value = "if (code eq '301') then 'reject';" } # 2 3 = { label = "3" comment = "" value = "if (code eq '238') then 'reject';" } # 3 4 = { label = "4" comment = "" value = "if (code eq '308') then 'reject';" } # 4 5 = { label = "5" comment = "" value = "if (code eq '310') then 'reject';" } # 5 6 = { label = "6" comment = "" value = "if (code eq '343') then 'reject';" } # 6 7 = { label = "7" comment = "" value = "if (code eq '516') then 'reject';" } # 7 # Local port already in use is normal, just means the server is busy. # Does not mean the server needs an upgrade though 8 = { label = "8" comment = "" value = "if (matches_regular_expression(arg, 'local port 0 already in use')) then 'reject';" } # 8 # parse out source IP addresses from the message text 9 = { label = "9" comment = "" value = "if (matches_regular_expression(arg, 'from \\[*([a-z0-9.]+\\.[a-z0-9.]+\\.[a-z0-9.]+\\.[a-z0-9.]+)\\]*')) then src = arg;" } # 9 # parse our source IP addresses from the message text, # for access denied messages the format is different 10 = { label = "10" comment = "" value = "if (matches_regular_expression(arg, 'for ([^ ]*) to ')) then src = arg;" } # 10 # parse out the source IP addresses from the message text, # for packet type messages, the format is different 11 = { label = "11" comment = "" value = "if (matches_regular_expression(arg, '\\(([a-z0-9.]*)->[a-z0-9.]*')) then src = arg;" } # 11 # parse out the destination IP address from the message text 12 = { label = "12" comment = "" value = "if (matches_regular_expression(arg, 'to \\[*([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)\\]*')) then dst = arg;" } # 12 # parse out the destination IP addresses from the message text, # for access denied messages the format is different 13 = { label = "13" comment = "" value = "if (matches_regular_expression(arg, 'for [a-z0-9.]* to ([a-z0-9.]*)')) then dst = arg;" } # 13 # parse out the destination IP addresses from the message text, # for packet type messages, the format is different 14 = { label = "14" comment = "" value = "if (matches_regular_expression(arg, '\\([a-z0-9.]*->([a-z0-9.]*)')) then dst = arg;" } # 14 # for certain messages, primarily access denied, the proxy iteration is restate # in the arg field, so we remove it from the arg field 15 = { label = "15" comment = "" value = "if (matches_regular_expression(arg, '^([a-z]*)\\\\[[0-9]*\\\\]:(.*)$')) then arg = $1 . $2;" } # 15 detect_page_views = { label = '$lang_admin.log_filters.detect_page_views_label' comment = '$lang_admin.log_filters.detect_page_views_comment' value = "if ((file_type eq 'JPEG') or (file_type eq 'JPG') or (file_type eq 'GIF') or (file_type eq 'ICO') or (file_type eq 'PNG') or (file_type eq 'CSS') or (file_type eq 'SWF') or (file_type eq 'JS')) then page_views = 0; else page_views = 1;" } # detect_page_views strip_non_page_views = { label = '$lang_admin.log_filters.strip_non_page_views_label' comment = '$lang_admin.log_filters.strip_non_page_views_comment' value = "if (page_views == 0) then arg = substr(arg, 0, last_index(arg, '/') + 1) . '(nonpage)';" } # strip_non_page_views mark_entry = { label = '$lang_admin.log_filters.mark_entry_label' comment = '$lang_admin.log_filters.mark_entry_comment' value = 'hits = 1;' } # mark_entry } # log.filters log.field_options = { sessions_page_field = "arg" sessions_visitor_id_field = "src" sessions_event_field = "page_views" } # log.field_options database.numerical_fields = { hits = { label = "$lang_stats.field_labels.hits" default = true requires_log_field = false type = "int" display_format_type = "integer" entries_field = true } # hits rcvd = { label = "$lang_stats.field_labels.rcvd" default = false requires_log_field = true log_field = "rcvd" type = "int" integer_bits = 64 display_format_type = "bandwidth" } # rcvd } # database.numerical_fields create_profile_wizard_options = { date_time_tracking = true # How the reports should be grouped in the report menu report_groups = { date_time_group = "" src = true server = true proxy = true user = true code = true arg = true dst = true operation = true id = true proto = true result = true day_of_week = true hour_of_day = true } # report_groups } # create_profile_wizard_options not_supported = { visitors = true sessions = true pageviews = true individualhosts = true } # not_supported } # raptor_exception