Check Point FireWall-1 rule check script
I wrote the following script to count the number of times each rule is matched in our CheckPoint FireWall-1 security policy. The script is run once per week before the Check Point FireWall-1 logs are rotated.
You can optimize the rulebase by moving the most frequently accessed rules to the top of the security policy; the script can also help identify rules that are no longer used.
#!/bin/sh
# Variables
# TMP_OUTPUT is the file to store temporary output
# RECIPIENTS is a list of email recipients
TMP_OUTPUT=/tmp/fw_rule_check.tmp
RECIPIENTS=user@example.com
# Remove the temporary output file if it exists
[ -f $TMP_OUTPUT ] && rm $TMP_OUTPUT
/usr/bin/echo "Starting time: `date`\n" >> $TMP_OUTPUT
/usr/bin/echo "Rule\tCount" >> $TMP_OUTPUT
/usr/bin/echo "----\t-----" >> $TMP_OUTPUT
# For every line returned by "fw log," count the rule.
# The "rule (number)" is not in the same place on every line, so Perl
# is used to extract the rule.
/opt/CKPfw/bin/fw log | /usr/bin/perl -ne 'print "$1\n" if /rule\s(\d+)/' | \
/usr/bin/sort -n | /usr/bin/uniq -c | /usr/bin/awk '{print $2 "\t" $1}' >> $TMP_OUTPUT
/usr/bin/echo "\nEnding time: `date`" >> $TMP_OUTPUT
/usr/bin/mailx -s "Firewall rule check" $RECIPIENTS < $TMP_OUTPUT
rm $TMP_OUTPUT
Example output:
Starting time: Sat Dec 7 22:00:00 CST 2002
Rule Count
---- -----
0 147262
2 1
4 886295
6 19650
7 13993
8 13160
11 142
12 3741
14 5114
20 8
28 33
40 1878
41 505
52 162
53 3
54 3
56 40
57 88
58 28502
59 258141
60 106993
Ending time: Sun Dec 8 02:02:24 CST 2002
Sunday, March 7, 2010
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment