FWLOGWATCH(8)
FWLOGWATCH(8) π
System Manager's Manual β aka the fwlogwatch page, part one of two, and bestie we have SO much to get through, buckle up π
β¨ NAME β¨
fwlogwatch β a firewall log analyzer and realtime response agent π¦
β¨ SYNOPSIS β¨
fwlogwatch [options] [input_files]
β¨ DESCRIPTION β¨
okay so. fwlogwatch produces log summary reports in plain text AND HTML form, and it does it for a whole little friend group of log formats: Linux ipchains, Linux netfilter/iptables, Solaris/BSD/IRIX/HP-UX ipfilter, ipfw, Cisco IOS, Cisco PIX/ASA, NetScreen, Elsa Lancom router and Snort IDS. π
It has a lot of options to analyze and display relevant patterns. And it doesn't just sit there reading logs like a boring little guy β it can also run as a daemon (with a web interface, hello??) doing realtime log monitoring, reporting anomalies, and starting attack countermeasures. main character energy fr fr π
β¨ GENERAL OPTIONS β¨
These ones are independent from the main modes of operation. They just vibe on their own.
-hβ Show the available options. your little menu of possibilities π«Ά-Lβ Show time of the first and the last log entry. The input file(s) can be compressed or plain log file(s). Summary mode will show the time of the first and last packet log entry; this log times mode will show the time of the first and last entry overall. two different clocks bestie, don't get it twisted β°-Vβ Show version and copyright information and the options used to compilefwlogwatch. receipts π§Ύ
β¨ GLOBAL OPTIONS β¨
The global options for all modes are:
-bβ Show the amount of data in bytes this entry represents, this is the sum of total packet lengths of packets matching this rule (obviously only available for log formats that contain this information). if your log doesn't carry that info, it simply cannot give it to you π-cconfig β Use the alternate configuration file config instead of the default configuration file/etc/fwlogwatch/fwlogwatch.config(which does not need to exist). Only options not specified in the files can be overridden by command line options. so like, the file gets first dibs on the ones it sets πΈ-Dβ Do not differentiate destination IP addresses. Useful for finding scans in whole subnets. this is the "zoom out and see the whole pattern" button π-dβ Differentiate destination ports.-Eformat β Specific hosts, ports, chains and branches (targets) can be selected or excluded, selections and exclusions can be added and combined. The format is composed of one of the functionsiinclude oreexclude, then one of the parametershhost,pport,cchain orbbranch. In case of a host or port a third parameter forssource orddestination is needed. Finally, the object is directly appended, in case of a host this is an IP address (networks can be specified in CIDR format), port is a number and chain and branch are strings. To show entries with destination port 25 you would use-Eipd25and to exclude entries which have the class C network192.168.1.0as source or belong to the chainINPUT:-Eehs192.168.1.0/24 -EecINPUT. okay this one is a whole little language, read it twice, it's giving β¨grammarβ¨-ifile β If your logs contain private IP addresses that are not resolvable through DNS but you want reports with meaningful host names or you have any other reason to influence the host names in reports you can initialize the DNS cache with your own list of IP/name pairs. The file should be in the same format as/etc/hostsand will not be modified. it's read-only bestie, we are respectful π-Mnumber β If you only want to see a fixed maximum amount of entries (e.g. the "top 20") this option will trim the output for you. βοΈ-mcount β When analyzing large amounts of data you usually aren't interested in entries that have a small count. You can hide entries below a certain threshold with this option.-Nβ Enable service lookups. The service name for a specific port number and protocol will be looked up in/etc/services.-nβ Enable DNS lookups. Host names will be resolved (reverse and forward lookup with a warning if they don't match). If this makes summary generation very slow (this happens when a lot of different hosts appear in the log file) you should use a version offwlogwatchcompiled with GNU adns support. Resolved host names are cached in memory for as long asfwlogwatchis running, the DNS cache can be initialized with the-ioption. slow DNS is the villain of this story π-Oorder β This is the sort order of the summary and packet cache. Since entries often are equal in certain fields you can sort by several fields one after another (the sort algorithm is stable, so equal entries will remain sorted in the order they were sorted before). The sort string can be composed of up to 11 fields of the form ab where a is the sort criteria:ccount,tstart time,eend time,zduration,ntarget name,pprotocol,bbyte count (sum of total packet lengths),Ssource host,ssource port,Ddestination host andddestination port. b is the direction:aascending andddescending. Sorting is done in the order specified, so the last option is the primary criteria. The default in summary mode istacd(start with the highest count, if two counts match list the one earlier in time first) of whichtais built in, so if you specify an empty sort string or everything else is equal entries will be sorted ascending by time. The realtime response mode default iscd(tais not built in). π-Pformat β Only use certain parsers, where the log format can be one or a combination of:iipchains,nnetfilter,fipfilter,bipfw,cCisco IOS,pCisco PIX/ASA,eNetScreen,lElsa Lancom andsSnort. The default is to use all parsers except the ones for NetScreen, Elsa Lancom and Snort logs. pick your fighters π-pβ Differentiate protocols. This is activated automatically if you differentiate source and/or destination ports.-sβ Differentiate source ports.-Utitle β Set title as title of the report and status page.-vβ Be verbose. You can specify it twice for more information. In very verbose mode while parsing the log file you will see"."for relevant packet filter log entries,"r"for 'last message repeated' entries concerning packet filter logs,"o"for packet filter log entries that are too old and"_"for entries that are not packet filter logs. little secret codes, iykyk π€-yβ Differentiate TCP options. All packets with a SYN are listed separately, other TCP flags are shown in full format if they are available (ipchains does not log them, netfilter and ipfilter do, Cisco IOS doesn't even log SYNs). rip Cisco IOS SYNs π
β¨ LOG SUMMARY MODE β¨
This are additional options that are only available in log summary mode:
-Cemail β A carbon copy of the summary will be sent by email to this address. cc'd, bestie π-eβ Show timestamp of the last packet logged for this entry. End times are only available if there is more than one packet log entry with unique characteristics.-Femail β Set the sender address of the email.-ltime β Process recent events only. See TIME FORMAT below for the time options.-ofile β Specify an output file.-Sβ Do not differentiate source IP addresses.-Temail β The summary will be sent by email to this address. If HTML output is selected the report will be embedded as attachment so HTML-aware mail clients can show it directly. fancy π-tβ Show timestamp of the first packet logged for this entry.-Wβ Look up information about the source addresses in the whois database. This is slow, please don't stress the registry with too many queries. be nice to the registry, they're doing their best π«Ά-wβ Produce output in HTML format (XHTML 1.1 with CSS).-zβ Show time interval between start and end time of packet log entries. This is only available if there is more than one packet log entry with unique characteristics.
β¨ REALTIME RESPONSE MODE β¨
-Rβ Enter realtime response mode. This means: detach and run as daemon until theTERMsignal (kill) is received. TheHUPsignal forces a reload of the configuration file, theUSR1signal forcesfwlogwatchto reopen and read the input file from the beginning (useful e.g. for log rotation). All output can be followed in the system log. it just goes and lives its daemon life π¦-acount β Alert threshold. Notify or start countermeasures if this limit is reached. Defaults to5.-ltime β Forget events that happened this long ago (defaults to1 day). See TIME FORMAT below for the time options.-kIP/net β This option defines a host or network in CIDR notation that will never be blocked or other actions taken against. To specify more than one, use the-kparameter again for each IP address or network you want to add. protected list, do not touch π‘οΈ-Aβ The notification script is invoked when the threshold is reached. A few examples of possible notifications are included infwlw_notify, you can add your own ones as you see fit.-Bβ The response script is invoked when the threshold is reached. Using the example scriptfwlw_respondthis will block the attacking host with a new firewall rule. A new chain forfwlogwatchactions is inserted in the input chain and block rules added as needed. The chain and its content is removed iffwlogwatchis terminated normally. The example scripts contain actions for ipchains and netfilter, you can modify them or add others as you like. this one is the "fight back" button π₯-Xport β Activate the internal web server to monitor and control the current status of the daemon. It listens on the specified port and by default only allows connections from localhost. The default user name isadminand the default password isfwlogwat(since DES can only encrypt 8 characters). All options related to the status web server can be changed in the configuration file. π and yes the password is really that, DES said 8 chars max, not our fault
β¨ INPUT FILES β¨
You can specify one or more input files (if none is given it defaults to /var/log/messages ). Relevant entries are automatically detected so combined log files (e.g. from a log host) are no problem. Compressed files are supported (except in realtime response mode where they don't make sense anyway). The '-' sign may be used for reading from standard input (stdin). In realtime response mode the file needs to be specified with an absolute path since the daemon uses the file system root (/) as working directory. absolute paths only in daemon mode bestie, it's a whole thing π
β¨ TIME FORMAT β¨
Time is specified as nx where n is a natural number and x is one of the following: s for seconds (this is the default), m for minutes, h for hours, d for days, w for weeks, M for months and y for years. β³
β¨ FILES β¨
/etc/fwlogwatch/fwlogwatch.configβ Default configuration file./var/log/messagesβ Default input log file./run/fwlogwatch.pidβ Default PID file generated by the daemon in realtime response mode if configured to do so.
and that's just part one, bestie β there's more coming, don't go anywhere πΈ
β¨ FEATURES ONLY IN CONFIGURATION FILE β¨
okay so these next ones are only available in the configuration file, not on the command line. they're presented and explained in more detail in the sample configuration file. iykyk π
π¨ HTML colors and stylesheet π¨
bestie, you can customize the colors of the HTML output and the status page, and you can reference an external cascading stylesheet. it's giving full aesthetic control β¨π
πΉοΈ Realtime response options πΉοΈ
these can all be configured:
- Verification of
ipchainsrules PIDfile handling- the user
fwlogwatchshould run as - the location of the notification and response scripts
- which address the status web server listens on
- which host can connect
- the refresh interval of the status page
- the admin name and password
π SECURITY π
okay so because fwlogwatch is literally a security tool, special care was taken to make it secure. periodt. π₯
You can and should run it with user permissions for most functions, and you can make it setgid for a group that /var/log/messages is in, if all you need is to be able to read this file. π«Ά
Only the realtime response mode with activated ipchains rule analysis needs superuser permissions, but you might also need them to write the PID file, for actions in the response script and for binding the default status port. π
However, you can configure fwlogwatch to drop root privileges as soon as possible after allocating these resources β and heads up, the notification and response scripts will still be executed with user privileges and log rotation might not work. π
π AUTHOR π
Boris Wesslowski <bw@inside-security.de> β the legend behind this whole page. πβ¨
and that's a wrap on FWLOGWATCH(8)! page date: November 11, 2011. bye bestie, stay iconic π
β¨π¦
π¦ where this page comes from
- debian bookworm: fwlogwatch 1.4-4 Β· GPL-2.0-or-later
- debian trixie: fwlogwatch 1.4-5 Β· GPL-2.0-or-later
- ubuntu jammy: fwlogwatch 1.4-3 Β· GPL-2.0-or-later
- ubuntu noble: fwlogwatch 1.4-4 Β· GPL-2.0-or-later
- ubuntu questing: fwlogwatch 1.4-5
- ubuntu resolute: fwlogwatch 1.4-6 Β· GPL-2.0-or-later
- ubuntu stonking: fwlogwatch 1.4-6 Β· GPL-2.0-or-later
- Copyright (C) 2000-2013 Boris Wesslowski
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms