
psad: Обнаружение вторжений и анализ логов с помощью iptables
Port Scan Attack Detector psad — это легковесный системный демон, написанный для работы с брандмауэром Linux iptables/ip6tables/firewalld для обнаружения подозрительного трафика, такого как сканирование портов, бэкдоры, связь с ботнетами и многое другое. Он включает в себя набор гибко настраиваемых порогов опасности (с разумными значениями по умолчанию), подробные предупреждающие сообщения, содержащие источник, назначение, диапазон сканируемых портов, время начала и окончания, TCP-флаги и соответствующие опции nmap, обратный DNS, оповещения по электронной почте и syslog, автоматическую блокировку атакующих IP-адресов через динамическую настройку правил iptables, пассивное определение операционной системы и отчёты в DShield. Кроме того, psad включает многие сигнатуры TCP, UDP и ICMP из системы обнаружения вторжений Snort для обнаружения подозрительных сканирований различных бэкдоров (например, EvilFTP, GirlFriend, SubSeven), DDoS-инструментов (Mstream, Shaft) и продвинутых сканирований портов (SYN, FIN, XMAS), которые легко применяются против машины с помощью nmap. psad также может оповещать о сигнатурах Snort, зарегистрированных через fwsnort, который использует расширение iptables string match для обнаружения трафика, соответствующего сигнатурам прикладного уровня. Начиная с версии 2.4.4, psad также может обнаруживать фазу сканирования учётных данных по умолчанию в IoT ботнете Mirai.
Полный список возможностей приведён ниже.
psad может генерировать предупреждения о переполнениях буфера на прикладном уровне, подозрительных командах приложений и другом подозрительном трафике 7-го уровня.psad предлагает интеграцию с gnuplot и afterglow для построения графиков вредоносного трафика. Следующие два графика относятся к червю Nachi из задачи Honeynet Scan30. Сначала граф связей, созданный afterglow после анализа данных журнала iptables с помощью psad:
"Граф связей червя Nachi"
Второй график показывает трафик червя Nachi по часам из данных Scan30 iptables:
"Почасовой график червя Nachi"
Информация о ключевых словах конфигурации, используемых psad, находится как на странице руководства psad(8), так и здесь:
http://www.cipherdyne.org/psad/docs/config.html
Вся информация, анализируемая psad, собирается из сообщений журнала iptables. По умолчанию psad читает файл /var/log/messages на предмет новых сообщений iptables и опционально записывает их в выделенный файл (/var/log/psad/fwdata). Затем psad отвечает за применение логики порогов опасности и сигнатур для определения того, имело ли место сканирование портов, отправку соответствующих предупреждающих писем и (опционально) блокировку атакующих IP-адресов. psad включает обработчик сигналов: если получен сигнал USR1, psad сбрасывает содержимое текущей хэш-структуры сканирования в /var/log/psad/scan_hash.$$, где "$$" представляет PID работающего демона psad.
ПРИМЕЧАНИЕ: Поскольку psad полагается на iptables для генерации соответствующих сообщений журнала для неавторизованных пакетов, psad настолько хорош, насколько хороши правила журналирования, включённые в набор правил iptables. Следовательно, если ваш брандмауэр не настроен на регистрацию пакетов, psad НЕ обнаружит сканирования портов или что-либо ещё. Обычно лучший способ настроить брандмауэр — это иметь правила "сбросить и зарегистрировать" по умолчанию в конце набора правил и включить правила выше этого последнего правила, которые пропускают только тот трафик, который должен быть разрешён. При запуске демон psad попытается определить, существует ли такое правило запрета по умолчанию, и предупредит пользователя, если нет. См. файл FW_EXAMPLE_RULES для примеров наборов правил брандмауэра, совместимых с psad.
Кроме того, подробное описание psad включено в книгу "Linux Firewalls: Attack Detection and Response", опубликованную No Starch Press, а вспомогательный сценарий из этой книги совместим с psad. Этот сценарий можно найти здесь:
http://www.cipherdyne.org/LinuxFirewalls/ch01/
В зависимости от дистрибутива Linux, psad может уже быть доступен в стандартном репозитории пакетов. Например, в системах Debian или Ubuntu установка выполняется простой командой:
apt-get install psad
Если psad недоступен в репозитории пакетов, его можно установить с помощью сценария install.pl, входящего в состав исходных кодов psad. Сценарий install.pl также обрабатывает обновления, если psad уже установлен. psad требует несколько Perl-модулей, которые могут быть уже установлены в вашей системе Linux. Эти модули находятся в каталоге deps/ в исходных кодах psad и автоматически устанавливаются сценарием install.pl. Список модулей:
psad также включает клиент whois, написанный Marco d'Itri (см. каталог deps/whois). Этот клиент лучше других собирает правильную информацию whois для данного IP-адреса.
Основное требование для совместимости конфигурации iptables с psad — это просто то, что iptables регистрирует пакеты. Обычно это достигается добавлением правил в цепочки INPUT и FORWARD следующим образом:
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG
Приведённые выше правила должны быть добавлены в конец цепочек INPUT и FORWARD после всех правил ACCEPT для легитимного трафика и непосредственно перед соответствующим правилом DROP для трафика, который не должен быть пропущен через политику. Обратите внимание, что политики iptables могут быть довольно сложными, с ограничениями по протоколу, сети, порту и интерфейсу, пользовательскими цепочками, правилами отслеживания соединений и многим другим. Существует множество программного обеспечения, такого как Shorewall и Firewall Builder, которые строят политики iptables и используют расширенные возможности фильтрации и журналирования, предлагаемые iptables. Как правило, политики, созданные такими программами, совместимы с psad, поскольку они специально добавляют правила, предписывающие iptables регистрировать пакеты, не являющиеся частью легитимного трафика. Psad можно настроить на анализ только тех сообщений iptables, которые содержат определённые префиксы журнала (добавляемые с помощью опции --log-prefix), но по умолчанию psad анализирует все сообщения журнала iptables на предмет доказательств сканирования портов, зондирования бэкдоров и другого подозрительного трафика.
psad обычно работает в системах Linux и доступен в репозиториях пакетов многих основных дистрибутивов Linux. Если возникают проблемы с работой psad, пожалуйста, откройте задачу на github
psad выпущен как программное обеспечение с открытым исходным кодом на условиях GNU General Public License (GPL v2+). Последний релиз можно найти на https://github.com/mrash/psad/releases
psad использует многие сигнатуры TCP, UDP и ICMP, доступные в Snort (написан Марти Рёшем, см. http://www.snort.org). Snort является зарегистрированной торговой маркой Sourcefire, Inc.
Все запросы функций и исправления ошибок обрабатываются через систему отслеживания задач github. Однако вы можете написать мне (michael.rash_AT_gmail.com) или связаться через Twitter (@michaelrash).