LAN内で利用されているIPアドレス・MACアドレスを監視する『arpwatch』

内部ネットワークでそれなりにセキュリティを考慮するならば、LANに接続する機器を把握・監視しておきたいものだろう。
そんな時に使えるのが、今回紹介する『arpwatch』コマンドだ。

デーモンとして起動させておく事で、LANネットワーク内に変動(新しいMACアドレスが認識されるなど)があった場合、メールでその旨を都度報告してくれる。
また、特定のファイルに現在のIPアドレスとMACアドレスの状態を出力してくれるので、現時点で利用されているIPアドレス一覧を取得することも可能となっている。

1.インストール

まずはインストールから。以下のコマンドでインストールを行う。

Debian/Ubuntuの場合

apt-get install arpwatch

RHEL系の場合

yum install arpwatch

これでインストールが完了する。

2.設定変更・サービス起動

インストールが完了したら、設定変更・サービスの起動を行う。
arp-watchはひとつのNICを監視するため、NICが一つ、もしくはeth0のみを監視するのであれば、そのままサービスを起動させる。

service arpwatch start

eth0以外のNICを監視する場合は、以下のように設定ファイルを変更する。
(一応、事前にバックアップを取得しておくこと)

2-1.Debian/Ubuntuの場合

「/etc/default/arpwatch」というファイルに、起動時のオプションが記述されている。

/etc/default/arpwatch

# 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"

この「ARGS=~」を、以下のように変更すると良いだろう。

ARGS="-N -p <span style="color: #ff0000;">-i NIC名</span>"

2-2.RHEL系の場合

「/etc/sysconfig/arpwatch」というファイルに、起動時のオプションが記述されている。

/etc/sysconfig/arpwatch

# -u <username> : defines with what user id arpwatch should run
# -e <email> : the <email> where to send the reports
# -s <from> : the <from>-address
OPTIONS="-u arpwatch -e root -s 'root (Arpwatch)'"

この「OPTIONS=~」を、以下のように変更すると良いだろう。

OPTIONS="-u arpwatch -e root -s 'root (Arpwatch)' <span style="color: #ff0000;">-i NIC名</span>"

設定の変更ができたら、サービスを起動する。

3. 起動後の状態確認

サービス起動後、対象のNICが所属しているネットワークのARPの状態を取得していく。
その経過は、syslogで記録されていく。
DebianやUbuntuであれば「/var/log/syslog」へ、RHEL系であれば「/var/log/messages」へ以下のようなログが出力されるはずだ。
※2行目のは、単純にsendmailの設定をしていないだけなので気にしないように…

Apr 27 20:01:18 test-vm-ubuntu arpwatch: flip flop 192.168.0.XXX 28:XX:da:ef:XX:6c (0c:XX:21:XX:XX:4d) eth0
Apr 27 20:01:18 test-vm-ubuntu arpwatch: execl: /usr/lib/sendmail: No such file or directory
Apr 27 20:01:18 test-vm-ubuntu arpwatch: reaper: pid 29205, exit status 1

以後、変動を認識した順にログへの出力、メールの送信が行われる。
その他、「/var/lib/arpwatch/arp.dat」にも情報が出力される。

さすがにarp-scanのような使い方は出来ないが、LAN内で利用されているIPアドレスの目安としても使える。