From: Altuhov Dmitriy <altuhovd@gmail.com.>
Newsgroups: email
Date: Mon, 11 Jun 2007 14:31:37 +0000 (UTC)
Subject: Сбор информации о проходящем через маршрутизатор предприятия трафике
fprobe-ulog + flow-tools + MySQL + ASPLinux11
-------------------
Задача: сбор информации о проходящем через маршрутизатор предприятия
(Ubuntu,ASPLinux) трафик.
Также на сервере настроен DHCP и NAT, в результате получается,
что каждой машине выдаётся нужный ИП-адрес (привязка по MAC-у) и она
сразу получает прямой доступ в инет.
Просмотрел очень много различных "считалок", "биллингов". Ничего подходящего нет.
Либо "навороченные биллинги", либо проекты 2000-2001 года некомпилирующиеся...
Скажу сразу, что данное решение подходит для небольшого офиса (до 100 машин):
- отсутствует шифрация (никакой защиты трафика от перехвата в сети),
- отсутствует защита от подмены ip/mac (постараюсь в ближайшее время сделать на маршрутизаторе,
но позднее реализуем на smart-овских свитчах)
- отсутствует авторизация (хотя у меня вместе с этим решением работает SQUID+SAMS,
который считает и детализирует http-трафик, который недоступен через NAT.
(через NAT открыл только доступ к почтовым серверам ,25 и 110 порты).
Итак, приступим.
1) Надеюсь, что NAT, маршрутизация, httpd, php, mysql и всё прочее нужное уже
установлено!
2) Изменяем в iptables правила по которому все NAT-пакеты будут
проходить через ULOG (внимание, это пример! не забудте изменить IP-адреса и другие параметры на нужные Вам):
3) устанавливаем пакеты последних версий fprobe-ulog и flow-tools
4) создаём папку /var/flows/acct/ (для хранения flows)
5) создаём папку /root/flows/
6) в папку /root/flows/ кладём два исполняемых файла:
Скрипт экспорта (ротационный скрипт) в базу запускает flow-capture сам через установленные промежутки времени: "-R /root/flows/rota" - здесь указывается путь к данному скрипту экспорта.
Имя файла: rota
скрипт запуска системы имя файла: runflow
Примечение: данный скрипт нужен для ASPLinux.
В Ubuntu можно настроить соответствующие конфигурационные файлы пакетов, так как в комплекте с пакетами идут startup-скрипты (/etc/init.d/...)
8) в файле "rota" root:pass меняем на Ваши логин:пароль для доступа к
MySQL (у пользователя должны быть права на базу ulog!)!
9) подключаемся к MySQL и создаём базу ulog
create database ulog
10) в созданной базе ulog создаём таблицу для хранения данных:
CREATE TABLE `raw` (
`unix_secs` int(11) unsigned NOT NULL default '0',
`unix_nsecs` int(11) unsigned NOT NULL default '0',
`sysuptime` int(11) unsigned NOT NULL default '0',
`exaddr` varchar(45) NOT NULL default '0',
`dflows` int(11) unsigned NOT NULL default '0',
`dpkts` int(11) unsigned NOT NULL default '0',
`doctets` int(11) unsigned NOT NULL default '0',
`first` int(11) unsigned NOT NULL default '0',
`last` int(11) unsigned NOT NULL default '0',
`engine_type` tinyint(3) unsigned NOT NULL default '0',
`engine_id` tinyint(3) unsigned NOT NULL default '0',
`srcaddr` varchar(45) NOT NULL default '0',
`dstaddr` varchar(45) NOT NULL default '0',
`nexthop` varchar(45) NOT NULL default '0',
`input` smallint(5) unsigned NOT NULL default '0',
`output` smallint(5) unsigned NOT NULL default '0',
`srcport` smallint(5) unsigned NOT NULL default '0',
`dstport` smallint(5) unsigned NOT NULL default '0',
`prot` tinyint(3) unsigned NOT NULL default '0',
`tos` tinyint(3) unsigned NOT NULL default '0',
`tcp_flags` tinyint(3) unsigned NOT NULL default '0',
`src_mask` tinyint(3) unsigned NOT NULL default '0',
`dst_mask` tinyint(3) unsigned NOT NULL default '0'
) TYPE=MyISAM;
11) запускаем runflow (желательно поместить этот скрипт в автозапуск rc.local)
12) через 15-20 минут смотрим в базе mysql:
select srcaddr,dstaddr,doctets,SRCPORT,DSTport from raw;
Конечно, если всё сделали правильно, ничего не забыли - должны быть данные!
13) устанавливаем веб-интерфейс с сайта http://phpal.sourceforge.net/allanbilling для просмотра статистики
1124 Прочтений • [Сбор информации о проходящем через маршрутизатор предприятия трафике (traffic netflow mysql linux ulog)] [08.05.2012] [Комментариев: 0]