Скачиваем последнюю версию 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:
Делаем исполняемым:
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";
Для добавления своего источника редактируем @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";
Выводить отчет без резолвинга:
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";
Устанавливаем 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
Исправление:
В файле 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; }
}