By default, Shorewall directs NetFilter to log using syslog (8). Syslog
classifies log messages by a facility and a priority (using
the notation facility.priority).
The facilities defined by syslog are auth, authpriv, cron, daemon,
kern, lpr, mail, mark, news, syslog, user, uucp and local0 through
local7.
Throughout the Shorewall documentation, I will use the term level
rather than priority since level is the term used by NetFilter.
The syslog documentation uses the term priority.
Syslog Levels
Syslog levels are a method of describing to syslog (8) the importance
of a message and a number of Shorewall parameters have a syslog level as
their value.
Valid levels are:
7
debug
6
info
5
notice
4
warning
3
err
2
crit
1
alert
0
emerg
For most Shorewall logging, a level of 6 (info) is appropriate. Shorewall
log messages are generated by NetFilter and are logged using the kern
facility and the level that you specify. If you are unsure of the level
to choose, 6 (info) is a safe bet. You may specify levels by name or by
number.
Syslogd writes log messages to files (typically in /var/log/*) based
on their facility and level. The mapping of these facility/level pairs
to log files is done in /etc/syslog.conf (5). If you make changes to this
file, you must restart syslogd before the changes can take effect.
Configuring a Separate Log for Shorewall Messages
There are a couple of limitations to syslogd-based logging:
- If you give, for example, kern.info it's own log destination then
that destination will also receive all kernel messages of levels 5 (notice)
through 0 (emerg).
- All kernel.info messages will go to that destination and not just
those from NetFilter.
Beginning with Shorewall version 1.3.12, if your kernel has ULOG target
support (and most vendor-supplied kernels do), you may also specify a log
level of ULOG (must be all caps). When ULOG is used, Shorewall will direct
netfilter to log the related messages via the ULOG target which will send
them to a process called 'ulogd'. The ulogd program is available from http://www.gnumonks.org/projects/ulogd
and can be configured to log all Shorewall message to their own log file.
Download the ulod tar file and:
- cd /usr/local/src (or wherever you do your builds)
- tar -zxf source-tarball-that-you-downloaded
- cd ulogd-version
- ./configure
- make
- make install
If you are like me and don't have a development environment on your firewall,
you can do the first five steps on another system then either NFS mount
your /usr/local/src directory or tar up the /usr/local/src/ulogd-version
directory and move it to your firewall system.
Now on the firewall system, edit /usr/local/etc/ulogd.conf and set:
- syslogfile <file that you wish to log to>
- syslogsync 1
I also copied the file /usr/local/src/ulogd-version/ulogd.init to
/etc/init.d/ulogd. I had to edit the line that read "daemon /usr/local/sbin/ulogd"
to read daemon /usr/local/sbin/ulogd -d". On a RedHat system, a simple "chkconfig
--level 3 ulogd on" starts ulogd during boot up. Your init system may need
something else done to activate the script.
Finally edit /etc/shorewall/shorewall.conf and set LOGFILE=<file
that you wish to log to>. This tells the /sbin/shorewall program
where to look for the log when processing its "show log", "logwatch" and
"monitor" commands.
Updated 12/29/2002 - Tom Eastep
Copyright
© 2001, 2002 Thomas M. Eastep