Главная
Поиск
Новости Open Source
Новости железа
Новости софта
Новости безопасности
СТАТЬИ:______________
Безопасность
Интернет
Windows
Linux
Дистрибутивы Linux
FAQ:_________________
Linux начинающим
Общий доступ в Интернет
Электронная почта
Организация LAN
Карта сайта


Информация о проходящем через маршрутизатор трафике
Написал Administrator   
21.08.2007
Задача: сбор информации о проходящем через маршрутизатор предприятия
(ASPLinux11.2) трафик.

На маршрутизаторе два интерфейса:

        eth0:192.168.0.1 (локальная сеть)
        eth1:123.123.123.123 (реальный IP)


Также на сервере настроен DHCP и NAT, в результате получается, 

что каждой машине выдаётся нужный ИП-адрес (привязка по MAC-у) и она
сразу получает прямой доступ в инет.

Просмотрел очень много различных "считалок", "биллингов". Ничего 
подходящего нет.

Либо "навороченные биллинги", либо проекты 2000-2001 года 
некомпилирующиеся...

Скажу сразу, что данное решение подходит для небольшого офиса 
(до 100 машин):
 - отсутствует шифрация (никакой защиты трафика от перехвата в 
сети), 
 - отсутствует защита от подмены ip/mac (постараюсь в ближайшее 
время сделать 
на маршрутизаторе, но позднее реализуем на smart-овских свитчах)
 - отсутствует авторизация (хотя у меня вместе с этим решением 
работает SQUID+SAMS, 
   который считает и детализирует http-трафик, который 
недоступен через NAT. 
   (через NAT открыл только доступ к почтовым серверам ,
25 и 110 порты).

Итак, приступим.

1) Надеюсь, что NAT, маршрутизация, httpd, php, mysql, devel-пакеты 
(для компиляции исходных кодов), компиляторы  и всё прочее нужное уже
установлено!

2) Добавляем в iptables правило по которому все NAT-пакеты будут
проходить через ULOG

        iptables -I FORWARD -j ULOG


3) С сайта fprobe.sourceforge.net качаем последнюю версию fprobe-ulog

4) Для ASPLinux 11.2 нам понадобится RPM-пакет
flow-tools-0.68-12.fc4.i386.rpm (скачать и установить) (я смог только
его установить)

5) создаём папку /var/flows/acct/ (для хранения flows)

6) создаём папку /root/flows/

7) в папку /root/flows/ кладём два исполняемых файла:

скрипт запуска системы runflow

        killall fprobe-ulog
        killall flow-capture
        /usr/bin/flow-capture -R /root/flows/rota -e 2 
-w /var/flows/acct 
127.0.0.1/127.0.0.1/2055
        /usr/local/sbin/fprobe-ulog 127.0.0.1:2055


скрипт экспорта данных в MySQL roota

        #!/bin/sh
        /usr/bin/flow-export -f3 -mDOCTETS,SRCADDR,DSTADDR,
SRCPORT,DSTPORT -u 
"root:pass:localhost:3306:ulog:raw" < $1
        ******


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

12) через 15-20 минут смотрим в базе mysql:

        select srcaddr,dstaddr,doctets,SRCPORT,DSTport from raw;


Конечно, если всё сделали правильно, ничего не забыли - должны 
быть данные!

13) написать web-интерфейс для отображения данных.

Надеюсь, если не заработало сразу - статья направила на 
правильный путь.




Источник: http://www.opennet.ru/
 
< Пред.   След. >





Rambler's Top100 Рейтинг@Mail.ru



Все для системных администраторов © 2013

Dresses - md5 - Celebrity - fashion