Документация по ОС FreeBSD Воскресенье, 19.05.2024, 08:29
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Net

Настройка системы учета трафика с использованием FreeBSD 8.0, Netams-3.4.5 и libpcap [2010]

Настройка детальной статистики о трафике с возможностью просмотра по выборке через веб-интерфейс на FreeBSD 8.0 с использованием Netams-3.4.5 и libpcap.

Одной из важнейших задач системного администрирования является учет трафика в сети с целью дальнейшего просмотра, анализа и сравнения. Одни, более продвинутые, решают данную задачу написанием собственных скриптов, парсеров и веб-интерфейсов. Другие, пытаясь найти готовые для этого решения, часто разочаровываются, не находя тех, которые подходят под конфигурацию данной сети и требования руководства. Однако, благодаря ребятам с ООО "Нетамс" (http://www.netams.com/), которые занимаются разработкой средств учета и управления сетевым трафиком с 1999 года, "родился на свет замечательный пакет" под незатейливым названием Netams. О нем и пойдет речь.

Цитируя http://www.netams.com/index.html:

NeTAMS (Network Traffic Accounting and Monitoring Software) - многофункциональная программа по учету и управлению IP-трафиком для маршрутизаторов Cisco или компьютеров под управлением Unix (Linux/FreeBSD/Solaris). Поддерживаются различные методы сбора статистики (tee/divert/ip_queue/ulog/libpcap/netflow v5 и v9/netgraph), хранения в базе данных (BerkleyDB/MySQL/PostgresSQL/Oracle/Radius), агрегирования, отображения, оповещения и пр. Можно проводить блокировку на базе квот, авторизации, исчерпании баланса (биллинг); управлять полосой пропускания, контролировать подмену MAC-адреса, делать связь с RADIUS, создавать гибкие политики учета и фильтрации (полный список).

На момент написания данной статьи последняя "зарелизенная" версия - 3.4.5 (к сожалению, в портах FreeBSD 8.0 ее нет, поэтому качаем отсюда), в которой в отличие от более старых версий, исправлены многие ошибки в веб-интерфейсе.

И самым важным ее плюсом можно считать то, что она умеет выдавать отчеты по трафику за любой период времени по любой выборке (пользователь сам вводит через интерфейс параметры: кто, с какого порта, куда, на какой порт и т.д.), а так же графические отчеты, которые так радуют глаз руководства. Ну, и естественно ее OpenSource-ность. И так, приступим!

Что имеем (буду описывать схему, реализованную у себя): машинка с FreeBSD 8.0, используемая в качестве шлюза в интернет для сети компании (можно использовать любой файрволл: PF, IPF, IPFW - не важно, т.к. поток информации на Netams будет сливать libpcap, который никак не связан с файрволлами) с 2-мя WAN-интерфейсами (к примеру if1 и if2) (основной и резервный), 1 LAN (if0).

1. Ставим Apache 2.2

Он у нас потребуется для веб-интерфейса Netams'а

# cd /usr/ports/www/apache22
# make install clean


Все опции установки оставляем по-умолчанию.

В файле конфигурации веб-сервера, который лежит в каталоге /usr/local/etc/apache22/httpd.conf, ничего не трогаем. Добавляем в /etc/rc.conf строчку для запуска apache22:

# echo 'apache22_enable="YES"' >> /etc/rc.conf

и затем запускаем его

# /usr/local/etc/rc.d/apache22 start

Проверяем работу демона:

# ps -ax | grep httpd

В ответ мы получим примерно такое:

1357 ?? Ss 0:01.29 /usr/local/sbin/httpd -DNOHTTPACCEPT
1388 ?? I 0:01.03 /usr/local/sbin/httpd -DNOHTTPACCEPT
1389 ?? I 0:00.20 /usr/local/sbin/httpd -DNOHTTPACCEPT
1390 ?? I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT
1391 ?? I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT
1392 ?? I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT
1627 ?? I 0:01.13 /usr/local/sbin/httpd -DNOHTTPACCEPT
1786 ?? I 0:00.21 /usr/local/sbin/httpd -DNOHTTPACCEPT
1787 ?? I 0:00.06 /usr/local/sbin/httpd -DNOHTTPACCEPT
1788 ?? I 0:00.21 /usr/local/sbin/httpd -DNOHTTPACCEPT

2. Ставим MySQL-Server 5.0

Для работы Netams-3.4.5 потребуется база данных, где он будет хранить всю статистику. Поэтому ставим mysql50-server (mysql51 не подойдет, т.к. с ним он не работает, а более новые версии не проверял).

# cd /usr/ports/databases/mysql50-server
# make install clean


После окончания установки добавляем в /etc/rc.conf строчку для его запуска

# echo 'mysql_enable="YES"' >> /etc/rc.conf

и запускаем

# /usr/local/etc/rc.d/mysql-server start

Проверяем, запустился ли он

# ps ax | grep mysql

вывод должен быть примерно таким

1233 v0- I 0:00.01 /bin/sh /usr/local/bin/mysqld_safe \
--defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --datadir=/var/db/mysql --socket=/tmp/m
1270 v0- S 1:15.42 /usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf \
--basedir=/usr/local --datadir=/var/db/mysql --pid-file=/var/


Задаем пароль для root mysql-server'а, защищая от недоброжелателей

# usr/local/bin/mysqladmin -u root password 'new_password'

где new_password - пароль, который вы хотите установить.

3. Ставим сетевой сниффер libpcap.

Через него Netams будет собирать статистику.

# cd /usr/ports/net/libpcap && make install clean

4. Ставим Netams-3.4.5.

Для начала нужно скачать его новый порт для FreeBSD. Для этого перейдем, например, в каталог:

# cd /usr/ports/net-mgmt

затем скачиваем порт

# fetch http://www.netams.com/files/netams-freebsd-port.tgz

Распаковываем архив:

# tar -zxvf netams-freebsd-port.tgz

Появится папка freebsd-port. Переименуем ее (для понятности):

# mv /usr/ports/net-mgmt/freebsd-port /usr/ports/net-mgmt/netams345

Редактируем Makefile:

# ee /usr/ports/net-mgmt/netams345/Makefile

в нем находим строчку:

mysqlclient.16:${PORTSDIR}/databases/mysql51-client \

и полностью ее удаляем и сохраняем файл. Для чего это делается. Дело в том, что Нетамс, как я уже говорил, не работает с mysql51. Во-вторых, ему совсем наплевать на то, что у вас и так уже стоит mysql50 (server и client), и он начинает устанавливать mysql51 (т.к. в Makefile прописаны зависимости), а затем после долгой компиляции он начинает ругаеться, чтобы вы удалили mysql50 перед установкой новой версии mysql51. В итоге - ни mysql-ля ни netams'а. Вываливается с ошибкой.

После того, как удалили ненужную строчку, уже спокойно делаем:

# cd /usr/ports/net-mgmt/netams345 && make install clean

Когда он спросит в процессе установки зависимого порта GD выбрать опции, отметьте галочкой последнюю (ICONV).

Раньше, например, в версии 3.4.1, чтобы отображать графические отчеты требовалось ставить руками дополнительные пакеты. Сейчас он скомпилирует все сам. Сидим и наслаждаемся процессом.

После установки, появляется папка /usr/local/etc/netams/, где лежит пример конфигурационного файла. Подправим его под свои нужды.

# cp /usr/local/etc/netams/netams.conf.sample /usr/local/etc/netams/netams.conf
# ee /usr/local/etc/netams/netams.conf
#NeTAMS version 3.4.5 (work config)
#begin
#global variables configuration
debug none
# Задаем имя пользователя и пароль для доступа к Нетамсу
user name admin real-name Admin password aaa email root@localhost permit all

#services configuration

service server 0
login local
listen 20001
max-conn 6

service processor 0
lookup-delay 60
flow-lifetime 180
# Указываем порты, которые будут отображаться на графике.
policy name ip target proto ip # весь IP-траффик
policy name www target proto tcp port 80 81 8080 3128 443 # WWW
policy name ftp target proto tcp port 20 21 # FTP
policy name pop3 target proto tcp port 110 # POP3
policy name smtp target proto tcp port 25 # SMTP
policy name ipsec target proto esp # IPSEC
policy name rdp target proto tcp port 3389 5589 3390 5590 5593 37777 # RDP & PORT-MAPPING RDP
policy name ssh target proto tcp port 22 # SSH
restrict all drop local pass
# Задаем группы
unit group name IT acct-policy ip www ftp pop3 smtp rdp ssh ipsec
unit group name BUH acct-policy ip www ftp pop3 smtp rdp ssh ipsec
unit group name FS acct-policy ip www ftp pop3 smtp rdp ssh ipsec
# Задаем юниты, за которыми будем наблюдать
unit host name WAN1 ip A.A.A.A acct-policy ip www ftp pop3 smtp rdp ssh ipsec
unit host name WAN2 ip B.B.B.B acct-policy ip www ftp pop3 smtp rdp ssh ipsec
unit net name LAN ip 192.168.99.0/24 acct-policy ip www ftp pop3 smtp rdp ssh ipsec
# IT
unit user name user1 ip 192.168.99.1 parent IT acct-policy ip www ftp pop3 smtp rdp ssh
unit user name user2 ip 192.168.99.2 parent IT acct-policy ip www ftp pop3 smtp rdp ssh
unit user name user3 ip 192.168.99.3 parent IT acct-policy ip www ftp pop3 smtp rdp ssh
# BUH
unit user name user4 ip 192.168.99.4 parent BUH acct-policy ip www ftp pop3 smtp rdp ssh
unit user name user5 ip 192.168.99.5 parent BUH acct-policy ip www ftp pop3 smtp rdp ssh
unit user name user6 ip 192.168.99.6 parent BUH acct-policy ip www ftp pop3 smtp rdp ssh
# FS
unit user name user7 ip 192.168.99.7 parent FS acct-policy ip www ftp pop3 smtp rdp ssh
unit user name user8 ip 192.168.99.8 parent FS acct-policy ip www ftp pop3 smtp rdp ssh
unit user name user9 ip 192.168.99.9 parent FS acct-policy ip www ftp pop3 smtp rdp ssh

# Указываем, где будем хранить статистику (в mysql)
service storage 0
type mysql
user root
password new_password # пароль указываем тот, который установили для root mysql-сервера
accept all

# указываем источники пакетов
service data-source 1
type libpcap
source if0
layer7-detect urls
rule 11 "ip"

service data-source 2
type libpcap
source if1
layer7-detect urls
rule 11 "ip"

service data-source 3
type libpcap
source if2
layer7-detect urls
rule 11 "ip"

# здесь можно устанавливать квоты
service quota 0
policy ip
notify soft {owner}
notify hard {owner} admin
notify return {owner}
storage 1

# включаем сервис мониторинга (то, что нас больше всего интересует)
service monitor 0
monitor to storage 0
monitor unit WAN1
monitor unit WAN2
monitor unit LAN

service alerter 0
report oid 06100 name rep1 type traffic period day detail simple
smtp-server localhost

# указываем ему путь, где он будет хранить файлы отчетов
service html 0
path /usr/local/www/netams/stat
run 10min
htaccess yes
client-pages all
url http://192.168.99.177/netams/
language ru

service scheduler
oid 08FFFF time 5min action "html"

# $Id: netams.conf,v 1.2 2009-01-31 12:49:01 anton Exp $
#end

Конфиг готов, сохраним его.
Теперь добавляем в rc.conf строчку для запуска нет-амса:

# echo 'netams_enable="YES"' >> /etc/rc.conf

и запускаем его:

# /usr/local/etc/rc.d/netams start

Проверяем, запущен ли он. Пытаемся соединиться с ним на 20001 порту:

# telnet localhost 20001

Вводим логин и пароль:

Username: admin
Password: aaa

Если успешно вошли, значит Нетамс запущен. Пробуем вводить команды:

# html
# save
# show config
#NeTAMS 3.4.5 (3490.1) root@elproxy.el.dialine.org / Tue 16 Mar 2010 18:51:08 +0300
#configuration built Wed Mar 17 11:24:24 2010
#begin
#global variables configuration
debug none
language ru
user oid 0D85FF name admin real-name "Admin" crypted $1$$HpXmjtul/3i1.bf.B27bU. email root@localhost permit all

#services configuration

service server 0
login local
listen 20001
max-conn 6

service processor
lookup-delay 60
flow-lifetime 180
policy oid 01D5F8 name ip target proto ip
policy oid 0E8D83 name www target proto tcp port 80 81 8080 3128 443
policy oid 071E2B name ftp target proto tcp port 20 21
policy oid 002EBC name pop3 target proto tcp port 110
policy oid 0071C0 name smtp target proto tcp port 25
policy oid 0BCA64 name ipsec target proto esp
policy oid 090D8E name rdp target proto tcp port 3389 5589 3390 5590 5593 37777
policy oid 052534 name ssh target proto tcp port 22
restrict all drop local pass
unit group oid 057B0D name IT acct-policy ip www ftp pop3 smtp rdp ssh ipsec
unit group oid 0E1BC0 name BUH acct-policy ip www ftp pop3 smtp rdp ssh ipsec
unit group oid 06329F name FS acct-policy ip www ftp pop3 smtp rdp ssh ipsec
unit host oid 0F848D name WAN1 ip 0.0.0.0 acct-policy ip www ftp pop3 smtp rdp ssh ipsec
unit host oid 0503FE name WAN2 ip 0.0.0.0 acct-policy ip www ftp pop3 smtp rdp ssh ipsec
unit net oid 04AA91 name LAN ip 192.168.99.0/24 acct-policy ip www ftp pop3 smtp rdp ssh ipsec
unit user oid 00DD6A name user1 ip 192.168.99.1 parent IT acct-policy ip www ftp pop3 smtp rdp ssh
unit user oid 090448 name user2 ip 192.168.99.2 parent IT acct-policy ip www ftp pop3 smtp rdp ssh
unit user oid 0103E4 name user3 ip 192.168.99.3 parent IT acct-policy ip www ftp pop3 smtp rdp ssh
unit user oid 0108DD name user4 ip 192.168.99.4 parent BUH acct-policy ip www ftp pop3 smtp rdp ssh
unit user oid 034ED6 name user5 ip 192.168.99.5 parent BUH acct-policy ip www ftp pop3 smtp rdp ssh
unit user oid 0FED45 name user6 ip 192.168.99.6 parent BUH acct-policy ip www ftp pop3 smtp rdp ssh
unit user oid 0D0452 name user7 ip 192.168.99.7 parent FS acct-policy ip www ftp pop3 smtp rdp ssh
unit user oid 0F5DC7 name user8 ip 192.168.99.8 parent FS acct-policy ip www ftp pop3 smtp rdp ssh
unit user oid 080611 name user9 ip 192.168.99.9 parent FS acct-policy ip www ftp pop3 smtp rdp ssh

service storage 0
type mysql
user root
password new_password
accept all

service data-source 1
type libpcap
source if0
layer7-detect urls
rule 11 "ip"

service data-source 2
type libpcap
source if1
layer7-detect urls
rule 11 "ip"

service data-source 3
type libpcap
source if2
layer7-detect urls
rule 11 "ip"

service quota
policy ip
notify soft owner
notify hard owner
notify return owner

service monitor 0
monitor to storage 0
monitor unit WAN1
monitor unit WAN2
monitor unit LAN

service alerter 0
report oid 06100 name rep1 type traffic period day detail simple
smtp-server localhost

service html
path /usr/local/www/netams/stat
run 10min
url http://192.168.99.177/netams/
htaccess yes
client-pages all
account-pages none

service scheduler
oid 08FFFF time 10min action "html"

#end

# show version
NeTAMS 3.4.5 (3490.1) root@elproxy.el.dialine.org / Tue 16 Mar 2010 18:51:08 +0300
Run time 3 mins 44.1445 secs
System time: 3 mins 0.0984 secs
Average CPU/system load: 0.04%
Process ID: 44053 RES: 4920K
Memory allocated: 1803131 (411), freed (60) (0 NULL) [351 used]
Total objects:
Oids used: 25
NetUnits: 15
Policies: 8
Services: 15
Users: 1
Connections: 1 active, 2 total

Services info:
Storage ID=0 type mysql wr_q 0/0 rd_q 0/0
Data-source ID=1 type LIBPCAP source if0:0 loop 0 average 0 mcsec
Perf: average skew delay 0 mcsec, PPS: 0, BPS: 0
Data-source ID=2 type LIBPCAP source if1:0 loop 0 average 0 mcsec
Perf: average skew delay 0 mcsec, PPS: 0, BPS: 0
Data-source ID=3 type LIBPCAP source if2:0 loop 0 average 0 mcsec
Perf: average skew delay 0 mcsec, PPS: 0, BPS: 0
Alerter 0 queue max: 255, current: 0
Scheduled tasks: 1

# show monitor
service monitor 0
monitor to storage 0
0 flows in 0 commits
Units: WAN1(0F848D)WAN2(0503FE)LAN(04AA91)
Packets monitored: 172

Если вывод этих команд у вас примерно такой же, то поздравляю! Нетамс у вас установлен правильно и работает. Теперь перейдем к настройке веб-интерфейса программы. В каталоге /usr/local/etc/apache22/Includes/ должен лежать файл netams-apache-freebsd.conf с таким содержанием (если файла нет, то создайте его, но обычно после установки Нетамс он там уже лежит):

Options Indexes FollowSymLinks MultiViews
Order allow,deny
allow from all
DefaultLanguage ru
AddDefaultCharset WINDOWS-1251

AuthUserFile /usr/local/www/netams/stat/.htpasswd
Options Indexes FollowSymLinks MultiViews ExecCGI
Order allow,deny
allow from all
DefaultLanguage ru
AddDefaultCharset WINDOWS-1251

Alias /netams /usr/local/www/netams

AddHandler cgi-script .cgi

Также в каталоге /usr/local/www должна лежать папка netams с самим веб-инетрфейсом. Внтури этой папки каталог cgi-bin. Даем права на запуск всех файлов, лежащих в этом каталоге:

# chmod -R +x /usr/local/www/netams/cgi-bin

Теперь редактируем два файла:

# ee /usr/local/www/netams/cgi-bin/config.cgi

В строке $sql_password="" прописываем пароль, который у нас стоит на mysql, т.е. $sql_password="new_password".

Затем в строке $sc_passwd="aaa" указываем пароль, который мы поставили на Нетамс (если его не меняли, то оставляем как есть).

Второй файл редактируем аналогичным образом.

# ee /usr/local/www/netams/cgi-bin/admin/config.cgi

Сохраняем файл и даем команду на перезагрузку веб-сервера:

# /usr/local/etc/rc.d/apache22 restart

Теперь заходим через браузер в веб-интерфейс: http://your.freebsd.ip/netams/ Объяснять, что там к чему, не стану, т.к. это займет больше места, чем описание установки и настройки. Тем более на каждой странице есть маленькая кнопочка "Help", которая выдаст подсказку. Скажу только, что графики вы можете просматривать в "Administration interface" -> "Statistics", а мониторить трафик по выборке (кто, с какого порта, куда, на какой порт и т.д.) в "Administration interface" -> "Monitor". Возможности действительно впечатляют! Например, если настроена прозрачная VPN-сеть между филиалами, то можно просмотреть, сколько трафика и по каким портам ушло с любого компьютера 1-го филиала на любой компьютер (или группу) 2-го филиала.



Источник: http://www.opennet.ru/base/net/netams_stat.txt.html
Категория: Net | Добавил: oleg (27.03.2010) | Автор: Артур Ломсадзе
Просмотров: 882 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024