内部ネットワークでそれなりにセキュリティを考慮するならば、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アドレスの目安としても使える。