PSAD — представляет собой набор из трех легких системных демонов, которые работают на Linux и анализируют логи iptables  для обнаружения сканирования портов и наличие  подозрительного трафика.

Кроме того, PASD может взаимодействовать с Snort – системой обнаружения вторжения.

Сканирование портов не вредит системе, но само по себе является первым и обязательный шагом атаки на целевую систему. Злоумышленник может использовать nmap или любые другие аналогичные инструменты для сканирования сети. Результатом данного сканирования будут возможные, более конкретные векторы атаки (информации о сети, сервисах, хотах, и т.д).

Настройка IPTables

Главное требование для политики iptables, чтобы быть совместимым с psad — нужно, чтобы iptables логировал пакеты. Это достигается путем включения правил INPUT и FORWARD

iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG

Чтобы посмотреть, какие правила сейчас включены, нужно ввести команду

iptables -S
   -P INPUT ACCEPT
   -P FORWARD ACCEPT
   -P OUTPUT ACCEPT

Теперь мы можем начать добавлять наши правила, в основном, на INPUT цепи. Нам нужно добавить правил, чтобы явно разрешить наши авторизованные соединения перед добавлением ограничения.

Для того, чтобы сделать наши сервисы открытыми, можно использовать следующий синтакс

iptables -A INPUT -p protocol --dport port_number -j ACCEPT

Настройка psad на обнаружение атак

Отрываем конфигурационный файл psad’a

nano /etc/psad/psad.conf

Первое, что нужно изменить — это верхняя часть конфига. Изменяем параметр EMAIL_ADDRESSES, на тот куда вы хотите получать уведомления от psad. Также стоит изменить HOSTNAME, чтобы psad ссылался на правильную машину.

EMAIL_ADDRESSES     first_address@domain.com, second_address@other.com;

HOSTNAME            domain.com;

Еще один из важных разделов, на который стоит взглянуть «уровни опасности». Эти уровни используются psad’ом, чтобы классифицировать угрозу. Они определяют пороговые значения количества пакетов, участвующих в событии. По умолчанию они задаются так

DANGER_LEVEL1           5;
DANGER_LEVEL2           15;
DANGER_LEVEL3           150;
DANGER_LEVEL4           1500;
DANGER_LEVEL5           10000;

Если вы используете определенные порты для таких вещей, как port knocking, то можно указать psad’у игнорировать их при мониторинге.

IGNORE_PORTS            ports_or_range_to_ignore;

Можно настроить белый/черный список адресов

nano /etc/psad/auto_dl

Чтобы добавить в черный список ip-адрес нужно присвоить ему значение на «5»

attacker_ip          5;

Для белого списка — присвоить «0»

local_computer_ip        0;

Чтобы включить блокировку фаерволлом определенных адресов нужно изменить в файле psad.conf значение ENABLE_AUTO_IDSнаY

ENABLE_AUTO_IDS         Y;

И установим пороговое значение уровня опасности, по которому фаерволл будет блокировать ip-адрес

AUTO_IDS_DANGER_LEVEL       5;

Так же установим время блока

AUTO_BLOCK_TIMEOUT          3600;

После всех изменений перезагружаем psad

service psad restart

Полезные команды

Чтобы посмотреть активность psad, а так же его статистику

service psad status

Будет показана информация о топ атакующих, о топ сигнатурах и др.

Удалить автоматически заблокированный ip

psad --fw-rm-block-ip <ip>

Удалить все автоматически заблокированные ip

psad -F

Обновление сигнатур

psad --sig-update && psad -H

Более подробную информацию о командах можно посмотреть на официальной станице PSAD man

Тестирование PSAD

Используем сканирование с помощью Nmap

nmap -sX <test ip>

IP-адрес тестовой машины будет заблокирован.

Почти сразу же вы получите электронное письмо:

[psad-status] added iptables auto-block against <test IP> for 3600 seconds

Заключение

Путем правильной настройки такого инструмента для обнаружения сетевых атак, как psad Вы увеличиваете свои шансы на своевременное предупреждение об атаках. Так же psad может в автоматическом режиме применять меры для устранения этих атак.