Инструменты пользователя

Инструменты сайта


how-to:flowviewer

FlowViewer

Установка

Скачиваем последнюю версию https://sourceforge.net/projects/flowviewer/files/latest/download

Распаковываем, устанавливаем необходимые библиотеки, настраиваем разрешения:

sudo mkdir -p /var/www/cgi-bin
sudo tar -xf FlowViewer_4.6.tar -C /var/www/cgi-bin/
sudo chmod -R 550 /var/www/cgi-bin/FlowViewer_4.6
cd /var/www/cgi-bin/FlowViewer_4.6
sudo chmod 440 README dscan.* NamedInterfaces_* *.pm
sudo chmod 770 $(find /var/www/cgi-bin -type d)
sudo apt-get install libgd-graph-perl rrdtool

Создаем отсутствующие директории, перемещаем изображения:

sudo mkdir -p "/var/www/html/FlowViewer" "/var/www/html/FlowGrapher" "/var/www/html/FlowViewer_Dashboard" "/var/www/html/FlowViewer_Saves" "/var/www/html/FlowMonitor"
sudo mv *.png /var/www/html/FlowViewer
sudo mv *.css /var/www/html/FlowViewer
sudo chmod -R 444 /var/www/html/FlowViewer/*
sudo chown -R www-data:www-data /var/www/html/Flow*
sudo mkdir -p "/var/www/cgi-bin/FlowMonitor_Files/FlowMonitor_Filters" "/var/www/cgi-bin/FlowMonitor_Files/FlowMonitor_RRDtool"
sudo chown -R www-data:www-data /var/www/cgi-bin

Редактируем переменные в /usr/lib/cgi-bin/FlowViewer_Configuration.pm

Меняем директорию для исполняемых файлов на /usr/bin:

sudo sed '/flow_bin_directory/s/".*"/"\/usr\/bin"/' -i FlowViewer_Configuration.pm

Добавляем в cron автоматическую очистку:

echo '#!/bin/sh' | sudo tee /etc/cron.daily/flowviewer
echo 'cd /var/www/cgi-bin/FlowViewer_4.6' | sudo tee -a /etc/cron.daily/flowviewer
echo './FlowViewer_CleanFiles 2>&1 >logs/cleanup.log' | sudo tee -a /etc/cron.daily/flowviewer

Создаем init скрпит для FlowMonitor /etc/init.d/flowmonitor:

flowmonitor

flowmonitor

#!/bin/sh
#
# FlowMonitor:      Starts all processes concerning FlowMonitor
#
# description:  This script starts up the the FlowMonitor tools (Collector and Grapher)
#
# processname:  There is not a single process associated with these
#               actions, rather there are multiple processes. This
#               script takes care of all of them.
#
# can be restarted by using the following command:
#
# sudo /etc/init.d/flowmonitor restart
 
RETVAL=0
 
start() {
    echo -n "Starting FlowMonitor processes: "
 
    echo -n "FlowMonitor_Collector "
 
    cd /var/www/cgi-bin/FlowViewer_4.6
    ./FlowMonitor_Collector &> /dev/null &
    RETVAL=$?
 
    echo -n "FlowMonitor_Grapher "
 
    cd /var/www/cgi-bin/FlowViewer_4.6
    ./FlowMonitor_Grapher &> /dev/null &
    RETVAL=$?
 
    echo 
}
stop() {
    echo -n "Stopping FlowMonitor processes: "
    RETVAL=0
 
    for p in `pidof perl`
    do
        ps $p | grep FlowMonitor_Collector > /dev/null
        if [ $? -eq 0 ]; then
            echo -n "FlowMonitor_Collector "
            kill $p
        fi
 
        ps $p | grep FlowMonitor_Grapher > /dev/null
        if [ $? -eq 0 ]; then
            echo -n "FlowMonitor_Grapher "
            kill $p
        fi
    done
 
    echo 
}
 
# See how we were called.
 
case $1 in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        ;;
esac
exit $RETVAL

Делаем исполняемым:

sudo chmod +x /etc/init.d/flowmonitor

Добавляем в автозагрузку:

sudo update-rc.d flowmonitor defaults 30

Настройка

Отключаем лишние рабочие столы:

cd /var/www/cgi-bin/FlowViewer_4.6
sudo sed '/@.*dashboard/s/^#//g' -i FlowViewer_Configuration.pm
sudo sed '/dashboard.*SOC/s/^/#/g' -i FlowViewer_Configuration.pm

Меняем директорию расположения flow файлов в переменных на свою:

sudo sed '/flow_data_directory/s/".*"/"\/var\/flow"/' -i FlowViewer_Configuration.pm
sudo sed '/exporter_directory/s/".*"/"\/var\/flow\/flow-data"/' -i FlowViewer_Configuration.pm

Получаем:

$flow_data_directory     = "/var/flow";
$exporter_directory      = "/var/flow/flow-data";

Список "Netflow Source"

Для добавления своего источника редактируем @devices, подставляем имя директории находящейся в директории указанной в $flow_data_directory и убираем источники для SiLK:

sudo sed '/@devices/s/= \S*; /= \("flow-data"\); /' -i FlowViewer_Configuration.pm
sudo sed '/@ipfix_devices/s/= \S*; /= \(""\); /' -i FlowViewer_Configuration.pm

Получаем:

@devices                 = ("flow-data");
@ipfix_devices           = ("");

Устанавливаем источник по умолчанию в списке:

sudo sed '/ipfix_default_device/s/= \S*; /= "flow-data"; /' -i FlowViewer_Configuration.pm

Получаем:

$ipfix_default_device    = "flow-data";

Список "Resolve Addresses"

Выводить отчет без резолвинга:

sudo sed '/default_identifier/s/= \S*;/= "IP";/' -i FlowViewer_Configuration.pm

Получаем:

$default_identifier = "IP";

Формат даты

Меняем формат даты на DD.MM.YYYY:

sudo sed '/date_format/s/= \S*;/= "DMY2";/' -i FlowViewer_Configuration.pm

Получаем:

$date_format = "DMY2";

Nginx

Устанавливаем fcgiwrap на unix-сокете.

Создаём /etc/nginx/sites-available/flowviewer

server {
    listen 80;
    server_name flow.domain.com flow;

    rewrite ^/$ $scheme://$host/FlowViewer_4.6/FV.cgi;

    location / {
        root   /var/www/html;
    }

    location /FlowViewer_4.6/ {
        gzip off;
	autoindex on;
	root /var/www/cgi-bin;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
        fastcgi_index FV.cgi;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Подключаем сайт и перегружаем nginx:

sudo ln -s /etc/nginx/sites-available/zabbix /etc/nginx/sites-enabled
sudo service nginx restart

Ошибки

  • Не работает FlowMonitor при установке формате формата даты ($date_format) не MDY в FlowViewer_Configuration.pm
  • Не работает корректно сортировка список Sort Field

Исправление:

В файле FlowViewer_Main.cgi приводим блок к виду:

        # Set up the flow-stat command if requested

        if ($stat_report ne "0") {
                if ($rate_report) {
                        if ($sort_field == 1) { $ft_sort_field = 3; }
                        if ($sort_field == 2) { $ft_sort_field = 2; }
                        if ($sort_field == 3) { $ft_sort_field = 4; }
                } else {
                        if ($sort_field == 1) { $ft_sort_field = 3; }
                        if ($sort_field == 2) { $ft_sort_field = 2; }
                        if ($sort_field == 3) { $ft_sort_field = 4; }
                }

Ссылки

how-to/flowviewer.txt · Последнее изменение: 127.0.0.1