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

Автор: | Июнь 3, 2019

Цитируя 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, в которой в отличие от более старых версий, исправлены многие ошибки в веб-интерфейсе.

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

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

Ставим Apache 2.2

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

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

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

Добавляем в /etc/rc.conf строчку для запуска apache22:

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

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

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

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

                                Ставим MySQL-Server 5.0

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

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

и запускаем

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

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

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’а, защищая от недоброжелателей

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

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

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

                                Ставим Netams-3.4.5

Вот и приступили к основному моменту настройки. Для начала делаем как обычно:

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

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

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

#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 # пароль тот же, который ставили для mysql-сервера
accept all

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

service data-source 2
type libpcap
source if1
layer7-detect urls

service data-source 3
type libpcap
source if2
layer7-detect urls

# здесь можно устанавливать квоты
# работает только для DIVERT с IPFW, но не с LIBPCAP
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»

Конфиг готов, сохраним его.

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

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

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

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

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

#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

service data-source 2
type libpcap
source if1
layer7-detect urls

service data-source 3
type libpcap
source if2
layer7-detect urls

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

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 totalServices 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: 172

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 с таким содержанием (если файла нет, то создайте его, но обычно после установки Нетамс он там уже лежит):

 


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

Alias /netams /usr/local/www/netams

AddHandler cgi-script .cgi

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

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

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

$sql_password=»new_password»

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

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

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

Теперь заходим через браузер в веб-интерфейс: http://your.freebsd.ip/netams/

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

Скрины для наглядности:

 

 


 

 


 

 


 

 


 

 


 

 


 

 


 

 


 

 


Документация: http://www.netams.com/doc/index.html

ICQ: 493552460
e-mail: ail-man@yandex.ru
Ломсадзе Артур

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *