Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #47, ОКТЯБРЬ 2004 г.

Хитрый тюнинг и грамотная защита

Toxa (toxa@cterra.ru)

Спецвыпуск: Хакер, номер #047, стр. 047-080-2


Листинг

TCP_PORTS="42,88,135,139,145,389,443,445,464,593,636,637,1025,1026,1027,1029,1433,3372,3389"

UDP_PORTS=""

Я указал набор TCP-портов, очень похожий на тот, что открывает Windows 2000 Server в дефолтовой установке. UDP-порты прослушивать мы не будем - их редко сканируют.

После этого имеет смыл указать хосты, чье сканирование мы будем игнорировать, например, машины из локалки. Пропиши путь к файлу со списком игнорируемых хостов:

Листинг

IGNORE_FILE="/usr/local/psionic/portsentry/portsentry.ignore"

Чтобы portsentry не занималась ненужным отображением IP-адреса в имя хоста, отключи обратный резольвинг:

Листинг

RESOLVE_HOST = "0"

Далее блокируем IP-адреса хостов, с которых производится сканирование:

Листинг

BLOCK_TCP="1"

А теперь укажи, как ты хочешь это делать. Например, добавлением правила фаервола:

Листинг

KILL_ROUTE="/sbin/ipfw add 1 deny all from $TARGET$:255.255.255.255 to any"

Также можно заносить атакующих в hosts.deny для усиления защиты демонов, использующих tcpwrappers:

Листинг

KILL_HOSTS_DENY="ALL: $TARGET$ : DENY"

Наконец, можно указать баннер, выдаваемый при подключении к порту, прослушиваемому portsentry:

Листинг

PORT_BANNER="WHOM DO YOU WANT TO HACK TODAY?"

Учти, что блокировать хосты таким образом - крайняя мера, так как есть возможность превратить network в notwork, заблокировав легитимных клиентов. В общем случае я бы не рекомендовал использовать KILL_ROUTE. У меня уже два с лишним года работает машинка, приспособленная в свое время именно для снятия подобной статистики (ради интереса). В настоящее время в hosts.deny содержится 12373 записи, и помимо злачных притонов интернета в черный список попали вполне легитимные адреса. Сервисы, работающие на том сервере, не используют tcpwrappers, так что никто не страдает. Но сам факт достоин внимания.

Меняем баннеры

Любой демон, принимающий внешние соединения, так или иначе "демонстрирует себя" баннером - однострочным приветствием, выдающимся клиенту в ответ на соединение с ним. Самый простой способ увидеть это - совершить соединение telnet'ом с сервером на порт, прослушиваемый демоном:

Листинг

[(22:42)(29.10%)(p1):~/articles/tricksec ] telnet smtp.gameland.ru 110

Trying 62.213.71.4...

Connected to smtp.gameland.ru.

Escape character is '^]'.

+OK Microsoft Exchange Server 2003 POP3 server version 6.5.7226.0 (server500.gameland.ru) ready.

Почти всегда это служебная информация, нужная для работы сервиса, но иногда - совершенно бесполезная и даже вредная. Разные сервисы ведут себя по-разному: кто-то ограничивается лаконичным именем хоста и типом сервиса (domain.com ESMTP), а кто-то выдает себя с потрохами, раскрывая свое имя и версию. Если в нашем примере будет найдена уязвимость в определенных версиях Exchange, то взломщик за пару минут напишет баннер-граббер, который соединяется с хостами и снимает с них версию Exchange. Таким нехитрым способом можно легко найти уязвимый хост. Теперь понятно, почему смена баннера имеет смысл: она позволяет скрыть версию сервиса или даже ввести в заблуждение взломщика. По этой причине многие демоны имеют возможность считывать баннер прямо из конфига. Если же нет - мы в мире OpenSource и не поленимся залезть в исходники. Учти, смена баннера не даст нам полной иллюзии "другого" сервиса. Шанс определить демона и, например, отличить Apache от IIS все равно остается - по поведению программы в ответ на различные запросы, коду ошибок, специфичных сообщений, формированию заголовков писем (в случае SMTP-сервера) и т.п., так как жестких стандартов поведения того же почтового сервера нет и каждый реализует протокол по-своему. Однако от примитивных механизмов определения демона мы защитимся (подробнее про fingerprinting читай в другой статье этого номера).

Назад на стр. 047-080-1  Содержание  Вперед на стр. 047-080-3