Invaders Must Die - это альбом группы Prodigy 2009 года выпуска ещё одна IDS для Linux, которая позволяет Вам замониторить потенциально нелегитимные события в сетевом трафике на интерфейсе при помощи YARA правил.
Внутри есть три компонента:
invaders-must-die - Сенсор, который слушает трафик на заданном сетевом интерфейсе и анализирует его при помощи YARA правил.
stand-up - Сервис, отвечающий за приём и передачу событий безопасности от сенсора.
omen - Веб приложение, которое отображает нелегитимные события, принимая их от stand-up.
Скопируйте репозиторий:
git clone https://github.com/Argendo/invaders_must_die.git
Перейдите в папку проекта и установите gRPC:
cd invaders_must_die
export MY_INSTALL_DIR=$HOME/.local
export PATH="$MY_INSTALL_DIR/bin:$PATH"
sudo apt install -y build-essential autoconf libtool pkg-config cmake
git clone --recurse-submodules -b v1.60.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc
cd grpc
mkdir -p cmake/build
pushd cmake/build
cmake -DgRPC_INSTALL=ON \
-DgRPC_BUILD_TESTS=OFF \
-DCMAKE_INSTALL_PREFIX=$MY_INSTALL_DIR \
../..
make -j 4
make install
popd
В файле common.cmake измените строку:
add_subdirectory(third-party/grpc ${CMAKE_CURRENT_BINARY_DIR}/grpc EXCLUDE_FROM_ALL)
на:
add_subdirectory(полный_путь_к_папке_проекта/grpc ${CMAKE_CURRENT_BINARY_DIR}/grpc EXCLUDE_FROM_ALL)
сохраните файл.
Устанавливаем необходимые библиотеки:
libpcap-dev libsystemd-dev libyara-dev libpcap-dev libgrpc-dev
Устанавливаем submodules:
git submodule update --init
Создаём директорию для сборки и конфигурируем Cmake
:
mkdir build
cd build
cmake ..
Собираем проект:
make
Пример использования сенсора с указанием интерфейса, файла с правилами и адреса сервиса для отправки событий:
./invaders-must-die -i eth0 -r rules.yar -h localhost:50051
Для начала необходимо указать параметры подключения к базе данных, при помощи файла config.py.
Далее необходимо скомпилировать файлы описания протокола protobuf в классы Python при помощи:
python -m grpc_tools.protoc -I=proto --python_out=. --pyi_out=. --grpc_python_out=. proto/alert.proto
Запуск сервиса:
python3 app.py
После чего сервис станет доступен по порту 50051
.
Для запуска сервиса необходимо сконфигурировать настройки подключения к БД в файле config.py, после чего запустить Docker-образы с помощью команды:
sudo docker-compose up -d
После чего сервис станет доступен по порту 50051
.
Для начала необходимо проинициализировать sqlite3 БД с помощью команды:
python3 init_db.py
Компилируем protobuf файлы в классы Python:
python -m grpc_tools.protoc -I=proto --python_out=. --pyi_out=. --grpc_python_out=. proto/alert.proto
В приложении используется переменная окружения GRPC_HOST, поэтому необходимо её обозначить:
export GRPC_HOST="ip_машины_на_которой_развернут_invaders_mush_die:50051"
Запускаем приложение:
python3 app.py
После чего приложение будет доступно по адресу localhost:5000
.
Перед запуском в файле Dockerfile необходимо задать переменной GRPC_HOST значение вида: ip_машины_на_которой_развернут_invaders_mush_die:50051
Запуск с помощью docker-compose
:
sudo docker-compose up -d
После чего приложение будет доступно по адресу localhost:5000
.