Provided by: natlog_2.00.00-1_amd64 bug

NAME

       natlog - source-nat logging tool

SYNOPSIS

       natlog [OPTIONS] command

DESCRIPTION

       Firewalls  like  iptables(1)  may offer POSTROUTING (source network address translation, snat) facilities
       changing the source address of a host behind the firewall to the address of the  host  connected  to  the
       outer world. With snat the following combinations of IP addresses and port numbers are encountered:

       o      the IP address and port number used by the host behind the firewall initiating a connection to the
              outer world (the source host, in this manual page referred to as IPsrc, sport);

       o      the  IP  address and port number of the host that IPsrc connects to (the destination host, in this
              manual page referred to as IPdst, dport);

       o      the IP address and port number used by the firewalling host when source natting  IPsrc  and  sport
              (the firewall host, in this manual page referred to as IPfw, fwport).

       Source  natting  usually  uses  sport  for  fwport,  but  fwport may already be in use, in which case the
       firewalling host must use another, available port to forward communication from IPsrc,  sport  to  IPdst,
       dport.

       The general scheme that applies to source natting, therefore, looks like this:

           IPsrc:sport is translated by the firewall to IPfw:fwport;
           IPfw:fwport is used when communicating with IPdst:dport.

       From  the  perspective  of  the  destination  host  the  communication  originates  at  IPfw::fwport  and
       consequently all communication (e.g., incident reports) sent by  the  systems  administrator  maintaining
       IPdst to IPfw’s systems administrator will refer to IPfw:fwport, rather than to IPsrc::sport.

       The standard log facilities provided by iptables do not easily allow relating IPfw:fwport to IPsrc:sport,
       and natlog was developed to fill in that particular niche.

       Natlog  provides  data  about  source  natting  in  various  forms. The standard logging mode consists of
       messages sent to the syslog daemon (cf., rsyslogd(1)) and/or to the standard output  stream  showing  the
       essential  characteristics  of  connections  using source natting. Here is an example of a logged message
       (log-entries occupy single lines; the line-breaks below are to enhance readability):

           NATLOG: from 1338990672:55588 thru 1338990747:807100 (UTC): tcp
               192.168.19.72:4467 (via: 129.125.90.132:4467) to
               to 200.49.219.180:443; sent: 802, received: 7669

       The values 1338990672:55588 and 1338990747:807100 are time stamps showing the  begin-  and  end-times  in
       seconds:microseconds of a tcp connection since the beginning of the epoch (Jan 1, 1970, 0:00 UTC). Natlog
       offers  the  --time  option  for requesting human-readable time specifications like Nov 2 13:29:11 rather
       than time representations using seconds and micro seconds.

       The next value (192.168.19.72:4467) represents IPsrc::sport. This  is  followed  by  129.125.90.132:4467,
       representing IPfw:fwport. The third pair of values (200.49.219.180:443) represents IPdst:dport.

       In this example, host 192.168.19.72, using port 4467, connected to host 200.49.219.180, port 443. To this
       latter  host  the  connection  appears  to have originated from 129.125.90.132 port 4467. The log message
       allows us to associate this with  the  `real’  host  and  port  from  which  the  connection  originated:
       192.168.19.72:4467.

       The  final  entries  show the number of bytes that were sent by the source-host (IPsrc) and received from
       the destination-host (IPdst).

       When natlog is terminated it can no  longer  track  connections  that  are  still  open.  If  natlog  was
       terminated (by a SIGINT or SIGTERM signal), then it logs a `terminating’ line, followed by an overview of
       all  (potentially)  still open connections. Those connections are flagged with a trailing ’(EOP)’ (end of
       program) log-element, and their end-times show natlog’s termination  time.  Incomplete  connections  show
       (INCOMPLETE).

       In  addition  to the standard logs the option --log-data is available. This option requires the path to a
       file where information is logged in tabular form, which can easily be processed by  statistical  software
       like  R(1).  When  specifying  this option information will be appended to an existing file. When the log
       file does not yet exist it is created. The first line of the thus written log files names the columns  of
       the table. The column names are (all on one line):

           type, srcNr, srcIP, srcPort, dstNr, dstIP, dstPort,
               sent, recvd, begin,  end, beginTime, endTime, status

       Most  column labels will be self-explanatory. Type indicates the connection type, logged as icmp, tcp, or
       udp; srcNr and dstNr are the 32 bit numeric values of, respectively, the source host’s IP address and the
       destination host’s IP address (decimal representations); begin and end are the times in seconds since the
       beginning of the epoch, corresponding to the times displayed at,  respectively,  beginTime  and  endTime;
       status  indicates  the  status  of  the logged connection information: ok indicates a connection that was
       normally completed; incomplete indicates that  the  connection  was  recognized,  but  was  not  normally
       completed;  eop  is  used  for connections that were still active by the time natlog terminates. When the
       status equals incomplete, the time entries show the times of receiving the first and last packets of that
       connection; when eop, then the end and endTime entries show natlog’s termination time.

       Log entries look like this (each entry  occupies  one  line,  header  line  and  logged  data  lines  are
       right-aligned):

           tcp, 101820608,    192.168.17.6,        48886,
               4012145084,  188.121.36.239,           80,
                      430,            2266,   1517387644,    1517387644,
               Jan 31 08:34:04:318340, Jan 31 08:34:04:383170,  ok

MODES AND COMMANDS

       o      conntrack:  the  `conntrack’-mode.  This  command  can only be used on platforms using iptables(1)
              where conntrack(1) has  also  been  installed.  Information  about  source-natted  connections  is
              obtained  from  conntrack(1)’s  output. In this mode all, or one of the (by default) tcp, udp, and
              icmp layer four protocols can be monitored.

              By default conntrack does not report byte counts. To have conntrack report byte counts the command

                   $ echo 1 > /proc/sys/net/netfilter/nf_conntrack_acct

              must have been issued before starting conntrack.

              Conntrack includes the sizes of the IP headers (usually 20 bytes) in reported byte  counts.  Thus,
              icmp  packets  are usually reported as having size 84, even though ping(1) reports a payload of 64
              bytes. Since the actual sizes of IP headers cannot be  determined  from  conntrack’s  output,  the
              sizes  reported when using natlog’s conntrack mode are as reported by conntrack, and are therefore
              not corrected for IP header lengths. The option --conntrack-ip-header-size can be used to  correct
              for the (assumed) IP header sizes.

              See also the conntrack-command option.

       o      indevice  outdevice:  the  `devices’-mode.  Here,  indevice  is  the name of the device behind the
              firewall: addresses living behind the indevice are source-natted to the firewall host’s IP address
              when passed on to the outdevice;

              outdevice is the name of the device where source-natted packets are forwarded to, and  from  where
              replies for source-natted hosts living behind the indevice are received. With this command all, or
              any combination of the (by default) tcp, udp, and icmp layer four protocols can be monitored.

       o      infile  in-address  in-mask  outfile out-address out-mask: the `tcpdump’-mode. This command can be
              used to process tcpdump(1) generated binary files, generated on  the  source-natting  host.  If  a
              source  natting  host  uses  interface eth1 behind the firewall and eth0 to connect to the outside
              world, then the follow tcpdump commands produce the required binary  files  (these  commands  will
              normally be run in the background, hence the trailing &):

                  tcpdump -wi eth0 /tmp/eth0 &
                  tcpdump -wi eth1 /tmp/eth1 &

              To  have  natlog  process  these  files,  terminate  the  tcpdump commands, and transfer the files
              /tmp/eth0 and /tmp/eth1 to the host where  natlog has been installed. The required  addresses  and
              masks are shown by the ifconfig(1) command. E.g.,

              eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
                    inet 129.125.1.123  netmask 255.255.0.0
                                        broadcast 129.125.255.255

              eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
                      inet 192.168.1.1  netmask 255.255.255.0
                                        broadcast 192.168.1255

              The  relevant  info is shown in the lines following the interface’s name: the value following inet
              is the interface’s IP address, and the value following netmask is the network’s mask.

              Combining files and addresses, natlog is run as follows (all on one line):

                  natlog  /tmp/eth0 129.125.1.123  255.255.0.0
                          /tmp/eth1 192.168.1.1 255.255.255.0

              Instead of fully specifying the netmask, netmaks specifications like /24  are  also  accepted.  In
              that  case the number following the slash indicates the number of non-zero bits of the netmask. In
              practice, each value of the netmask is either 255 (8 bits are set) or 0 (0 bits are set),  and  so
              255.255.0.0 can also be specified as /16, while 255.255.255.0 can be specified like /24.

OPTIONS

       o      --config=config-path (-c)
              The  argument  config-path  defines  the  path  to  natlog’s  configuration file. By default it is
              /etc/natlog.conf. All configuration options have defaults, which are used  when  no  configuration
              file and no command-line options were provided.

              All  options,  except  for  config,  help,  verbose  and  version  can  also  be  specified in the
              configuration file. The configuration file ignores  empty  lines  and  all  information  on  lines
              beginning  with  a hash-mark (#). In the configuration file initial hyphens should be omitted, and
              option names may immediately be followed by a colon. Multi-word arguments should not be surrounded
              by quotes. Examples:

                  stdout
                  syslog-facility: LOCAL0

              Command-line options override configuration file options.

       o      --conntrack-command=path [options]
              The path and options to the conntrack(1) program. By default this is

                  /usr/sbin/conntrack -p tcp -E -n -o timestamp -e NEW,DESTROY

              resulting in:

              - Monitoring the tcp layer four protocol;
              - Displaying real-time event logs (-E);
              - Displaying time stamps (-o timestamp);
              - Logging all new and destroyed (ended) events (-e NEW,DESTROY);

              By default tcp is monitored. Other protocols can be configured using the --protocol option.

              The conntrack program must be available when requesting natlog’s  conntrack  command.  Layer  four
              protocols  other  than  tcp,  udp  and icmp are currently not supported. A subset of the supported
              protocols may be requested using conntrack’s -p tcp, -p udp or -p icmp options.

       o      --conntrack-device=dev
              By default conntrack monitors the information made available at the /proc/net/nf_conntrack device.
              When another device is used, it can be specified using this option.

       o      --conntrack-ip-header-size=size
              This option can be used to correct for the IP header sizes. By default, conntrack  includes  these
              sizes  in  reported  byte counts. By specifying this option packet sizes reported by conntrack are
              reduced by size. Commonly IP headers consist  of  20  bytes  (so,  to  correct  for  this  specify
              --conntrack-ip-header-size 20).

       o      --conntrack-restart=max
              If  the  conntrack  process  prematurely  ends  it  is restarted at most max times (these are pure
              restarts: conntrack’s initial startup is not counted for this option). By default 10 restarts  are
              allowed.

       o      --help (-h)
              Write basic usage information to the standard output stream and terminate.

       o      --log=argument
              By  default  natlog  forwards  log  messages about natlog and connection information to the syslog
              daemon using the DAEMON facility with priority NOTICE (see below at the syslog* options). This  is
              identical  to  specifying the argument syslog. Alternatively, specify the argument off to suppress
              writing log messages. Any other argument is interpreted as  a  path-specification  to  a  file  to
              receive  the  log  messages: log-messages are appended to existing files. If the log file does not
              yet exist it is first created.

       o      --log-data=path
              Path specifies the pathname of the file where information about observed connections is written in
              tabular form. Information is appended to existing files. If path does not yet exist  it  is  first
              created. Refer to the DESCRIPTION section for information about the format of the generated table.
              Specify  ""  as  command-line  option  if the configuration file specifies a log data file but you
              don’t want the data to be logged in a particular run of natlog.

       o      --log-rotate=spec
              This option is used to specify the frequency and the number of  log-files  that  are  rotated.  By
              default log-files are not rotated.
              Specify  time[mhd]  or  time[mhd]nFiles.  A  time unit specification must follow time and is m for
              minutes, h for hours, and d for days. nFiles specifies the max. number of rotated files.  If  only
              time[mhd]  is  specified, then nFiles is set to 1.  By default (or if time or nfiles are specified
              as zero) log files are not rotated.

       o      --no-daemon
              By default, natlog runs in the background (a daemon). Natlog runs as an ordinary program (i.e., in
              the foreground when the option no-daemon is provided). When running as  a  daemon,  --stdout  (see
              below)  is  suppressed,  and  --verbose messages (see below) are sent to the syslog daemon, unless
              --no-syslog was specified. When using the tcpdump-mode natlog does not run in the  background.  In
              this  case,  if  no-daemon  is  omitted  a  warning  message is logged, and natlog continues as an
              ordinary program.

       o      --pid-file=path (-p)
              When natlog runs in the background, then path is the name of the path  of  the  file  holding  the
              daemon’s  process-id.  By  default  this  is  /run/natlog.pid. To end the daemon, send a SIGINT or
              SIGTERM signal to the process id mentioned in the pid-file. Natlog  ignores  SIGHUP  signals  (but
              writes a log message when receiving a SIGHUP interrupt).

       o      --protocol=specification (-P)
              The  protocol(s)  to  monitor.  By  default  the  tcp  layer four protocol is monitored. Currently
              natlog’s conntrack command can monitor the tcp, udp, and icmp layer  four  protocols.   Using  the
              protocol  option  (note: singular!)  any subset of these protocols can be selected by specifying a
              colon-separated subset of tcp, udp, and icmp (e.g., --protocol udp:tcp). The specification all can
              be used to monitor all three protocols (tcp, udp, and icmp). When using the conntrack-mode, only a
              single protocol (including all) can be specified.

       o      --stdout (-s)
              Syslog-equivalent messages are sent to the standard output.  This option is implied by  --verbose,
              but is suppressed once natlog runs as a daemon.

       o      --syslog-facility=facility
              The  facility  that  is  used  to  write the syslog messages to. By default this is DAEMON. For an
              overview of facilities and their meanings,  see,  e.g.,  syslog(3).  With  natlog  the  facilities
              DAEMON, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7, and USER can be used.

       o      --syslog-priority=priority
              The  priority  that  is  used  to  write the syslog messages to. By default this is NOTICE. For an
              overview of priorities  and  their  meanings,  see,  e.g.,  syslog(3).  With  natlog  all  defined
              priorities can be used. E.g.,  EMERG, ALERT, CRIT, ERR, WARNING, NOTICE, INFO and DEBUG.

       o      --syslog-tag=tag
              When  syslog  messages  are generated they can be provided with a tag, which can be used to filter
              natlog’s syslog messages from the log-files. By default the tag NATLOG is used. See  also  section
              RSYSLOG FILTERING below.

       o      --terminate
              When  natlog  is  running  as  a  daemon,  a  separate command natlog --terminate can be issued to
              terminate the daemon. This assumes that the default pid-file (/run/natlog.pid) was used or that  a
              non-default pid-file was specified in the default configuration file. If not, then the location of
              the  pid-file  or  the location of the non-default configuration file must also be specified. When
              the daemon could be terminated 0 is returned. Otherwise, an error message is displayed  and  1  is
              returned,

       o      --time=spec (-t)
              By default time stamps written by natlog are in raw, numeric form. E.g.,

              NATLOG: From 1338990672:55588 thru 1338990747:807100

              These time stamps indicate times in seconds:microseconds since the beginning of the epoch, January
              1,  1970,  0:00 UTC. This option can be used to change the seconds part of the time stamps to more
              conventional representations.
              Specify raw (the default) for the default representation in seconds since the epoch;
              specify utc for a representation like Jun 6 13:29:11, using Universal Time Coordinated;
              specify local for a representation like Jun 6 13:29:11, using the local time zone defined  by  the
              computer running natlog.

       o      --ttl=secs[ui] (-T)
              time-to-live  for  received  connections. At most two time-to-live specifications can be provided:
              for udp/icmp connections a letter u must be appended to the specified seconds. By default  60u  is
              used.  For  tcp connections a letter t must be appended to the specified seconds. By default 3000t
              is  used.  Both  time-to-live  specifications  may  be  combined:  --ttl  120u1800t  specifies   a
              time-to-live  of  two  minutes for udp/icmp connections and a time-to-live of half an hour for tcp
              connections. Time-to-live is not used in conntrack-mode.

       o      --verbose (-V)
              Additional messages about natlog’s mode of operation are sent to the standard output stream.  When
              natlog  runs  as  a  daemon  these  messages are sent to the syslog daemon, unless --no-syslog was
              specified.

              When --verbose is specified twice then all actual configuration parameters are shown  just  before
              natlog starts.

              When  --verbose  is  specified  more  often  then  natlog  ends  after reporting the configuration
              parameters.

       o      --version (-v)
              Write natlog’s version number to the standard output stream and terminate.

RSYSLOG FILTERING

       When using rsyslogd(1) property based filters may be used to filter syslog messages and write them  to  a
       file of your choice. E.g., to filter messages starting with the syslog message tag (e.g., NATLOG) use

       :syslogtag, isequal, "NATLOG:"   /var/log/natlog.log
       :syslogtag, isequal, "NATLOG:"   stop

       Note that the colon is part of the tag, but is not specified with the syslog-tag option.

       This causes all messages having the NATLOG: tag to be written on /var/log/natlog.log after which they are
       discarded.      More      extensive      filtering      is      also      supported,      see,      e.g.,
       http://www.rsyslog.com/doc/rsyslog_conf_filter.html and http://www.rsyslog.com/doc/property_replacer.html

EXAMPLES

       Examples of natlog activations:

       o      natlog --no-daemon --no-syslog -s br0 eth0
              Natlog remains active as a foreground process, no syslog messages are  written,  syslog-equivalent
              message  are  written to the standard output. Natlog uses the pcap library to capture packets from
              the br0 device, which is active behind the firewall, and to capture packets from the eth0  device,
              which is the device to where source-natted packages are sent.

       o      natlog conntrack
              Depending  on  the  options  specified in /etc/natlog.conf (or, if not available, natlog’s default
              options) source-natted connections are obtained from conntrack(1). By default natlog continues  as
              a daemon process, generating syslog messages using syslog tags NATLOG:, and containing information
              about source-natted connections.

       Here  is  natlog’s  default  configuration  file.  Empty lines and lines starting with hash-marks (#) are
       ignored. Options adhere to the following syntax:

       option  value

       Option and value are separated by white space, a colon may be appended to option names:

       # This configuration file shows the default option values.

       # all options and values are case sensitive
       # see `man natlog’ for further details

           # the path and options of the conntrack program:
           # when no filtering options are specified, the tcp
           # protocol is monitored
           # the default command is shown:
       #conntrack-command:  /usr/sbin/conntrack -p tcp -E -n -o timestamp \
                                                               -e NEW,DESTROY"

           # the device used by conntrack
       #conntrack-device:  /proc/net/nf_conntrack

           # correction for the IP header size
           # (standard IP header size is 20 bytes)
       #conntrack-ip-header-size:  0

           # max. number of conntrack restarts
       #conntrack-restart: 10

           # data file for tabular logs (specify path, default:
           # data file is not used)
       #log-data:

           # flush the log-data file after writing log-data-flush lines
       #log-data-flush: 32

           # do not run as a daemon (by default: natlog runs as a daemon)
       #no-daemon

           # do not write messages handled by syslog
       #no-syslog

           # the path to the pid-file of natlog’s daemon process
       #pid-file: /run/natlog.pid

           # the protocols that are scanned with the ’conntrack’ command:
           #   protocol: all       - monitors tcp, udp, icmp
           #   protocol: udp:tcp   - monitors upd and tcp (any non-empty subset,
           #                         possibly including icmp is OK)
           # ignored when conntrack-command is specified
       #protocol: tcp

           # write messages to stdout (ignored by daemons)
       #stdout

           # the default syslog facility:
       #syslog-facility: DAEMON

           # the default syslog priority:
       #syslog-priority: NOTICE

           # the default syslog tag:
       #syslog-tag: NATLOG

           # the time specification:
       #time: raw

           # ttl: time to live (seconds) for udp/icmp connections
       #ttl: 60

       # end of the configuration file

FILES

       o      /etc/natlog.conf: default configuration file location.

SEE ALSO

       conntrack(1), ifconfig(1), iptables(1), pcap-filter(7), ping(1), R(1), rsyslogd(1), syslog(3), tcpdump(1)

BUGS

       Natlog currently only processes tcp, udp and icmp layer four protocols.

AUTHOR

       Frank B. Brokken (f.b.brokken@rug.nl).

natlog.2.00.00.tar.gz                               2012-2018                                          natlog(1)