Table of Contents
Установка и настройка nfsen и nfdump
Введение
NetFlow - сетевой протокол, предназначенный для учёта сетевого трафика. Можно собирать информацию об объеме трафика, протоколе, адресах и портах.
Для сбора информации по netflow нужно настроить три компонента:
- Сенсор – это сетевое устройствое на котором настраивается какой именно трафик будет собран и отправлен в коллектор.
- Коллектор – это сервер который принимает и хранит полученные данные.
- Анализатор – это ПО которое позволяет делать различные запросы к накопленным данным. С помощью анализатора можно посчитать объем, посмотреть какой трафик проходил и т.д.
Nfsen - это коллектор и анализатор с web интерфейсом.
Nfdump - это анализатор который использует Nfsen, так же nfdum-ом можно самому делать запросы к netflow данным из cli.
Задача
Есть основной “железный” сервер (flow1), с большим объемом дисков, на который пограничные маршрутизаторы отправляют netflow данные. Сервер flow1 стоит в локальной сети за файрволом (pix) в котором сделан статический нат между внутренним и внешним ip адресом.
На случай гибели flow1 надо подготовить резервный сервер flow2.
Сервер flow2 это ВМ на которой установлена и настроена связка nfsen+nfdump. Netflow данные будут складываться на отдельный LVM раздел который в случае необходимости можно будет расширить. Начальный размер LVM раздела примерно равняется месячному объему netflow данных. Будет достаточно времени, что бы разобраться с flow1.
Переключение между flow1 и flow2 будет производиться на pix путем правки правил статического ната.
Править настройки на newtflow сенсорах не нужно.
Подготовка раздела под netflow данные
Сделаем:
- Логический том LVM объемом 20Гб.
- Отформатируем его в ext4.
- Примонтируем в систему.
Создание логического тома LVM
Смотрим на имеющиеся в системе диски, нас интересует /dev/sdb.
[root@flow2 ~]# fdisk -l Disk /dev/sda: 5368 MB, 5368709120 bytes ... Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
Помечаем диск sdb как физический том (PV, physical volume).
[root@flow2 ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created
Работу с LVM начинаем с инициализации.
Команда vgscan ищет группы томом (VG, volume group) на всех PV, а команда vgchange -ay активирует найденный VG.
В нашем случае VG еще нет, поэтому вывод команды vgscan будет пустой.
[root@flow2 ~]# vgscan Reading all physical volumes. This may take a while...
Командой vgcreate, из целого диска /dev/sdb, делаем VG с названием flow2.
После еще раз сканируем диски на наличие VG и активируем только что созданную VG flow2.
[root@flow2 ~]# vgcreate flow2 /dev/sdb Volume group "flow2" successfully created [root@flow2 ~]# vgscan Reading all physical volumes. This may take a while... Found volume group "flow2" using metadata type lvm2 [root@flow2 ~]# vgchange -ay flow2 0 logical volume(s) in volume group "flow2" now active
Смотрим на созданный VG.
[root@flow2 ~]# vgdisplay --- Volume group --- VG Name flow2 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 20,00 GiB PE Size 4,00 MiB Total PE 5119 Alloc PE / Size 5119 / 20,00 GiB Free PE / Size 0 / 0 VG UUID qy0gI5-Ft4o-i3TK-ATcJ-WgCu-gNaF-J6F8XQ
Командой lvcreate cоздаем логический том (LV, logical volume) “data” размером в 100% от размера VG flow2.
[root@flow2 ~]# lvcreate -n data -l100%FREE flow2 Logical volume "data" created.
Смотрим на LV.
[root@flow2 ~]# lvdisplay --- Logical volume --- LV Path /dev/flow2/data LV Name data VG Name flow2 LV UUID ez85OV-1CT1-M0iI-f1Lr-x1IR-5xFW-f0SoOg LV Write Access read/write LV Creation host, time flow2.company.name, 2017-07-07 16:24:16 +0300 LV Status available # open 1 LV Size 20,00 GiB Current LE 5119 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
Форматирование логического тома LVM
Форматируем LV data под ext4.
Смотрим на диски.
[root@flow2 ~]# fdisk -l Disk /dev/sda: 5368 MB, 5368709120 bytes ... Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/flow2-data: 21.5 GB, 21470642176 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
Форматируем LV data (/dev/flow2/data) под ext4.
[root@flow2 ~]# mkfs.ext4 /dev/flow2/data mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1310720 inodes, 5241856 blocks 262092 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 160 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 33 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
Монтирование логического диска LVM
Монтируем диск /dev/mapper/flow2-data в /data.
[root@flow2 /]# mkdir /data [root@flow2 /]# mount /dev/flow2/data /data [root@flow2 /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 4,8G 1,4G 3,2G 30% / tmpfs 250M 0 250M 0% /dev/shm /dev/mapper/flow2-data 20G 44M 19G 1% /data
Правим fstab, записываем инфомацию о блочном устройстве /dev/mapper/flow2-data.
[root@flow2 ~]# cat /etc/fstab ... /dev/mapper/flow2-data /data ext4 defaults 0 0
Установка nfdump
Nfdump ставится через yum командой yum install nfdump
[root@flow2 ~]# yum install nfdump ... Resolving Dependencies --> Running transaction check ---> Package nfdump.i686 0:1.6.11-1.el6 will be installed --> Finished Dependency Resolution
Установка nfsen
Последняя версия nfsen 1.3.8 на Centos6 не запускается, надо ждать когда пофиксят. Пока будем ставить 1.3.6p.
Доставляем пакетов.
# yum install httpd php perl perl-TimeDate perl-Pod-Escapes perl-Pod-Simple perl-Test-Pod perl-MailTools libdbi lua net-snmp-utils perl-rrdtool gcc make flex rrdtool-devel byacc perl-Socket6
Скачиваем и разархивируем nfsen.
[root@flow2 src]# cd ~/src [root@flow2 src]# wget https://downloads.sourceforge.net/project/nfsen/stable/nfsen-1.3.6p1/nfsen-1.3.6p1.tar.gz [root@flow2 src]# tar -zxvf nfsen-1.3.6p1.tar.gz
Правим файл конфигурации nfsen.conf прямо в разархивированных файлах.
Меняем путь до nfdump пользователя и группу веб сервера.
[root@flow2 src]# cd nfsen-1.3.6p1/etc/ [root@flow2 etc]# ll total 36 -rw-r--r-- 1 943 501 9388 Янв 14 2012 nfsen-dist.conf [root@flow2 etc]# cp nfsen-dist.conf nfsen.conf [root@flow2 etc]# vi nfsen.conf ... ## nfdump tools path #$PREFIX = '/usr/local/bin'; $PREFIX = '/usr/bin'; ... # user and group of the web server process # All netflow processing will be done with this user #$WWWUSER = "www"; #$WWWGROUP = "www"; $WWWUSER = "apache"; $WWWGROUP = "apache";
Создаем пользователя netflow и в файде /etc/group добавляем его в группу apache.
[root@flow2 etc]# useradd -M -s /sbin/nologin netflow
Запускаем установку.
[root@flow2 etc]# cd ~/src/nfsen-1.3.6p1/ [root@flow2 nfsen-1.3.6p1]# ./install.pl etc/nfsen.conf
В /etc/init.d/ создаем скрипт запуска nfsen.
#!/bin/bash # # chkconfig: - 50 50 # description: nfsen DAEMON=/data/nfsen/bin/nfsen case "$1" in start) $DAEMON start ;; stop) $DAEMON stop ;; status) $DAEMON status ;; restart) $DAEMON stop sleep 1 $DAEMON start ;; *) echo “Usage: $0 {start|stop|status|restart}” exit 1 ;; esac exit 0
Делаем его исполняемым.
[root@flow2 init.d]# chmod +x nfsen
Запускаем nfsen
[root@flow2 init.d]# /etc/init.d/nfsen start Starting nfcapd:(upstream1)[2053] (peer1 peer2)[2056] Starting nfsend.
Настройки vhost.conf.
[root@flow1 conf.d]# cat vhost.conf <VirtualHost *:80> ServerAdmin noc@company.name DocumentRoot /var/www/nfsen ServerName nfsen.company.name ErrorLog logs/nfsen_err_log CustomLog logs/nfsen_acc_log common </VirtualHost>
На этом настройка завершена, осталось в iptables открыть все нужные порты для веб-интерфеса и netflow данных.