Для сборки и запуска IDS на Linux необходимо установить следующие компоненты:
- Qt 6.x - для графического интерфейса
- libpcap - для перехвата сетевого трафика
- CMake - для сборки проекта
- Компилятор C++ (gcc/g++ или clang)
# Обновление репозиториев
sudo apt update
# Установка Qt 6
sudo apt install qt6-base-dev qt6-tools-dev libqt6widgets6 libqt6gui6 libqt6core6 libqt6network6
# Установка libpcap
sudo apt install libpcap-dev
# Установка CMake и компилятора
sudo apt install cmake build-essential# Установка Qt 6
sudo dnf install qt6-qtbase-devel qt6-tools-dev
# Установка libpcap
sudo dnf install libpcap-devel
# Установка CMake и компилятора
sudo dnf install cmake gcc-c++# Установка Qt 6
sudo pacman -S qt6-base qt6-tools
# Установка libpcap
sudo pacman -S libpcap
# Установка CMake и компилятора
sudo pacman -S cmake gcc# Дать права на выполнение скрипту
chmod +x build_linux.sh
# Запустить сборку
./build_linux.sh-
Создание директории для сборки:
mkdir -p build cd build -
Запуск CMake и сборка:
cmake .. make -j$(nproc)
# Дать права на выполнение скрипту
chmod +x run_linux.sh
# Запустить программу с правами root
sudo ./run_linux.shДля корректной работы IDS требуются права root, так как программа использует libpcap для перехвата сетевых пакетов:
# Запуск из директории build
sudo ./Intrusion_Detection_System_IDSДля запуска с указанием конкретного сетевого интерфейса:
sudo ./Intrusion_Detection_System_IDS --adapter=eth0-
Список доступных сетевых интерфейсов отображается в главном окне программы. Виртуальный интерфейс "test0" всегда присутствует для тестирования функциональности.
-
Для запуска мониторинга сети необходимы права root.
-
Для запуска тестовых атак из инструментария программы также могут потребоваться права root.
Если при сборке возникают ошибки вида:
error: 'const ids_tcp_hdr' has no member named 'src_port'
error: 'const ids_tcp_hdr' has no member named 'flags'
Решение: В Linux системные структуры TCP/IP имеют другие имена полей. Необходимо заменить:
src_portнаth_sportdst_portнаth_dportflagsнаth_flags
Также для флагов TCP используйте предопределенные константы:
TH_SYNвместо0x02(SYN флаг)TH_ACKвместо0x10(ACK флаг)TH_FINвместо0x01(FIN флаг)TH_RSTвместо0x04(RST флаг)
Если вы видите ошибки вида:
error: using typedef-name 'ids_ip_hdr' after 'struct'
Решение:
Не используйте ключевое слово struct перед типами, определенными через typedef:
// Неправильно:
const struct ids_ip_hdr *ipHeader = ...
// Правильно:
const ids_ip_hdr *ipHeader = ...Если графический интерфейс не запускается или выглядит некорректно:
Решение:
# Установка всех необходимых библиотек Qt
sudo apt install libqt6widgets6 libqt6gui6 libqt6core6 libqt6network6
# Проверка переменных окружения Qt
echo $QT_PLUGIN_PATH
echo $LD_LIBRARY_PATH
# Если используете Wayland и есть проблемы с отображением
export QT_QPA_PLATFORM=xcbЕсли программа не может захватывать пакеты:
Решение:
# Проверка наличия libpcap
ldconfig -p | grep pcap
# Проверка прав доступа к сетевым интерфейсам
sudo setcap cap_net_raw,cap_net_admin=eip ./Intrusion_Detection_System_IDS
# Добавление пользователя в группу wireshark (если установлен)
sudo usermod -a -G wireshark $USER
# После этого требуется перелогинЕсли вы видите предупреждения о переполнении буфера:
Решение:
// Используйте ASCII-символы или короткие строки для буферов фиксированного размера
strcpy(sourceIP, "unknown"); // вместо кириллических символовДля тестирования функциональности без прав root можно использовать тестовый режим:
./Intrusion_Detection_System_IDS --test-modeВ этом режиме программа будет использовать виртуальный интерфейс "test0" и генерировать тестовые пакеты для демонстрации функциональности.
[Информация о лицензии]