PortSentry для обнаружения скана портов и перехвата трафика
Вступление
Программа, предназначенная для защиты систем. С ее помощью выявляются попытки сканирования системы и доступа к различным портам. Можно сконфигурировать программу так, чтобы при обнаружении сканера она выполняла определенные действия, например заносила адрес сканера в файл hosts.deny или блокировала маршрут к нему в таблице маршрутизации. Помимо этого программа генерирует журнальные сообщения с указанием типа атаки и адреса узла-сканера.
Информация о продукте:
Программа разработана компанией Psionic Software. Она превратилась в коммерческий продукт (версии 1.х и 2.х), но версия 1.0.11 (и ряд более старых версий в форматах rpm и tar.gz) по-прежнему доступна на многих FTP-серверах, включая ftp.redhat.com.
Инсталяция и конфигурирование
В случае RPM-дистрибутива воспользуйтесь командой rpm, а в случае tar-архива — командами make linux и make install. Рассмотрим первый вариант, так как с ним проще работать.
При инсталляции RPM-дистрибутива программа PortSentry регистрируется в файле /etc/services, а в каталоге /etc/rc.d/init.d создается сценарий portsen-try. Дополнительная конфигурация не требуется, но есть ряд моментов, которые следует учесть.
Программа PortSentry способна работать в трех разных режимах по отношению как к UDP-, так и к TCP-портам. Другими словами, можно одновременно запустить 6 экземпляров программы, решающих разные задачи. По умолчанию используется базовый режим. В этом режиме программа подключается к заранее заданным портам, делая вид, будто является некой сетевой службой. В невидимом режиме порты выбранные прослушиваются на уровне сокетов, что позволяет выявлять различные варианты невидимого сканирования (TCP SYN, TCP FIN, TCP NULL, TCP Xmas Tree). В усовершенствованном невидимом режиме контролируются все порты в диапазоне 1-1023 (верхнюю границу можно расширить, хотя это не рекомендуется). Нужно заметить, что в невидимых режимах программа часто объявляет «ложную тревогу».
В процессе инсталляции создаются списки контролируемых TCP- и UDP-портов. По умолчанию это ТСР-порты 1, 11, 15, 143, 540, 635, 1080, 1524, 2000, 5742, 6667, 12345, 12346, 20034, 31337, 32771, 32772, 32773, 32774, 40421, 49724, 54320 и UDP-порты 1, 513, 635, 640, 641, 700, 32770, 32771, 32772, 32773, 32774, 31337, 54321. Программа конфигурируется на автоматическое блокирование последующих попыток подключиться к компьютеру с атакующего узла.
Многих администраторов не устраивают установки по умолчанию. В конфигурационных файлах, находящихся в каталоге /etc/portsentry, содержится ряд параметров, которые можно изменить для повышения эффективности программы и адаптации ее к конкретным условиям. Таких файлов три: portsentry.conf, portsentry.modes и portsentry. ignore. В файле portsentry. conf хранятся наиболее важные установки, включая списки портов, параметры игнорирования, определения удаляемых маршрутов и внешних команд, пороговые значения и др. Файл portsentry.modes определяет, в каких режимах следует запускать программу, а файл portsentry. ignore содержит IP-адреса систем, которые не нужно блокировать.
Файл portsentry.conf
Первый раздел в нем — это раздел конфигурирования портов, где определяются TCP- и UDP-порты, контролируемые в базовом режиме. Установки по умолчанию выглядят так:
TCP_PORTS="1, 11, 15, 143, 540, 635, 1080, 1524, 2000, 5742, 6667, 12345, 12346, 20034, 31337, 32771, 32772, 32773, 32774, 40421, 49724, 54320" UDP_PORTS="1, 513, 635, 640, 641, 700, 32770, 32771, 32772, 32773, 32774, 31337, 54321" |
В виде комментариев в файле содержится еще несколько готовых списков. Второй раздел содержит параметры усовершенствованного невидимого режима. Сначала задается число контролируемых портов:
ADVANCED_PORTS_TCP="1023" ADVANCED_PORTS_UDP="1023" |
Затем указываются порты, которые программа должна игнорировать. Обычно это порты, по которым часто выдается «ложная тревога»:
# RPC, TCP ident ~NetBIOS ADVANCED_EXCLUDE_TCP="111, 113, 139" # RIP, NetBIOS ~ВООТР ADVANCED_EXCLUDE_UDP="520, 138, 137, 67" |
В следующем разделе задается местонахождение трех конфигурационных файлов программы. Файл portsentry. ignore содержит список IP-адресов, которые не должны блокироваться. Файл portsentry.history содержит пополняющийся список адресов, которые были заблокированы. Файлы portsentry.blocked. * содержат списки адресов, заблокированных в данном сеансе. Один такой файл создается для протокола UDP, другой — для протокола TCP. Установки по умолчанию таковы:
# Блокируемые узлы IGNORE_FILE="/etc/portsentry/portsentry.ignore" # Узлы, которым перекрывался доступ (пополняющийся список) HISTORY_FILE="/var/portsentry/portsentry.history" # Узлы, заблокированные выданном сеансе (временный список # до следующей перезагрузки) BLOCKED_FILE="/var/portsentry/portsentry.blocked" |
Далее задаются действия, предпринимаемые в ответ на атаку UDP- и TCP-портов. Они кодируются по номерам: 0, 1 и 2. Действие 0 означает, что факт сканирования регистрируется, но узел не блокируется. Действие 1 означает блокирование любых сканеров UDP-и TCP-портов (активизируются установки KILL_ROUTE и KILL_HOSTS_DENY). Наконец, действие 2 (задано по умолчанию) заставляет программу временно (до окончания сеанса) заблокировать доступ к службе, зарегистрировать факт сканирования и выполнить действия, указанные в директивах KILL_RUN_CMD. Установки по умолчанию таковы:
BLOCK_UDP="2" BLOCK_TCP="2" |
В разделе удаляемых маршрутов содержатся директивы KILL_ROUTE. Установки по умолчанию вполне подходят для Linux:
KILL_ROUTE="/sbin/route add -host $TARGET$ gw 127.0.0.1" |
В следующем разделе определяется, какой текст добавляется в файл hosts.deny для блокирования узла, занимающегося сканированием. Установка по умолчанию такова:
KILL_HOSTS_DENY="ALL: $TARGET$" |
В последнем разделе задается порог сканирования: сколько подключений к порту должно произойти, прежде чем программа распознает сканер. Нулевое значение означает немедленное реагирование:
SCAN_TRIGGER="0" |
Файл portsentry .modes
Здесь задаются режимы запуска программы PortSentry. Как уже говорилось, всего поддерживается 6 режимов: tcp (базовый режим TCP), udp (базовый режим UDP), step (невидимый режим TCP), sudp (невидимый режим UDP), atcp (усовершенствованный невидимый режим TCP) и audp (усовершенствованный невидимый режим UDP). По умолчанию используются следующие установки:
tcp udp #stcp #sudp #atcp #audp |
Но эффективнее запускать программу в одном из невидимых режимов:
#tcp #udp #stcp #sudp atcp audp |
Запуск PortSentry
После конфигурирования ее можно запустить с помощью команды:
или просто перезагрузить систему (сценарий portsentry будет вызван при переходе на уровень выполнения 3 или 5). Сообщения программы направляются в файл /var/log/ messages. Типичные сообщения показаны ниже:
Apr 13 13:43:23 maureen portsentryt25244]: adminalert: Advanced mode will monitor first 1023 ports
Apr 13 13:43:23 maureen portsentry: Starting portsentry -audp: succeeded Apr 13 13:43:23 maureen portsentry[25248]: adminalert: Advanced mode will manually exclude port: 520
Apr 13 13:43:23 maureen portsentry[25248]: adminalert: Advanced Stealth scan detection mode activated. Ignored UDP port: 111 Apr 13 13:43:23 maureen portsentry[25248]: adminalert: Advanced Stealth scan detection mode activated. Ignored UDP port: 818
Apr 13 13:43:58 maureen portsentry[25244]: attackalert: SYN/Normal scan from host: 192.168.1.15/192.168.1.15 to TCP port: 980 Apr 13 13:43:58 maureen portsentry[25244]: attackalert: Host: 192.168.1.15/192.168.1.15 is already blocked Ignoring
Apr 13 15:20:08 maureen portsentry[25248]: attackalert: UDP scan from host: drgnome/192.168.1.47 to UDP port: 525 Apr 13 15:20:08 maureen portsentry[25248]: attackalert: Host: drgnome/192.168.1.47 is already blocked Ignoring
При работе с программой PortSentry следует помнить о том, что можно легко заблокировать доступ легальным пользователям из-за ложных предупреждений, посылаемых программой. Если это произошло, нужно перезапустить программу, чтобы очистить файлы сеансов, а также проверить файл /etc/hosts. deny. Можно также добавить проверенные узлы в файл /etc/portsentry/portsentry. ignore, чтобы программа их не блокировала.
Твитнуть
По-моему Rayzor дело говорит…
Классная прога,думаю стоит попробовать…