Материал просмотрен 86 раз(а)

Всем привет! Сегодня немного разовью тему подсчёта трафика и спущусь немного глубже.

Задача

Как всегда, с постановки задачи. Нужно знать кто сколько качает, какая идёт нагрузка на канал. Причём, трафик нужно пропускать без задержек, то есть первоначальный вариант поставить прокси-сервер Squid и кидать веб через него – не пройдёт. Как-то нужно обойтись без дополнительных шлюзов.

Размышления

Раз дополнительный шлюз ставить нельзя, значит пускать трафик через какое-либо устройство тоже не вариант – придётся работать с копией трафика. А то, что нужна детализация в том числе по DNS-именам сайтов, к которым идёт обращение, делает неприемлемым использование NetFlow и Ulog из предыдущей статьи. На счастье ядром сети является Cisco Catalyst 3550, значит можно попробовать снять копию трафика (зеркалирование) и анализировать уже её.

В общем виде сеть выглядит так:

Вся основная сеть не показана (она в правой части). Я решил снять копию трафика с порта, ведущего к провайдеру и послать его на виртуальный сервер через ещё один коммутатор Catalyst3560G, по счастливой случайности оказавшийся возле сервера виртуализации.

Решение проблемы

Далее по шагам опишу, как удалось вполне сносно решить проблему.

Зеркалирование трафика

На коммутаторе, который светит провайдеру:

Послать копию трафика (SPAN) с какого-либо интерфейса на другой – не сложно. Некоторая особенность есть с тем, чтобы послать копию трафика на удалённый коммутатор. Здесь нам будет необходимо использовать RSPAN (Remote).

  1. Создал ещё один VLAN, который помечен для RSPAN, который будет использоваться для копии всего трафика. Также нам понадобится незанятый интерфейс.
  2. В режиме глобальной конфигурации пропишем:
    (config)# vlan 111
    (config-vlan)# remote-span
    (config-vlan)# exit
    (config)# monitor session 2 source interface Fa0/1
    (config)# monitor session 2 destination remote vlan 111 reflector-port Fa0/35

Где Fa0/1 – интерфейс к провайдеру, 111 – номер нашего нового VLAN, а Fa0/35 – незанятый интерфейс для использования RSPAN технологии.

На коммутаторе, который светит к серверу виртуализации:

Здесь принимаем.

  1. Создаём VLAN с тем же номером, помечаем его как используемый для RSPAN:
    (config)# vlan 111
    (config-vlan)# remote-span
    (config-vlan)# exit
    (config)# monitor session 2 source remote vlan 111
    (config)# monitor session 2 destination interface Gi0/40
  2. Подключаем 40-ой порт в сервер виртуализации (например, в порт 5).

Сервер виртуализации

На этом скрине у меня уже настроена RSPAN-сеть (внизу), удалять уже не буду, стрелкой отметил как её создать:

Нажимаем Add Networking.

Создаём именованную сеть для подключения к потоку виртуальных машин.

Зададим имя на VLAN ID. Также разрешим Promiscuous Mode, лишним не будет.

Теперь создаём новую виртуальную машину с двумя сетевыми интерфейсами, один будет в нашей обычной сети (Служебный интерфейс, Интернет, чтобы качать софт и настраивать виртуалку), второй – будет в сети RSPAN (Рабочий интерфейс, слушать весь трафик).

В качестве ОС я выбрал CentOS 7. Про установку и настройку рассказывать не буду особо, что мне потребовалось:

  1. Повесил IP на служебный интерфейс адрес, прописал настройки IP;
  2. Обновил репозитории;
  3. Поставил wget, tcpdump, nano, epel-release;
    Проверил, как льётся трафик:
    # tcpdump -i ens192 -nn
    Бешенный поток трафика полетел, едва успел <Ctrl+C> нажать, всё нормально, поток ловим.
  4. Создал новый репозиторий /etc/yum.repos.d/ntop.repo следующего содержания:
    [ntop]
    name=ntop packages
    baseurl=http://www.nmon.net/centos-stable/$releasever/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=http://www.nmon.net/centos-stable/RPM-GPG-KEY-deri
    [ntop-noarch]
    name=ntop packages
    baseurl=http://www.nmon.net/centos-stable/$releasever/noarch/
    enabled=1
    gpgcheck=1
    gpgkey=http://www.nmon.net/centos-stable/RPM-GPG-KEY-deri
  5. Установил NtopNG и сервер Redis (нужен для NtopNG)
    # yum update
    # yum install ntopng ntopng-data
    # yum install redis php-pecl-redis
  6. Сконфигурировал /etc/ntopng/ntopng.conf:
    -G=/var/run/ntopng.pid
    -i=ens192
    -w=3000
    -m=19X.XX.XXX.XXX/27
    -n=3

    где -i=ens192 – рабочий интерфейс (куда льётся поток), -w=3000 – порт веб-морды, -m=X.X.X.X/27 “локальная сеть”, -n=3 – тип резолвинга адресов (в конфиге есть комментарии, я отключил резолвинг локальных адресов).
  7. Прописал автозагрузку и запустил службы
    # systemctl start redis.service
    # systemctl enable redis.service
    # systemctl start ntopng.service
    # systemctl enable ntopng.service
  8. Прописываем в файрволле разрешающее правило для доступа к веб-морде:
    # firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 3000 -s 192.168.1.0/24 -j ACCEPT

Обзорчик NtopNG

Система ОЧЕНЬ глобальная, для админа однозначно MUST HAVE! Сочетает в себе функции DPI, IDS что позволяет немного улучшить безопасность всей сети, наблюдая за различными событиями и показателями. Правда есть одно НО. Система коммерческая, бесплатных фичей много, но самый смак конечно же после покупки корпоративной лицензии. Ценник приводить не буду. Дороговато для экспериментатора. Хотя, если кто-то продонатит, я с удовольствием сделаю полный и подробный обзорчик 🙂

Окно “Хосты” показывает трафик, соотношение приёма-передачи, количество потоков и т.д. Над таблицей справа есть ряд фильтров. Я вот отфильтровал по локальным адресам (да, хосты можно произвольным образом группировать).

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

Разбор различных протоколов! Шикарный функционал, я считаю. Основной трафик конечно же SSL 🙂

 

Основные узлы, с которыми ведёт обмен выбранный хост. Красивые диаграммы.

Прикручен GeoIP модуль, может быть полезно в случае определения месоположения пиров.

Есть временная шкала, где можно посмотреть загруженность трафиком хоста или интерфейса в определённый момент времени и увидеть ТОП абонентов, создающих наибольшую загруженность.

Среди обзора потоков мне понравилась возможность выбрать определённый протокол! Я даже нашёл Telnet-сессии. Надо теперь разбираться, что это за фигня 🙂 Среди протоколов есть также сессии TeamViewer, торренты, ГуглДрайв, Стим и т.д. Интересненько.

Там же есть фильтры, в которых можно увидеть потоки инициированные изнутри или снаружи. Тоже админу может быть интересно.Что-то типа рейтинга по загруженности канала. Вверху идёт линия времени, по интенсивности закраски можно понять загруженность. Справа замазал я IP адреса, так-то оно более наглядно.

Ну и нельзя не упомянуть такой момент, сколько все эти свистульки потребляют. Вот скрин окна top. Честно говоря, весьма прожорливая система, в среднем ест около 50% процессора (в интерфейсе), если браузер закрыть – порядка 5,5%…

Забыл пароль админки

При первом входе (admin:admin) нам предложили сменить пароль админа. Я сменил, но войти не смог ни под старым ни под новым, пришлось сбивать обратно. Как это сделать?

# echo 'newpassword' | md5sum

Получили хеш от пароля ac05b33f4a068ea15350bc25ba40ff2a.

# redis-cli SET ntopng.user.admin.password ac05b33f4a068ea15350bc25ba40ff2a

Мне помогло.

Если понравилась данная статья – ставьте Like! Вступайте в группу, чтобы ничего не пропустить!