Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #51, ФЕВРАЛЬ 2005 г.

Граница на замке

Антон Карпов, toxa@cterra.ru

Спецвыпуск: Хакер, номер #051, стр. 051-030-5


# mkdir -p /var/trafd/traffic

# pkg_add mysql-server-4.0.20.tgz

# /usr/local/bin/mysql_install_db

Прописываем их в автозапуск, /etc/rc.local:

if [ -x /usr/local/sbin/trafd ]; then

echo -n ' trafd'; /usr/local/sbin/trafd -i vr0

fi

if [ -x /usr/local/bin/mysqld_safe ]; then

echo -n ' mysqld'; /usr/local/bin/mysqld_safe --user=_mysql --datadir=/var/mysql %26

fi

Поставим необходимые модули для работы perl c mysql:

# pkg_add p5-Net-MySQL-0.08.tgz

Подправим конфигурационный файл mysql, чтобы база данных слушала только локальный socket и не принимала соединения из сети, а также изменим местоположения pid-файла, чтобы его мог найти httpd, который будет записан в /var/www:

# cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf

# vi /etc/my.cnf

[client]

port = 3306

socket = /var/www/var/run/mysql/mysql.sock

[mysqld]

port = 3306

socket = /var/www/var/run/mysql/mysql.sock

skip-networking

Зададим пароль root'у на доступ к mysql (по умолчанию он пуст), создадим отдельную базу для статистики и укажем использование непривилегированным пользователем ipacct:

# mysqladmin -u root -p password 'securepass'

# mysql -u root -p

Enter password: %26lt;securepass%26gt;

mysql%26gt; create database traffic;

mysql%26gt; use traffic;

mysql%26gt; create table yesterday (src_ip char(16), src_port int, dst_ip char(16), dst_port int, proto int, bytes bigint);

mysql%26gt; create table traffic_tmp (ip char(16), sent bigint default 0, recv bigint default 0);

mysql%26gt; create table traffic (dt date, ip char(16), sent bigint default 0, recv bigint default 0);

mysql%26gt; grant delete,insert,select,update on traffic.* to 'ipacct'@'localhost' identified by 'ipacctpassword';

mysql%26gt; flush privileges;

mysql%26gt; quit

Для обработки статистики, накопленной trafd, существуют специальные скрипты. Авторство их, по всей видимости, принадлежит написавшему статью www.tmeter.ru/misc/trafd. Ищи на нашем диске эти скрипты, модифицированные специально под OpenBSD. Распакуй их в /root/scripts/trafd/, замени имя интерфейса vr0 на свое и пропиши их запуск в crontab:

# crontab -e

################# TRAFFIC #################

# dump to tempfile in case to recovery from it

*/15 * * * * /usr/local/sbin/trafdump vr0

# dump to binary file to be rotated each day

55 23 * * * /usr/local/sbin/trafsave vr0

# rotate binary files each day

56 23 * * * /root/scripts/trafd/trafrotate.sh

# convert from binary to plain text log file

57 23 * * * /root/scripts/trafd/traflog.sh

# put all this shit into database

58 23 * * * /root/scripts/trafd/db_update.sh

##########################################

Итогом всей этой работы станет ежедневное любезное складирование статистики за весь день в файл /var/trafd/traffic_plain/{дата}.{имя_интерфейса} в текстовом удобочитаемом виде. Этот файл будет обрабатываться скриптом, а информация - записываться в базу данных. Теперь нужно обеспечить пользователей удобным web-интерфейсом. И тут на сцену выходит apache и php-скрипты из вышеупомянутого набора.

# pkg_add php4-core-4.3.10.tar.gz

# pkg_add php4-mysql-4.3.10.tar.gz

# /usr/local/sbin/phpxs -s

Назад на стр. 051-030-4  Содержание  Вперед на стр. 051-030-6