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

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

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

Установка ntop 4.1 на FreeBSD 8.2 [2011]

Статья обновлена 14.11.11.
Задача: собрать сервер для анализа IP трафика в сети. Иметь возможность вылавливать и анализировать NetFlow v5/v7/v9 статистику с Cisco-маршрутизатора/маршрутизирующего коммутатора внутри LAN.

Необходимость возникла из-за незнания "предпочтений" пользователей, и невозможности регулировать аппетиты "топперов" без диаграмм загрузки сети определёнными хостами.
До этого была настроена flow-tools+flowscan+cflowd статистика, которая ловила mirror (SPAN-порт) с главного маршрутизатора и превращала всё в NetFlow анализируемые пакеты, но захотелось опробовать стандарт-де-факто для IP - Cisco NetFlow.

Ожидаемый результат: с помощью данного решения есть возможность без особых трудностей и напряжения серого вещества, да ещё и доступными средствами,
собирать и анализировать статистику сети на простейшем оборудовании (любой свитч с mirroring'ом всех портов на один), и строить наглядные графики и таблички
"кто-откуда, когда и сколько" и главное БЕСПЛАТНО, доступными инструментами. Однако, это решение не позволит вам без доп.знаний СОХРАНЯТЬ статистику. Если вам нужно импортировать данные,
нужно будет написать скрипты (поддерживается импорт в perl,php и прочее) либо использовать другое решение.
Данная система отображает текущее состояние нагрузки сети, а история в таблицах будет жить только до первого перезапуска. Сохраняются только графики RRD-tool.
Мне больше от неё и не надо было, т.к. остальное делает вышеуказанная связка flow-tools+flowscan (где посмотреть:1 и 2).

Решение не абсолютное, и использованию подлежит лишь в тех случаях, когда сетевой отдел либо единица управления сетью (в виде ленивого админа)
не располагает средствами для покупки как дорогих программных, так и аппаратных решений для анализа трафика и ему нужны графические красивые отчёты для шефа.
Структура реализации: Cisco коммутатор/маршрутизатор ядра, посылающий NetFlow трафик трафик сети на выделенный сервер с предустановленной ОС FreeBSD и утилитой ntop.

О ntop и его модулях далее пойдёт речь.
Данная статья рассчитана на начинающих администраторов. Принимаются конструктивы и замечания по ошибкам. Описания настройки Ntop под FreeBSD в сети до сих пор на русском я не видел. 
То, что здесь описано, у меня работает.
_________________________________________
Оф. сайт программы - http://www.ntop.org/
ntop - это мощный и детально конфигурируемый инструмент для мониторинга сетей и выявления неполадок, а так же превышений использования канала, перегрузок.
Распространяется свободно по лицензии GPL, v2 (и поздние).
Возможно управление из командной строки, а так же использование встроенного веб-сервера (умеет ssl).
ntop использует libcap (т.е. сильно грузит CPU для обработки трафика), так что заранее выбирайте сервер помощнее (мой был P4 D 3GHz, 3200MB RAM).

Описание возможностей 4.10 версии ( http://www.ntop.org/overview.html ):

   * Сортировка трафика по протоколам (IP: TCP, UDP, ICMP; GRE, IPSEC и др.)
   * Возможность сортировки данных о трафике по множеству критериев
   * Отображение сетевой статистики (данные о трафике)
   * Хранение данных в формате RRD (Round Robin Tool) - это единственный встроенный способ _сохранять_ данные ntop
   * Распознавание особенностей (напр. почтовые адреса) пользователей
   * Пассивное (т.е. без посылки пакетов-запросов) распознавание типов ОС компьютеров
   * Отображение распределения IP трафика по протоколам
   * Анализ IP трафика и сортировка по источнику/месту назначения
   * Отображение структуры (сеть/маска) и направления IP трафика в виде схем (кто с кем обменивается?)
  * Возможность работы в режиме NetFlow/sFlow коллектора для приёма потоков, генерируемых роутерами (Cisco, Juniper) или коммутаторами (Foundry Networks)
   * Генерация статистики обмена сетевым трафиком в RMON-подобном формате.

Установку будем производить из портов, как все лентяи.
Символ \ по ходу лирики - переход на следующую строку (для самых внимательных), объединяйте весь текст в одну при копировании.

Если не обновляли давно порты:
 portsnap fetch update

далее, после муторного ожидания ищем пакет ntop:
 whereis ntop
ntop: /usr/ports/net/ntop

Идём в директорию и собираем пакет, но не делайте make clean! Нам кое-что понадобится из исходников.
 cd /usr/ports/net/ntop && make install
[X] LOCALE Enable locale (i18n) support. (поддержка интернациализации)
[X] PCAP_PORT Use libpcap from ports. (используем libcap из портов)
[ ] XMLDUMP Enable XML Dump support. (не собирается :( )
[ ] ASDATA Install AS data. (show traffic by Autonomous System Number,
# жрёт доп. память для обработки заголовков об AS, 
# если вы не провайдер и у вас одна локальная сеть - не отмечайте)
[X] TCPWRAPPER Enable TCP wrapper support

После установки, идём в /usr/ports/net/ntop/work/ntop-4.10/packages/FreeBSD-ports/net/ntop/files и достаём оттуда sample-config (ntop.conf.sample):
 cp /usr/ports/net/ntop/work/ntop-4.10/packages/\
FreeBSD-ports/net/ntop/files/ntop.conf.sample \
usr/local/etc/ntop/ntop.conf

И меняем права на файл, а то он какой-то исполняемый, что не есть правильно:
 chmod -x /usr/local/etc/ntop/ntop.conf

Теперь необходимо проделать операцию создания каталога для хранения данных ntop.
Для этого необходимо создать пользователя (используйте интерактивный # adduser) с ограниченными правами и доступом к выбранной вами папки.
У меня он такой:
 cat /etc/passwd | grep ntop
ntop:*:2001:2001:ntop manager:/data/netflow/ntop_db:/usr/sbin/nologin

Изменим владельца каталога:
 chown -R ntop:ntop /data/netflow/ntop_db

Правим конфигурационный файл ntop на своё усмотрение, приведу свой конфиг:
 cat /usr/local/etc/ntop/ntop.conf
--user ntop # под кем запускать демон
--db-file-path /data/netflow/ntop_db # путь к БД

# на каком сетевом интерфейсе слушать (сюда приходит весь NetFlow-трафик)
--interface rl0
#если интерфейсов больше, перечисление через запятую: --interface rl0,rl1,rl2

# патч для FreeBSD в 4.10 не работает, выдаёт ошибку, отключаем - комментируем.

# отключить "доверие" MAC-адресам, в случае >
# когда у нас данные идут с mirror (SPAN) интерфейса активного оборудования
--no-mac 

# логи идут не на экран терминала (stdout, по умолчанию), а в syslog
# в версии 4.10 логгирование идёт сразу в /var/log/messages без этой настройки
# --use-syslog=local3
 
# на каком порту слушает встроенный веб-сервер >
# (можно ещё --https-3001 вместе с http, 
# сертификат здесь - /usr/local/etc/ntop/ntop-cert.pem )
--http-server 3000
# в версии 4.10 при наличии двух и более интерфейсов ntop не захотел поднимать
# сервер без точного указания IP, для этого пропишите (пример):
# --http-server 192.168.1.1:3000 

# помогаем программе определить что считать локальным 
# трафиком (внутренняя сеть будет обособлена для удобства)
--local-subnets 192.168.0.0/16,172.16.192.0/24

# можно указать домен для сети, либо программа определит >
# его самостоятельно
--domain vasya.ru 
--daemon # запускать в виде демона, что под freebsd всегда верно

Полный список команд и вариантов можно посмотреть так:
 /usr/local/bin/ntop -h

Если вы используете по каким-то причинам старый ntop 3 версии, для того, чтобы логи шли в определённый файл (расскоментированная секция --use-syslog=local3), необходимо добавить в syslog.conf следующее:
 echo '!ntop' >> /etc/syslog.conf \
echo 'local3.* /var/log/ntop.log' >> /etc/syslog.conf

и создать этот файл с минимальными правами (чтобы вражище не подсмотрел):
 touch /var/log/ntop.log && chmod 600 /var/log/ntop.log

Для версии 4 этого проделывать не нужно, см.пояснения в конфиге выше.

Перед запуском всей системы необходимо создать базу и задать пароль администратора:
 /usr/local/bin/ntop -P /data/netflow/ntop_db -u 2001 -A

где указана папка, которой владеет ntop пользователь с порядковым номером 2001 (мы его таким создали).
Вывод будет примерно таким:
Thu May 3 23:31:52 2007 NOTE: Interface merge enabled by default
Thu May 3 23:31:53 2007 Initializing gdbm databases

ntop startup - waiting for user response!

Please enter the password for the admin user:
Please enter the password again:
Thu May 3 23:32:06 2007 Admin user password has been set

Готово, всё настроено и ждёт запуска - для начала сбора статистики и зарисовки диаграмм с графиками для начальника, чтобы учёл старания.
Если у Вас есть сетевой фильтр (firewall), откройте 3000ый tcp порт наружу, а если захотите snmp статистики, то и 161ый udp тоже в режиме keep-state (+163 udp на всякий случай).
Для IPFW это выглядит примерно так (вместе с другими правилами в скрипте):
 ipfw add allow tcp from me 3000 to 192.168.1.1 via em0

где 192.168.1.1 - IP вашего админского компа, а em0 - управляющая сетевая на текущем сервере, где стоит ntop.
Если будете использовать родной скрипт - /usr/local/etc/rc.d/ntop, то не забудьте:
 echo 'ntop_enable="YES"' >> /etc/rc.conf
 echo 'ntop_flags="@/usr/local/etc/ntop/ntop.conf"' >> /etc/rc.conf

И если у вас папка БД программы отличается (как и у меня) от /var/db/, то исправьте проверку на наличие ntop_pw.db файла 
в /usr/local/etc/rc.d/ntop скрипте с указанием вашей папки (сами найдёте).
После этого запускаем демона:
 /usr/local/etc/rc.d/ntop start

и идём в любимый браузер по ссылке http://адресвашегосервераntop:3000
Смотрим и любуемся на потёкшую статистику, а модули в админке подключаем через логин admin и пароль тот, который вводили при создании БД. Вся дальнейшая настройка модулей происходит через веб-морду.

Модуль NetFlow.
add netflow device - появляется таблица, где необходимо указать параметры поступающего потока. Создаётся виртуальный интерфейс, прикреплённый к физическому адаптеру. При этом, физ.адаптер должен иметь статический адрес - т.к. Cisco посылает пакеты netflow на определённый его порт. Настройка Cisco маршрутизатора будет выглядеть примерно так:
router-2621(config)#ip flow-export destination 192.168.23.5 9995
router-2621(config)#ip flow-export source FastEthernet 0/1
router-2621(config)#ip flow-export version 5
router-2621(config)#ip flow-cache timeout active 1
router-2621(config)#ip flow-cache timeout inactive 15

Виртуальный интерфейс ntop должен слушать при этом на udp-порту 9995, в сабнете 192.168.23.0/24.
ntop покажет, какую версию он принимает, с каких портов вашего cisco устройства, сколько пакетов обработано, сколько потеряно (на моей сетке в примерно 200 активных хостов было 0% потерь), поддерживаются все netflow вплоть до v9. Вы можете настроить агрегацию по host / ip protocol  и др. значениям.

Модуль SPAN-sniffer.
В случае, если вы не счастливый обладатель Cisco маршрутизаторf/маршрутизирующего коммутатора, тогда вы можете получать практически аналогичную статистику со SPAN-порта любого умного коммутатора 2 или 3 уровня. Для этого настройте дублирование всех потоков со всех портов на нём на один выделенный и направьте трафик с него на ntop интерфейс на сервере FreeBSD. В настройках ifconfig при старте системы в /etc/rc.conf вы можете прописать так: ifconfig_rlo="up promisc" не задавая адреса для сетевой, т.к.в данном случае он вообще не нужен (stealth режим сниффера). Настройки самих коммутаторов всегда разные, см.документацию. В ntop просто включите модуль анализатора пакетов, без netflow вирт.интерфейса - в качестве сенсора нужно указать физическую сетевую (без адресов).

TODO
Модуль icmp.
патч для FreeBSD
скрины.

Так же в админке можно имзенять кучу настроек, тюнинговать существующие и добавлять новые правила фильтрации, дополнять параметрами опции сервера и создавать пользователей для доступа к своей статистике с разными привилегиями. 

Но помните, что при перезагрузке системы, вся суммарна статистика, за исключением графиков, обнуляется. В этом весь минус решения.

Если нужно сделать так, чтобы сервер был доступен из-под apache (http://vasya.ru/ntop к примеру), необходимо сделать следующее:
запустить ntop на 3000ом порту (значение можно поменять, конечно же), с параметрами:
-w127.0.0.1:3000 -W0 #слушать на http//localhost:3000 и не слушать на https вообще.
Apache должен быть собран с модулями (не все могут быть необходимы, но всё-таки) mod_cgid mod_headers mod_security mod_proxy mod_proxy-http mod_proxy-html proxy_connect.load
proxy_html.load mod_rewrite mod_ssl mod_userdir и поддерживать работу на 443ем порту (ssl).
Секция вирт.хоста в конфиге апача (либо,если версия 2.x,то файла путьдоapache/extra/httpd-vhosts.conf)

NameVirtualHost *:443
<VirtualHost *:443>

###### Весь трафик на 443ем порту ( HTTPS ) 

# поменяйте на свою почту
ServerAdmin webmaster@localhost
SSLEngine On
# поменяйте на путь к вашему сертификату
SSLCertificateFile /etc/apache2/ssl/apache.pem

# измените пути к логам
ErrorLog /var/log/apache2/error.log
# выберите уровень логирования из предложенных: 
# debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
### PATCH SUGGESTED BY NESSUS ABOUT TRACE ATTACKS
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]

#### NTOP (PROXY проброс) ########
ProxyHTMLLogVerbose On
LogLevel warn
ProxyHTMLExtended On
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /ntop/ http://localhost:3000/
ProxyPassReverse /ntop/ http://localhost:3000/
<Location /ntop/>
SetOutputFilter proxy-html
ProxyHTMLURLMap / /ntop/
ProxyHTMLURLMap /ntop/plugins/ntop/ /ntop/plugins/
RequestHeader unset Accept-Encoding
</Location>

</VirtualHost>

И перезапустите apache (в моём случае поставлен из портов, версия 2.2.4):
 /usr/local/etc/rc.d/apache22 restart

и зайти по адресу https://vasya.ru/ntop/ .

Либо, как другой вариант (редирект с помощью apache-модуля proxy), вкратце:
ProxyPass /ntop/ http://localhost:3000/

а в вирт.хостах:
RewriteEngine On
RewriteCond %{HTTP_REFERER} vasya.ru/ntop
RewriteCond %{REQUEST_URI} !^/ntop
RewriteRule ^/(.*)$ http://vasya.ru/ntop/$1 [L,P]

По идее, всё должно работать, секцию с апачем я честно своровал и не пробовал.

На заметку: Ntop 2.1.3 was the last version with the mySQL stuff and is completely unsupported.



Источник: http://www.lissyara.su/articles/freebsd/traffic_count/ntop/
Категория: Net | Добавил: oleg (21.11.2011) | Автор: roygbiv
Просмотров: 3187 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

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

Copyright MyCorp © 2024