9 апр. 2008 г.

Portsentry

Portsentry

Введение.

Сканирование портов является одним из самых распространенных способов узнать какая ОСь установлена на компьютере, а так же узнать какие службы и их версии установлены и используются. После этого подбираются шеллкоды и выполняются прочие действия. Но не о них в этой статье.
В этой статье мы познакомимся с такой замечательной программой, как Portsentry. Конечно она не заменит вам фаерволл и вероятно уступает по возможностям такой программе как Snort, но и требует меньше времени для настроек и знаний. Эта программка в объединении с фаерволлом даст вам вполне надежную защиту.

Об программе.

Возможности программы:
Обнаруживает практически все виды сканирования, в том числе stealth-сканирование.
Заносит в логи по средством syslogd сканирования портов и подключения к лже-портам.
Вызывает адекватное действие на сканирование, например установка правил фаерволла, занесение информации в лог и занесение сетевых реквизитов атакующего в hosts.deny, либо другие указанные действия, которые можно указать в файле настроек.

Portsentry может работать в трех режимах:
Режим по умолчанию(tcp & udp) – используется сразу после установки программы. В этом режиме программа открывает указанные лже-порты, которые указываются в строке TCP_PORTS(для TCP протокола) и UDP_PORTS(для UDP протокола). При подключении на эти лже-порты сканер определяет это как сканирование, если в строке файла конфига SCAN_TRIGGER установлен 0, если установлено другое значение, то программа среагирует тогда, когда с одного хоста будет подключения на несколько лже-портов.
Enhanced Stealth Scan Detection(stcp & sudp) – в этом режиме программа не держит открытых лже-портов, а просто проверяет на сканирование и подключение порты указанные в TCP_PORTS и UDP_PORTS. В этом режиме сканирующий получит достоверную информацию об открытых портах, но программа определяет практически любой вид сканирования портов, в том числе stealth-сканирование.
Advanced Stealth Scan Detection(atcp & audp) – в этом режиме программа следит только за диаппазоном портов от 0 до ADVANCED_PORTS_TCP и от 0 до ADVANCED_PORTS_UDP. Сканирование определяется практически сразу, и ресурсов системы программа потребляет в этом режиме меньше чем в остальных. Так же не держит в этом режиме открытых лже-портов. Порты на которых весят демоны должны перечислятся в ADVANCED_EXCLUDE_TCP(для TCP протокола) ADVANCED_EXCLUDE_UDP(для UDP протокола).

Установка


Для установки программы в дистрибутиве Debian GNU\Linux достаточно набрать команду apt-get install portsentry, либо в менеджере пакетов выбрать пакет portsentry и установить его. Для других дистрибутивов вам придется использовать правила установки вашего дистрибутива. Офф сайт
http://www.psionic.com/
к сожалению на момент написания статьи, сайт уже делал редирект на сайт Cisco. Они вроде и выкупили все права на распространение программы. Но более старые версии программы до сих пор можно найти в дистрибутивах.

Настройка.


Если нас не устраивает режим по умолчанию, а он нас не устраивает, то мы идем в файл конфига. Ниже перечисленные строки мы находим в файле portsentry.conf по пути /etc/portsentry/ в Debian-e, в других дистрибутивах ищите тот же файл, только месторасположение может быть другим.

TCP_PORTS
В этой строке перечисляются порты, за которыми portsentry ведет наблюдение. Строка используется в режимах TCP, STCP. В этой строке не стоит перечислять порты, которые используются демонами. Используется TCP протоколом.
UDP_PORTS
Аналогично пред идущей строке, только для протокола UDP. Используется в UDP, SUDP режимах.
ADVANCED_PORTS_TCP
Используется в режиме ATCP, для TCP протокола как верхняя граница диапазона от 0 до ADVANCED_PORTS_TCP. Больше чем 1024 устанавливать не рекомендуется.
ADVANCED_PORTS_UDP
Аналогично пред идущему, используется в режиме AUDP, для UDP протокола. Значение больше чем 1024 указывать не рекомендуется.
ADVANCED_EXCLUDE_TCP
Используется для ATCP режима, TCP протокола для указания исключения номеров портов которые используются демонами.
ADVANCED_EXCLUDE_UDP
Используется для AUDP режима, UDP протокола для указания исключения номеров портов которые используются демонами.
IGNORE_FILE
Указывается путь к файлу в котором указываются адреса хостов, которые не будут проверятся программой. Думаю туда стоит указывать только свой IP адрес, чтобы ненароком не заблокировать себя, проверяя свою защиту.
HISTORY_FILE
Указывается путь к лог файлу, в который будут заносится время и адреса хостов, а так же порты которые сканировались.
BLOCKED_FILE
Путь к файлу в котором указываются блокированные хосты. Для каждого из режимов TCP, UDP, STCP, SUDP, ATCP, AUDP будет создан собственный файл вида portsentry.blocked.xxx, где xxx режим работы программы, например portsentry.blocked.atcp с режимом работы программы atcp. При окончании сессии файл очищается.
RESOLVE_HOSTS
Включает поиск по DNS атакующий хост.
BLOCK_TCP
В этой строке указывается какое действие будет производить программа при обнаружении сканирования портов, 0 – ничего не делать, 1 – блокировать, 2 – выполнить действие указанное в строке KILL_RUN_CMD. По умолчанию это 0, но мы поставим 1-цу. Кто захочет если вдруг сделать какие-то ответные действия, которые могут выдать доп. сервисы и установленные пакеты в системе, могут поставить 2 и в KILL_RUN_CMD прописать какой-то скрипт, например отправку почты на мыло, либо сканирование портов в ответ удаленного хоста, но более безопасен тот форт, в который не только входят по приглашениям, но и выходят, только по нужде.
BLOCK_UDP
То же самое что и BLOCK_TCP, но для UDP протокола.
KILL_ROUTE
Опция указывает какие действия нужно предпринять для блокирования сканирующего хоста в фаерволе, либо в таблице роутинга. В файле конфига находится много образцов действий, для разных систем и разных версий ядра, нужно лишь раскомментировать подходящую строку. Для Debian это
KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"
KILL_HOSTS_DENY
Задает формат строки, который будет вписываться в файл hosts.deny для блокирования доступа к сервисам запускаемым inetd.
SCAN_TRIGGER
Задает количество подключений к проверяемым portsentry портам, после которого программа начнет действовать. Если установлен в 0, то программа начинает действовать сразу при обнаружении подключении к одному из проверяемых портов.
PORT_BANNER
Указывает какое сообщение будет выдаваться при попытке подключения к контролируемому portsentry порту. Задавать сообщение не будем, так как это скорее будет вызовом сканирующему и приглашением к взлому, что нам не нужно.

В файле /etc/default/portsentry в Debian-e можно изменить режим запуска программы. Сам скрипт автозапуска программы находится в /etc/init.d/portsentry.

Пример файла настроек


# Use these if you just want to be aware:
TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345,12346,20034,2
7665,31337,32771,32772,32773,32774,40421,49724,54320"
UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,34555,31335,32770,32771,32772,32
773,32774,31337,54321"

ADVANCED_PORTS_TCP="1024"
ADVANCED_PORTS_UDP="1024"

ADVANCED_EXCLUDE_TCP="113,139,80,110,25"
ADVANCED_EXCLUDE_UDP="520,138,137,67,68"

# Hosts to ignore
IGNORE_FILE="/etc/portsentry/portsentry.ignore"
# Hosts that have been denied (running history)
HISTORY_FILE="/var/lib/portsentry/portsentry.history"
# Hosts that have been denied this session only (temporary until next restart)
BLOCKED_FILE="/var/lib/portsentry/portsentry.blocked"

RESOLVE_HOST = "0"

BLOCK_UDP="1"
BLOCK_TCP="1"

# iptables support for Linux
KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"
KILL_HOSTS_DENY="ALL: $TARGET$ : DENY"
SCAN_TRIGGER="0"

Режим у меня установлен ATCP, AUDP.

Подведя итоги не трудно понять, что сама программа никак не заменяет фаерволл, но является не плохим дополнением к нему.

Комментариев нет:

Отправить комментарий