|
# $Id: template-examples.conf,v 1.9 2006/01/29 14:54:58 andreas_o Exp $ # # Disclaimer: # DO NOT USE THIS FILE DIRECTLY. The templates in here are only # quick examples just to give you some ideas and are subject to be # changed/deleted in future releases. If there is a template you want # to use, review if carefully and put it in your own oinkmaster.conf (or # your own templates.conf or whatever) instead of using this file # directly. If you create your own templates and want them added to # this file, please send them to me. # For more information about templates, see README.templates. # Here are a bunch of sample template definitions, later followed by # examples how to use them. # Tag by src for 10 seconds by adding the string # "tag: host,src,10,seconds;" right after the SID statement. define_template add_src_tagging \ "\b(sid\s*:\s*\d+\s*;)" | \ "${1} tag: host,src,10,seconds;" # If you want to append stuff at the very end of a rule, you could do # something like this: # define_template add_src_tagging \ # "\)\n$" | \ # "tag: host,src,10,seconds;)\n" # Take text given as argument and append it to the rule's "msg" string. define_template append_msg \ "\b(msg\s*:\s*".+?)"\s*;+s*" | \ "${1}%ARG1%";" # Add thresholding of type "both", count 30, seconds 60. define_template add_threshold \ "\b(sid\s*:\s*\d+\s*;)" | \ "${1} threshold:type both,track by_dst,count 30,seconds 60;" # Add by_dst thresholding with values for count and seconds given # as arguments when using the template. define_template add_threshold_with_values \ "\b(sid\s*:\s*\d+\s*;)" | \ "${1} threshold:type both,track by_dst,count %ARG1%,seconds %ARG2%;" # Change classtype to the one specified as argument. define_template change_classtype \ "\bclasstype\s*:\s*\S+\s*;" | \ "classtype:%ARG1%;" # Convert an active alert rule to a drop rule define_template make_drop "^alert\s" | "drop " # Remove "flow" statement. define_template remove_flow "flow\s*:\s*[a-z,_ ]+;" | "" # Comment out rules containing a certain option. define_template disable_by_keyword "(.*\b%ARG1%\s*:.+;.*)" | "#${1}" # Switch $EXTERNAL_NET/$HOME_NET in a rule watching for stuff from # $EXTERNAL_NET to $HOME_NET, so it becomes $HOME_NET to $EXTERNAL_NET. define_template check_outgoing \ "(.+) \$EXTERNAL_NET (.+) \$HOME_NET (.+)" | \ "${1} \$HOME_NET ${2} \$EXTERNAL_NET ${3}" # Switch $EXTERNAL_NET/$HOME_NET in a rule watching for stuff from # $HOME_NET to $EXTERNAL_NET, so it becomes $EXTERNAL_NET to $HOME_NET. define_template check_incoming \ "(.+) \$HOME_NET (.+) \$EXTERNAL_NET (.+)" | \ "${1} \$EXTERNAL_NET ${2} \$HOME_NET ${3}" # Make source and destination address specifications in an alert rule # become "any", regardless of their current values. define_template src_dst_any_any \ "^(alert\s+\S+)\s+\S+\s+(.*?>)\s+\S+" | "${1} any ${2} any" # Just like disablesid but also add a comment line before the disabled # rule. define_template disable_with_comment \ "^alert\s" | "# Rule disabled by Oinkmaster, reason=%ARG1%:\n#alert " # Delete an active rule by removing it from the file completely. define_template delete_rule \ "^alert\s.+$" | "" # Tag by src for the number of seconds given as argument. Also include # this number in a string appended to the rule's msg. define_template tag_src_and_append_msg \ "^(\s*alert\s+.+\bmsg\s*:\s*".+?)"\s*;+s*(.*)\b(sid\s*:\s*\d+\s*;)" | \ "${1}, tagging for %ARG1% seconds";${2}${3} tag: host,src,%ARG1%,seconds;" # This is a template to disable a rule only if it has a specific # revision. Very useful if you want to temporarily disable a rule # because of false positives and you want to start using the rule again # as soon as it is updated (i.e. when the "rev" keyword changes). # The revision is specified as argument when using the template. define_template disablesid_rev "(.+\brev\s*:\s*%ARG1%\s*;.*)" | "#${1}" # Now some examples how to use the above templates. # Add tagging by src to SID 1324. # use_template add_src_tagging 1324 # Append the string " - added text!" to the msg of SID 1324. # use_template append_msg 1324 " - added text!" # Add thresholding with values hardcoded into the add_threshold template. # use_template add_threshold 1326 # Add thresholding with count value given as first argument # and seconds value given as second argument. # use_template add_threshold_with_values 1326 "10" "30" # Change the classtype to "some-other-classtype" in SID 1324 and 1325. # use_template change_classtype 1324,1325 "some-other-classtype" # Make SID 1324 a drop rule. # use_template make_drop 1324 # Make all rules in exploit.rules to be drop rules. # use_template make_drop exploit.rules # Remove the "flow" statement from SID 1324. # use_template remove_flow 1324 # Disable all rules that are using the "uricontent" keyword. # use_template disable_by_keyword * "uricontent" # Reverse $EXTERNAL_NET and $HOME_NET in SID 1324 to watch only # for outgoing attacks of this kind. # use_template check_outgoing 1324 # Make both src and dst "any" in SID 1326. # use_template src_dst_any_any 1326 # Disable rule 1323, and also add a comment line above it # in the rules file. # use_template disable_with_comment 1323 "I don't like this rule" # Add 60 seconds tagging to SID 528, and also add this # information to its msg string. # use_template tag_src_and_append_msg 528 "60" # This will delete (not disable) the SIDs 1323, 1324 and 1326. # use_template delete_rule 1323, 1324, 1326 # This will delete ALL active rules. Not a very useful example :) # use_template delete_rule * # Disable SID 1324, but only if the revision (the "rev" keyword) is 3. # use_template disablesid_rev 1324 "3" |