Today I will mention about arpwatch utility (developed by LBNL’s Network Research Group) as it is a small and very useful tool that will keep track of the Ethernet/IP address pairings and log every change which you can monitor and analyze.
Installation
I am using Debian so I will just execute apt-get to install arpwatch:
$ sudo apt-get install arpwatch |
Configuration
Default application arguments are stored in /etc/default/arpwatch configuration file:
# Global options for arpwatch(8). # Debian: don't report bogons, don't use PROMISC. ARGS="-N -p" # Debian: run as `arpwatch' user. Empty this to run as root. RUNAS="arpwatch" |
As you see arpwatch is not reporting any bogons (see “Log messages” below) by default so you need to remove the -N parameter to disable this behavior.
Main configuration is stored in /etc/arpwatch.conf file:
# /etc/arpwatch.conf: Debian-specific way to watch multiple interfaces. # Format of this configuration file is: # #<dev1> <arpwatch options for dev1> #<dev2> <arpwatch options for dev2> #... #<devN> <arpwatch options for devN> # # You can set global options for all interfaces by editing # /etc/default/arpwatch # For example: #eth0 -m root #eth1 -m root #eth2 -m root # or, if you have an MTA configured for plussed addressing: # #eth0 -m root+eth0 #eth1 -m root+eth1 #eth2 -m root+eth2 |
Use this file to define list of interfaces and additional parameters.
Execution
Use /etc/init.d/arpwatch script to start or stop service.
Log messages
This IP address doesn’t belong to the local subnet:
Mar 2 16:21:38 dhcp arpwatch: bogon 192.168.0.110 0:30:13:a0:a:1d |
This Ethernet/IP address pair has not been seen before:
Jul 1 18:11:15 dhcp arpwatch: new station 11.27.43.192 d4:2a:d1:61:6:84 |
This Ethernet/IP address pair has been used for the first time (six months period or more):
Jul 4 13:51:04 dhcp arpwatch: new activity 71.72.4.102 0:81:28:12:b3:d |
Ethernet address has changed:
Jul 6 18:31:25 dhcp arpwatch: changed ethernet address 18.17.16.15 fc:55:43:31:7:14 (0:71:12:2f:5a:12) |
Ethernet address has changed to the previous one:
Jul 27 17:27:19 dhcp arpwatch: flip flop 18.17.16.15 0:71:12:2f:5a:12 (fc:55:43:31:7:14) |
Ethernet address has changed to the older one:
Jul 29 13:32:13 dhcp arpwatch: reused old ethernet address 18.17.16.14 0:34:52:31:a:1d (d4:b1:d4:16:69:68) |
…
OpenBSD notes
In case you use different operating system like OpenBSD then you need to edit /etc/rc.local file and add arpwatch command with parameters to start it at boot.
# $OpenBSD: rc.local,v 1.39 2006/07/28 20:19:46 sturm Exp $ # Site-specific startup actions, daemons, and other things which # can be done AFTER your system goes into securemode. For actions # which should be done BEFORE your system has gone into securemode # please see /etc/rc.securelevel. echo -n 'starting local daemons:' # Add your local startup actions here. if [ -x /usr/local/sbin/arpwatch -a -d /var/arpwatch ]; then /usr/local/sbin/arpwatch -i fxp0 -n 10.0.1.0/24 -n 10.0.2.0/24 echo -n ' arpwatch' fi echo '.' |