Content-type: text/html
Manpage of ipaudit
ipaudit
Section: User Commands (1)
Updated: 2 May 2000
Index
Return to Main Contents
NAME
ipaudit - IP traffic summarizer
SYNOPSIS
ipaudit -HLNcefiolmprstwx <interface>
DESCRIPTION
ipaudit
is an IP traffic monitor. It listens to a network interface
in promiscuous mode (or reads data previously dumped to a file)
and tallies the total traffic for every "connection". A connection
is a combination of ip address pairs, protocol and for tcp/udp protocols,
the ports numbers.
OUTPUT
If hosts 105.33.41.107 telnets to
211.117.5.11 this creates a single connection.
ipaudit
will tally
the total bytes of traffic and total packet count in each direction
between the two hosts.
When
ipaudit
reports its findings, this
telnet connection will be listed as
105.033.041.107 211.117.005.011 6 1105 23 19934 2993 41 33
The columns are
(1) host 1 ip
(2) host 2 ip,
(3) protocol,
(4) host 1 port,
(5) host 2 port,
(6) host 1 bytes received,
(7) host 2 bytes received,
(8) host 1 packets received,
(9) host 2 packets received.
For protocol other then tcp/udp where there are no ports, the port
numbers are set to 0 in the output. Note that the host ip
octets are padded on the left with 0 to make 3 digits. This
help make the output more readable.
As another example, if the first host now sends 10 ping
packets to a non-existent host 105.33.41.188 then it will be
reported as an output line
105.033.041.107 105.033.041.188 1 0 0 0 680 0 10
This says that address 105.33.41.188 received 680 bytes in
10 packets of protocol 1 - even though there is no such
address!
The output is extended using the options. The -t option adds
the connection starting and ending times to each output line,
for example
105.033.041.107 211.117.005.011 6 1105 23 19934 2993 41 33
14:01:32.0495 14:04:23.9491 2 1
The -e option adds the ethernet address for the two hosts to
each output line,
105.033.041.107 211.117.005.011 6 1105 23 19934 2993 41 33
005000c0fa45 005000d1cc21
OPTIONS
- interface
-
Network interface to read data from.
- -r <dumpfile>
-
Reads network info from <dumpfile> instead of reading live from network.
Such a dumpfile could have been produced by the programs
ipaudit,
tcpdump
or
ethereal
(http://www.zing.org).
You can read from standard input using '-' as the file name.
- -c <npacket>
-
Terminate program after reading <npacket> packets.
- -w <dumpfile>
-
Writes first nlen bytes of every packet to <dumpfile>
(see -s option about nlen).
Can later be read by
ipaudit,
tcpdump
or
ethereal.
The -w option does not affect traffic analysis - it will still take place.
By default this writes ALL of the packets to the file. Use the -p
option to write traffic for specific protocols and ports only.
However the -p option does not affect normal output, all packets are
still logged and stored. Contrast this with the -f option.
- -p prot[,port..][:prot[,port..]..
-
Only dump packets with specific protocols and ports. For example,
-p1:6:17 dumps only packets with protocols 1 (icmp), 6 (tcp) and
17 (udp). You can also break down udp and tcp packets by port
numbers - for example -p1:6,21,23 will only dump icmp packets,
ftp packets (protocol 6, port 21) and telnet packets
(protocol 6, port 23).
- -s <nlen>
-
Save no more than first <nlen> packet bytes. Default is 96,
minimum is 68.
- -i <pidfile>
-
Save the program process id to <pidfile>. This is used to terminate
program execution when sampling time has expired. Use command like
kill -2 `cat <pidfile>`
to signal
ipaudit
to stop. Once
ipaudit
receives this signal, it will print a list
of traffic that it has seen.
- -l <local-ip>
-
Normally, the two ip address within a line of output are in sorted
order. But if you are monitoring a link between two networks, you
might want the addresses of one network to come first on an output
line. <local-ip> is the partial ip address of the network which
is listed first on the line. If neither ip address belongs to
the group of <local-ip> then they are printed in sorted order.
For example,
ipaudit -c 10000 -l 137.11 eth0
will tally 10,000 packets and list the results on-screen, placing
ip addresses beginning with 137.11 first on each output line.
Note that
ipaudit
pads the bytes with leading zeros, so that the output will actually
start like
137.011.nnn.nnn ...
- -m
-
Does not turn on promiscuous mode on interface. By default promiscuous
mode is enabled. Note that interface may be in promiscuous mode for
other reasons.
- -x <program>
-
After
ipaudit
ends, either from receiving a signal or reaching its packet limit
(-c option), call <program>. This option is intend for calling
reports scripts which read
ipaudit
output after completion. You can send at most one argument to
this program, for example
ipaudit -c 10000 -x 'report traffic.out' -o traffic.out eth0
runs
ipaudit
for 10,000 steps, places the output in the file traffic.out,
and then calls the program 'report' with the argument 'traffic.out'
- telling 'report' where to find its input file.
Note that to send an argument 'traffic.out' to 'report' we needed to
enclose both options together in a single pair of quotes. Without
the quotes -x would think that we were running 'report' without an
option (and, the option traffic.out would be interpreted as the
network interface - not what you wanted at all).
- -o <outfile>
-
Writes traffic list to <outfile> upon completion. By default,
it writes traffic to stdout.
- -t
-
Adds packets connection times to each line of traffic output. The
time are in the format HH:MM:SS.SSSS where HH, MM and SS are hours,
minutes and seconds (to a precision of 1/10,000). The first (second)
time is the time the first (last) packet in the connection was detected.
This is followed by two integers between 1 and 2. The first (second) integer
is the source machine of the first packet (second) packet. A 1 (2) means
the first (second) ip address on the line was the source.
- -b
-
Write traffic list in binary format (experimental).
- -e
-
Write ethernet addresses for each host. Program stops with
an error if you are using a non-ethernet interface.
- -f
-
Filter incoming packets according to filter string. For example,
ipaudit -f "host 137.99.17.17" eth0
will pass the string "host 137.99.17.17" to the pcap library's
filter routine. Thus ipaudit will only see packets with 137.99.17.17
in one of the two ip addresses. The filter commands are extensive and
are explained fully in the
tcpdump
man page.
Note that the -f command is different from the -p command. The -f
command filters packets
before
ipaudit
reads them. Thus -f affects what is stored in the normal
output (directed by the -o command) AND in the packet dump
(directed by the -w command).
The -p command filter packets
after
ipaudit
reads them, but before it writes them to the dump file. Thus
the normal output (-o) is not affected, but the packet dump (-w)
is.
- -H
-
Store host IPs only. On output
the protocol and port fields will be set to zero.
- -L hostportlimit, hostlimit
-
Normally information is stored for every
connection
, which is a combination of host ip addresses, protocol and ports.
Sometimes the traffic that is monitored will have a large number
of connections, for example when scans are taking place where the
ports numbers change repeatedly.
hostportlimit
sets a limit on the number of connections stored with unique
port addresses. Otherwise ipaudit's hash table can overflow
memory. When this limit is exceeded, ipaudit will set all
ports to zero and store only host ips and protocols.
Under some conditions even this precaution is not enough,
for example when a Denial of Service attack where every
packet has a unique forged source ip address.
hostlimit
sets a limit on the number of unique host pairs which
are stored. When this limit is exceeded then every host
ip is stored as 0.0.0.0. Only the protocol number will
remain unchanged.
By default there is no hostportlimit or hostlimit. You might
want to set these limits. If so set them larger than your
typical connection count. In our case the connection count
never exceeds 200000 unless there is a DoS attack.
The option -L500000,100000 works for us.
- -N <n_hash_slots>
-
ipaudit
stores connections in a hash table.
The number of slots in this table is set when the program
starts. Each slot can hold multiple connections, and
storage and retrieval become inefficient when there are
too few slots. You can control the number of slots with
this option. The default number of slots (typically
1,000,000) is printed when the -v option is given.
EXAMPLES
- ipaudit -w dump.fil -p1:2:6,21,23 eth0
-
This runs tells
ipaudit to write all packet header for
icmp, telnet, and ftp to dump.fil and to read traffic from
the network interface eth0.
ipaudit
will continue to run until it is interrupted with control-C or
the kill command, at which time it will list on the terminal
a summary of traffic that it saw.
- ipaudit -i ipaudit.pid -o traffic.out le0
-
Read traffic from interface le0 and place in the file
traffic.out when program completes. The process id number
is written to
ipaudit.pid at the program start. Thus you can terminate
ipaudit
with the command
kill -2 `cat ipaudit.pid`
- ipaudit -c 50000 eth0 > traffic.out
-
Read 50,000 packets of traffic from eth0, pipe default
stdout output into file traffic.out.
EXAMPLE OUTPUT
without -t option
192.051.201.068 192.051.201.076 6 2076 139 0 58 0 1
192.051.201.001 224.000.000.009 17 520 520 0 1092 0 2
192.051.091.021 192.051.091.127 17 138 138 0 243 0 1
192.051.221.242 192.051.221.255 17 138 138 0 248 0 1
192.051.201.021 192.051.201.070 17 123 123 180 180 2 2
Columns are ip address for first (second) machine,
protocol number (1 is icmp, 6 is tcp, 17 is udp),
udp/tcp ports on first (second) machine (set to 0 if protocol not udp/tcp),
bytes received by first (second) machine,
number of packets recevied by first (second) machine.
with -t option
192.051.201.068 192.051.201.076 6 2076 139 0 58 0 1 13:38:59.8229 13:38:59.8229 1 1
192.051.201.001 224.000.000.009 17 520 520 0 1092 0 2 13:38:59.1435 13:38:59.9248 1 1
192.051.091.021 192.051.091.127 17 138 138 0 243 0 1 13:38:56.5373 13:38:56.5373 1 1
192.051.221.242 192.051.221.255 17 138 138 0 248 0 1 13:38:54.7191 13:38:54.7191 1 1
192.051.201.021 192.051.201.070 17 123 123 180 180 2 2 13:38:54.6649 13:38:57.5350 2 1
As above but with the addition of time the first (last) packet was detected, and the
machine which
sent
the first (last) packet.
BUGS
Hash table size is fixed at run-time. Would be nice to have dynamically
adjusted hash table size.
Report any bugs to jon.rifkin@uconn.edu. If possible, run with -d
option and email output. Thanks.
AUTHOR
j rifkin <jon.rifkin@uconn.edu>
http://www.sp.uconn.edu/~jrifkin
VERSION
0.92 June 20, 2000
SEE ALSO
ipstrings(1)
total(1)
tcpdump(1)
pcap(3)
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- OUTPUT
-
- OPTIONS
-
- EXAMPLES
-
- EXAMPLE OUTPUT
-
- BUGS
-
- AUTHOR
-
- VERSION
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 16:14:28 GMT, June 20, 2000