Имеем:
FreeBSD 7.3-PRERELEASE
MTA sendmail
MySQL
Apache
Настройка arpwatch
Устанавливаем
cd /usr/ports/net-mgmt/arpwatch/ && make install clean
Заводим пользователя arpwatch. Он нам будет нужен для отправки почты.
sudo adduser
Username: arpwatch
Full name: Arpwatch pseudo-user
Uid (Leave empty for default):
Login group [arpwatch]:
Login group is arpwatch. Invite arpwatch into other groups? []:
Login class [default]:
Shell (sh csh tcsh zsh bash rbash nologin) [sh]: nologin
Home directory [/home/arpwatch]: /nonexistant
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]:
Username : arpwatch
Password :
Full Name : Arpwatch pseudo-user
Uid : 1004
Class :
Groups : arpwatch
Home : /nonexistant
Home Mode :
Shell : /usr/sbin/nologin
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (arpwatch) to the user database.
Add another user? (yes/no): no
Goodbye!
Редактируем /etc/rc.conf
arpwatch_enable="YES"
arpwatch_flags="-i em0 -m arpwatch@localhost"
Запускаем arpwatch
sudo /usr/local/etc/rc.d/arpwatch start
Проверяем
ps ax | grep arpw
1071 con- S 0:14.40 /usr/local/sbin/arpwatch -i em0 -m arpwatch@localhost -f arp.em0.dat
В логах увидим что то похожее в больших количествах:
May 17 16:38:55 servak arpwatch: new station 10.20.0.164 0:e0:4c:a1:4:f9
Так же в больших количествах будет приходить почта примерно такого содержания:
From lycane@servak.local Mon May 17 16:39:15 2010
Date: Mon, 17 May 2010 16:39:15 +0300 (VOLT)
From: arpwatch@servak.local (Arpwatch)
To: lycane@servak.local
Subject: new station
hostname:
ip address: 10.20.0.164
ethernet address: 0:e0:4c:a1:4:f9
ethernet vendor:
timestamp: Monday, May 17, 2010 16:39:14 +0300
Делаем вывод – arpwatch работает нормально :)
На время выполнения следующих манипуляций arpwatch лучше остановить. Но если не остановили сразу, то можно остановить потом и удалить из папки /usr/local/arpwatch файлики arp.dat и arp.dat-, чтобы при повторном запуске arpwatch наловил соответствий ip-mac по новой.
Настройка базы данных
create user arpwatch;
create database arp;
grant all on arp.
* to arpwatch
@localhost identified by
'password';
use arp
create table flip_flop
(hostname varchar
(255
), ip_address varchar
(15
), ethernet_address varchar
(17
), ethernet_vendor varchar
(255
), old_ethernet_address varchar
(17
), old_ethernet_vendor varchar
(255
), timestamp varchar
(19
), previous_timestamp varchar
(19
), delta varchar
(50
));
create table changed_ethernet_address
(hostname varchar
(255
), ip_address varchar
(15
), ethernet_address varchar
(17
), ethernet_vendor varchar
(255
), old_ethernet_address varchar
(17
), old_ethernet_vendor varchar
(255
), timestamp varchar
(19
), previous_timestamp varchar
(19
), delta varchar
(50
));
create table new_station
(hostname varchar
(255
), ip_address varchar
(15
), ethernet_address varchar
(17
), ethernet_vendor varchar
(255
), timestamp varchar
(19
));
create table new_activity
(hostname varchar
(255
), ip_address varchar
(15
), ethernet_address varchar
(17
), ethernet_vendor varchar
(255
), timestamp varchar
(19
));
Скачиваем скриптик arpwatch.pl, распаковываем и кладем в /usr/local/arpwatch. Он нам нужен для раскладывания информации, содержащейся в письмах, по соответствующим таблицам базы. Открываем его на редактирование, в самом верху находим строчки
$db_user = "";
$db_passwd = "";
$db_name = "";
$db_host = "localhost";
$db_port = "3306";
и подставляем соответствующие значения.
Для корректной работы скрипта нам понадобится установить модули
cd /usr/ports/databases/p5-DBI && make install clean
cd /usr/ports/devel/p5-Getopt-Long && make install clean
Настройка sendmail
Редактируем /etc/mail/aliases. Добавляем алиас для пользователя arpwatch и перенаправляем его почту в скрипт arpwatch.pl
arpwatch: "| exec /usr/local/arpwatch/arpwatch.pl"
Перестраиваем базу алиасов командой
Настройка apache
Скачиваем веб-интерфейс отсюда или отсюда. Распаковываем архив в /usr/local/www. Меняем права доступа
sudo chown -R www:www arpwatch/
Находим в папке файлик config.inc.php, открываем на редактирование и меняем соответствующие значения в строчках
$dbhost = "localhost";
$dbuser = "username";
$dbpassword = "userpassword";
$dbname = "database";
В конфиг апача добавляем
Alias /arp/ "/usr/local/www/arpwatch/"
DirectoryIndex index.php
AllowOverride None
Order Deny,Allow
Deny from all
Allow from
Говорим апачу перечитать конфиг
Запускаем arpwatch
sudo /usr/local/etc/rc.d/arpwatch start
и идем по адресу http://server/arp/ смотреть как заполняется база :)