Если вас не устраивают скромные возможности scanlogd, существует более продвинутый анализатор попыток сканирования — PortSentry. Эта программа позволяет не только зафиксировать сканирование вашего компьютера по сети. Она также дает возможность адекватно отреагировать на данный процесс (не сканировать в ответ, конечно, а просто заблокировать доступ хосту-нарушителю к вашему серверу). Вы можете анализировать процесс сканирования вашего хоста и запускать при этом внешние программы (вроде iptables).
Установка PortSentryВ AltLinux установка утилиты PortSentry выполняется с помощью Synaptic и является рутинной процедурой. PortSentry, так же как и scanlogd, запускается в режиме демона. После завершения процесса установки (в любом дистрибутиве Linux) следует проверить правильность функционирования скрипта автозапуска демона. Для этого следует проверить наличие символической ссылки в каталоге /etc/rc5.d/ на файл /etc/init.d/portsentry, например, с помощью следующей команды :
# ls -l /etc/rc5.d/*portsentry*
Конечно же, если такой ссылки нет, ее следует создать (как это делать применительно к scanlogd, описано выше).
Основные возможности PortSentry Основные возможности PortSentry:
- возможность широкой настройки политики поведения по умолчанию. Демон PortSentry можно запустить в одном из трех режимов работы. Таким образом, вы можете выбрать, что для вас важнее — остановить нарушителя вашего сетевого периметра или зафиксировать попытку проникновения (возможность регулируется указанием определенных параметров командной строки, для чего следует отредактировать инит-скрипт (/etc/init.d/portsentry) запуска демона PortSentry);
- способность выполнения ответных действий (автор программы чрезвычайно рекомендует ограничиться блокированием хоста взломщика, а не принимать адекватных мер вроде ответного сканирования) по отношению к нарушителю ваших сетевых границ. Например, вы можете добавить в таблицу вашего файрвола такое правило, которое будет исключать возможность обмена информацией с хостом-нарушителем (также можно добавлять строку в файл /etc/hosts.deny);
- тонкая настройка диапазонов прослушиваемых и игнорируемых портов и возможность создания списка игнорируемых хостов. Возможность необходима для исключения ложных срабатываний системы защиты, построенной на PortSentry. Таким образом, например, можно исключить 53-й порт, чтобы в дальнейшем не получать предупреждений про сканирование этого порта игровыми программами, которые несколько фривольно используют сетевые возможности (параметры ADVANCED_EXCLUDE_TCP или ADVANCED_EXCLUDE_UDP, которые используются в «продвинутом» режиме запуска демона PortSentry). Игнорируемые хосты перечисляются в файле, который описывается в конфигурационном параметре IGNORE_FILE.
Режимы запуска PortSentryДемон PortSentry может быть запущен в следующих режимах:
- классический (ключ запуска демона -tcp или -udp ). В этом режиме демон PortSentry ожидает подключения по портам, перечисленным в параметрах конфигурационного файла TCP_PORTS (или UDP_PORTS), и блокирует обмен пакетами с удаленным хостом при попытке повторного подключения или сканирования. Этот режим работы не позволяет определять «стелс»-сканирование вашего компьютера;
- улучшенный (Enchanced) режим детектирования «стелс»-сканирований (ключи запуска -stcp или -sudp). При попытке сканировать или подключиться к портам, перечисленным в TCP_PORTS (или UDP_PORTS), происходит блокировка удаленного компьютера;
- продвинутый (Advanced) режим детектирования «стелс»-сканирований. В этом режиме на предмет подключения или сканирования проверяются уже все порты от 1-го до заданного в параметре ADVANCED_PORT_TCP (ADVANCED_PORT_UDP). Режим активируется ключами командной строки -atcp или -audp.
В зависимости от важности вашего хоста следует выбирать один из трех предложенных вариантов запуска демона PortSentry. При этом следует учесть, что одновременно можно выбрать только один режим запуска для каждого протокола. Например, можно указать как для TCP-, так и для UDP-протоколов продвинутый режим детектирования «стелс»-сканирований. В таком случае в файле /etc/init.d/portsentry следует отредактировать значение переменной MODES. Для указанной комбинации протоколов и режимов защиты необходимо указать MODES="audp atcp" (в AltLinux 2.4 именно это значение установлено в /etc/init.d/portsentry по умолчанию). Фактически при инициализации системы будет запущено несколько копий демона PortSentry. Вы можете проверить верность запуска PortSentry с помощью команды, выполненной, конечно же, в терминале:
#ps -aux|fgrep portsentry. В указанном варианте запуска демона вы должны в выводе две строки с идентификаторами процессов. Конечно же, после правки "инит-скрипта" /etc/init.d/portsentry следует запустить его с ключом restart, что приведет к перезапуску демона с новыми параметрами.
Настройка возможностей и вывод данных в PortSentry
Поведение PortSentry настраивается с помощью конфигурационного файла /etc/portsentry/portsentry.conf. Все параметры конфигурационного файла записываются в отдельных его строках и имеют следующий формат:
Параметр="Значение".
Подробную информацию о конфигурационных параметрах программы можно получить из файла README.install пакета инсталляции (русская адаптация этого документа). Данные, получаемые в процессе работы программы, заносятся в файлы /var/log/portsentry и системный лог /var/log/messages. Кроме того, программа создает свои логи (имеются в виду возможности программы, не использующие демон syslog) в каталоге /var/log/portsentry/. В их состав входят следующие файлы:
- /var/log/portsentry/history — история операций PortSentry (здесь указывается перечень заблокированных хостов);
- /var/log/portsentry/blocked.код_режима — логи блокирования хостов для каждого режима запуска PortSentry. То есть для режима atcp (продвинутый TCP-режим анализа стелс-сканирований) будет создан лог-файл /var/log/portsentry/blocked.atcp.
Для оповещения администратора хоста о попытках сканирования можно перенаправить вывод PortSentry в отдельный файл, например /var/log/daemon_info. Достичь этого можно простым добавлением следующей строки в /etc/syslog.conf:
daemon.info /var/log/daemon_info
После перезапуска syslog вы можете использовать приведенный ниже скрипт для автоматического информирования персонала о попытках взлома вашего хоста.
Листинг php-скрипта для обработки логов PortSentry |
Автоматическое блокирование злоумышленникаОдной из самых полезных функций PortSentry является возможность полного блокирования доступа TCP/IP-пакетов с атакующего вас хоста с помощью добавления строки с IP-адресом атакующей системы в /etc/hosts.deny. Данная функция включается с помощью параметра KILL_HOSTS_DENY="ALL: $TARGET$". Для запуска определенной команды непосредственно перед блокированием хоста служит параметр KILL_RUN_CMD="/path/command $TARGET$". Таким образом, можно, например, выслать письмо администратору сервера про факт блокировки хоста-нарушителя (можно использовать стандартную команду mail). Для блокировки взломщика также можно использовать параметр KILL_ROUTE="/path/command $TARGET$", в котором указать добавление нового правила для файрвола, которое бы блокировало обмен пакетами между вашими хостами.
В завершение Как бы хорошо не был защищен ваш корпоративный (или личный) сервер, всегда следует предпринимать дополнительные меры предосторожности. Проблема даже не в том, есть ли бреши в вашей линии обороны. В таком вопросе, как обеспечение информационной безопасности, всегда лучше обеспечить своей системе пускай даже излишний запас прочности, чем бороться с последствиями взлома. Именно поэтому стоит ставить на боевое дежурство одновременно несколько систем раннего обнаружения вроде PortSentry и scanlogd, поскольку вполне вероятно использование взломщиками различных методов маскировки процессов сканирования. В таком случае использование параллельно с scanlogd еще нескольких антисканеров уже является скорее необходимостью, чем признаком паранойи системного администратора.
Ссылки по теме
Статья получена: hostinfo.ru