Установка и настройка nprobe

Допустим мы установили ntopng как я описывал в этой статье — Установка и настройка ntopng
То есть выбрали необходимый пакет на http://packages.ntop.org/apt-stable/ и скачали его:

wget wget http://apt-stable.ntop.org/16.04/all/apt-ntop-stable.deb
sudo dpkg -i apt-ntop-stable.deb

Установим nprobe если он не установлен:

sudo apt-get clean all
sudo apt-get update
sudo apt-get install nprobe

Чтобы принимать NetFlow данные и передавать их на ntopng создадим файл (в редакторе nano клавиши CTRL+X для выхода, y/x для сохранения или отмены изменений):

sudo nano /etc/nprobe/nprobe-anyname.conf

Добавим в него:

--zmq="tcp://*:5556"
-3 2055
--flow-version 9
-n=none
-i=none

2055 — это порт на который нужно принимать NetFlow данные, а порт 5556 используется для их передачи к ntopng.
Смотрите мои статьи о настройке NetFlow на коммутаторах:
Настройка NetFlow на Cisco
sFlow на D-Link коммутаторах
Traffic Flow в Mikrotik

Теперь осталось открыть конфигурацию ntopng в текстовом редакторе:

sudo nano /etc/ntopng/ntopng.conf

И добавить в конце строку (тем самым добавим интерфейс nprobe для сбора статистики):

--interface="tcp://127.0.0.1:5556"

Осталось перезапустить ntopng чтобы применить изменения:

sudo service ntopng restart

Проверим все ли работает:

sudo netstat -tulpen | grep 2055
sudo netstat -tulpen | grep 5556
sudo /etc/init.d/nprobe status

Заметил что nprobe не всегда завершает работу после команды:

sudo /etc/init.d/nprobe stop

Поэтому, при необходимости его можно остановить например так:

sudo killall nprobe
sudo kill -9 PID

В бесплатной версии nprobe у меня отображалось сообщение:

NOTE: This is a DEMO version limited to 25000 flows export.

Полную версию можно приобрести на официальном сайте shop.ntop.org.

Смотрите также:
IPTables правила для nprobe

Использование netwox

Приведу примеры использования netwox и опишу их.
Установку netwox я описывал в этой статье — Установка netwox

Пример стандартного запуска:

sudo netwox

netwox имеет достаточно много функций, посмотреть их можно нажав после запуска цифру 3 и Enter.

Отображение конфигурации сети:

sudo netwox 1

Отображение отладочной информации:

sudo netwox 2

Отображение информации об IP-адресе или имени хоста:

sudo netwox 3 example.com

Отображение информации об MAC-адресе:

sudo netwox 4 -e 00:15:5D:38:01:08

Получение MAC-адресов из списка IP:

sudo netwox 5 -i 192.168.1.0/24

Отображение информации которая будет использована чтобы достичь указанного IP адреса:

sudo netwox 6 192.168.24.254

Сниффер, отображение передающихся пакетов на экране:

sudo netwox 7

Сниффер, отображение только списка открытых портов, которые использовались в захваченных пакетах:

sudo netwox 8

Сниффер, отображение MAC и IP адресов:

sudo netwox 9

Пример захвата пакетов и отображение краткой статистики (отображается количество пакетов (count), сумма размеров пакетов (size), процент количества пакетов (c%) процент из размера (s%)):

netwox 10 -d eth0

Преобразование цифры в шифрованную:

sudo netwox 21 -n number

Преобразование строки в шифрованную (sha256, md5 и т.д.):

sudo netwox 22 -d text

Показать таблицу ASCII:

sudo netwox 23

Проверить безопасность каталога:

sudo netwox 25 /tmp/

Пример выполнения ICMP PING:

sudo netwox 49 -i 192.168.24.253

Пример выполнения ARP PING:

sudo netwox 55 -i 192.168.24.253

Пример ICMP трассировки маршрута:

sudo netwox 57 -i examle.com

Пример TCP трассировки маршрута:

sudo netwox 59 -i examle.com

Пример UDP трассировки маршрута:

sudo netwox 61 -i examle.com

Пример сканирования портов:

sudo netwox 67 -i 192.168.24.254 -p 1-1000

ICMP сканирование на доступность:

sudo netwox 65 -i 192.168.1.0/24

TCP сканирование на доступность по порту:

sudo netwox 67 -i 192.168.1.0/24 -p 80

UDP сканирование на доступность по порту:

sudo netwox 69 -i 192.168.1.0/24 -p 80

ARP сканирование:

sudo netwox 71 -i 192.168.1.0/24

Флуд случайными фрагментами:

sudo netwox 74 -i 192.168.24.254

Заполнение таблицы MAC-адресов коммутатора отправкой флуда:

sudo netwox 75

Synflood:

sudo netwox 76 -i 192.168.24.254 -p 80

и т.д.

Использование Linux ISG

Просмотр всех сессий:

/opt/ISG/bin/ISG.pl
/opt/ISG/bin/ISG.pl | less

Просмотр информации о конкретной сессии:

/opt/ISG/bin/ISG.pl | grep 192.168.4.168

Просмотр количества сессий:

/opt/ISG/bin/ISG.pl show_count

Удаление конкретной сессии:

/opt/ISG/bin/ISG.pl clear 192.168.4.168
/opt/ISG/bin/ISG.pl clear <IP-address | Virtual# | Session-ID>

Изменение скорости для конкретной сессии (входящая/исходящая, например 100 Мб/с):

/opt/ISG/bin/ISG.pl change_rate 192.168.4.168 102400 102400

Замечу то скорость указывается в килобайтах, а при просмотре в таблице сессий отображается в байтах.

Опишу возможные ключи к флагам:
A (Сессия одобрена)
X (Сессия не одобрена)
S (Это услуга (или подсеанс))
O (Административный статус службы включен)
U (Сервис онлайн (учетная запись RADIUS активна, поток трафика))
T (Тип сервиса — «tagger»)
Z (Отключен)

Изменение txqueuelen в Linux

Изменение txqueuelen позволяет установить длину очереди передачи данных для сетевых интерфейсов, когда очередь достигает указанного значения txqueuelen, тогда данные передаются, соответственно меньше трафик — меньше значение txqueuelen, большой трафик — txqueuelen можно увеличить.

Посмотрим текущее значение txqueuelen для каждого сетевого интерфейса:

ifconfig

В моем случае txqueuelen в Ubuntu Server 16.04 стандартно и равно 1000, допустим через сетевой интерфейс ходит очень большой трафик и мы хотим увеличить значение, для этого выполним команду:

ifconfig eth0 txqueuelen 10000

Либо через утилиту ip:

ip link set eth0 txqueuelen 1000

Проверим увеличилось ли значение:

ifconfig

Чтобы после перезагрузки системы изменения не сбросились, откроем файл /etc/network/interfaces например в текстовом редакторе nano:

sudo nano /etc/network/interfaces

И добавим в конце строку:

post-up /sbin/ifconfig eth0 txqueuelen 10000

Либо можно открыть файл /etc/rc.local:

sudo nano /etc/rc.local

И перед строкой «exit 0» добавить строку:

/sbin/ifconfig eth0 txqueuelen 10000

В обеих случаях после перезагрузки системы значение txqueuelen установилось правильно.
Аналогично можно указывать «ip» вместо «ifconfig».

Смотрите также:
Настройка сети в Linux

Установка и использование flow-tools

Flow-tools — набор утилит для отправки, сбора, обработки, анализа данных NetFlow.

Установим коллектора который будет принимать статистику с сенсоров:

sudo apt-get install flow-tools

Откроем файл конфигурации, например в текстовом редакторе nano (Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/flow-tools/flow-capture.conf

Закоментируем все и добавим в конце строку:

-w /var/log/flow -n 275 0/192.168.0.5/555

Ключ -w указывает директорию хранения файлов, -n указывает количество ротаций файлов за день (то есть в моем случае каждый день будет сохранятся 275 файлов, при большом трафике мелкие файлы потом легче анализировать), 0 означает что нужно слушать все сетевые интерфейсы, 192.168.0.5 адрес сенсора с которого будут приниматься статистика, 555 порт на который будут приходить данные с сенсора.

Создадим директорию для файлов:

sudo mkdir /var/log/flow

Перезапустим flow-capture чтобы применить изменения в конфигурационном файле:

sudo service flow-capture restart

Проверить работает ли flow-capture можно так:

sudo netstat -lpnu|grep flow-capture
netstat -anpl |grep 555

Ошибки и попытки прислать статистику от сенсоров, будут писаться в /var/log/syslog.
Можем посмотреть так:

sudo less /var/log/syslog | grep flow

Если используется iptables, то разрешим входящие UDP соединения на порт 555 всем:

sudo iptables -A INPUT -p udp --dport 555 -j ACCEPT

Либо конкретному адресу или сети:

sudo iptables -A INPUT -s 10.0.0.0/24 -p udp --dport 555 -j ACCEPT

Смотрите также:
Открытие и анализ файлов созданных при помощи NetFlow
Настройка NetFlow на Cisco
sFlow на D-Link коммутаторах
Traffic Flow в Mikrotik

Использование ethtool

ethtool — утилита для настройки сетевых интерфейсов в Linux.

Установить ethtool в Ubuntu/Debian можно командой:

sudo apt-get install ethtool

Посмотрим названия сетевых интерфейсов:

ifconfig -a

Переключимся на root, так как некоторые команды требуют повышенных привилегий:

sudo su

Пример просмотра настроек eth0:

ethtool eth0

Пример просмотра информации о драйвере сетевого интерфейса:

ethtool -i eth0

Просмотр статистики сетевого интерфейса:

ethtool -S eth0

Просмотр настроек автосогласования:

ethtool -a eth0

Мигание светодиода 3 секунды на указанном сетевом интерфейсе:

ethtool -p eth0 3

Тест сетевого интерфейса:

ethtool -t eth0 online/offline

Просмотр текущего и максимального размера TX и RX буферов:

ethtool -g eth0

Ручная установка скорости 100 Mb Full Duplex на указанном сетевом интерфейсе (указанные параметры сбросятся после перезапуска системы):

ethtool -s eth0 speed 100 duplex full

Просмотр краткой справки по ethtool:

ethtool -h

Смотрите также:
Настройка сети в Linux
Изменение TX и RX буферов сетевых интерфейсов в Linux
Дистанционное включение компьютера (Wake On LAN)

Изменение TX и RX буферов сетевых интерфейсов в Linux

Установим ethtool если он не установлен:

sudo apt-get install ethtool

Посмотрим имена сетевых интерфейсов:

ifconfig -a

Посмотрим не теряются ли пакеты, например если через сервер проходит большой трафик, то может увеличиваться значение «missed»:

ip -s -s link show

Если теряются, то посмотрим текущий и максимальный размер TX и RX буферов:

ethtool -g eth0

При необходимости изменим максимальный размер (изменения сбросятся после перезагрузки сервера):

sudo ethtool -G eth0 rx 512
sudo ethtool -G eth0 rx 512 tx 512

Чтобы изменения остались после перезапуска сервера, я открыл файл (в редакторе nano комбинация клавиш Ctrl+O служит для сохранения изменений, Ctrl+X для выхода):

sudo nano /etc/network/interfaces

И добавил строку:

post-up /sbin/ethtool -G eth0 rx 512 tx 512

Готово, после перезапуска сервера значения были те что надо.

Смотрите также:
Настройка сети в Linux

Установка и использование jnettop

jnettop — утилита для просмотра статистики трафика в реальном времени, с сортировкой по хостам/портам.

Команда установки в Ubuntu/Debian:

sudo apt-get install jnettop

Команда установки в CentOS:

sudo yum install jnettop

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

sudo jnettop

Пример запуска с указанием сетевого интерфейса:

sudo jnettop -i eth0

Опишу возможные опции запуска:
-h (справка)
-v (просмотр версии)
-c (отключить фильтрацию контента)
-d (записывать отладочную информацию в файл)
-f (чтение конфигурации из файла, если не указано, то файл ищется по пути ~/.jnettop)
-i (захватить пакеты с указанного интерфейса)
—local-aggr [none|host|port|host+port] (установить локальное агрегирование на указанное значение)
—remote-aggr [none|host|port|host+port] (установить удаленное агрегирование на указанное значение)
-n (не преобразовывать IP в DNS имена)
-p (включение неразборчивого режима, чтобы принимать все пакеты которые приходят на сетевой интерфейс)
-s (выбирает одно из правил, определенных в файле конфигурации .jnettop (по его имени))
-x (позволяет специфицировать правило пользовательской фильтрации. это позволяет использовать синтаксис стиля tcpdump. не забудьте включить фильтр в кавычки при запуске из оболочки)

Настройка маскарадинга (NAT) в Ubuntu

Для примера выполню настройку маскарадинга IPv4 (NAT) на Ubuntu Server.
Сначала нужно включить поддержку пересылки пакетов в /etc/sysctl.conf, чтобы трафик мог ходить между разными сетевыми интерфейсами.
Проверим текущее состояние:

sysctl net.ipv4.conf.all.forwarding
cat /proc/sys/net/ipv4/ip_forward

Если оно равно 0, то включим следующей командой:

sysctl -w net.ipv4.conf.all.forwarding=1

Чтобы после перезапуска системы оно не сбросилось, откроем файл /etc/sysctl.conf например в редакторе nano (Ctrl+X для выхода, y/n для сохранения или отмены изменений):

nano /etc/sysctl.conf

И добавим строку:

net.ipv4.conf.all.forwarding=1

При необходимости можно очистить существующие NAT правила:

iptables -t nat --flush

Теперь осталось в iptables добавить правило маскарадинга, например:

iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source 172.16.16.94

Где, 192.168.99.0/24 внутренняя сеть, а 172.16.16.94 адрес через который нужно идти в интернет, аналогично прописываются другие внутренние сети.
Не забываем сохранить добавленные правила iptables.
Например можно открыть файл конфигурации сетевых интерфейсов (его содержимое подгружается при запуске системы):

nano /etc/network/interfaces

И в конце добавлять правила iptables, например укажу маскарадинг этой сети сразу на несколько IP адресов, а также с указанием сетевого интерфейса:

post-up /sbin/iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth3 -j SNAT --to-source 172.16.90.1-172.16.90.5 --persistent

Смотрите также:
Настройка IPTables
Решение ошибки «nf_conntrack: table full, dropping packet»
Использование Linux ISG