После того как мы выбрали системы honeypot и определились с функциональными возможностями, необходимо указать способ контроля потоков данных. Основная задача контроля данных - гарантировать, что взломщики не смогут воспользоваться нашими системами honeypot, чтобы напасть или причинить ущерб другим системам. В нашей Honeynet мы создадим три уровня контроля данных.
Первый и основной способ контроля данных - брандмауэр. От него требуется разрешать все входящие, но ограничить исходящие соединения каждой honeypot четырьмя соединениями в сутки. Это дает взломщиками достаточно маневренности, чтобы загрузить свои инструменты, проверить связи и т.д. Однако, когда они попытаются установить пятое соединение, брандмауэр немедленно заблокирует все попытки входящих и исходящих соединений. К IP-адресу honeypot доступ запрещается. Мы создадим эту функцию как для UDP, так и для TCP и будем блокировать исходящий трафик ICMP. Мы обнаружили, что пакеты ICMP трудно отслеживать и есть большие возможности для несанкционированных действий через протокол ICMP. В настоящее время мы блокируем весь исходящий трафик протокола ICMP. Эта сигнатура выделяется не так явно, как кажется, поскольку многие организации ограничивают или блокируют трафик ICMP. Кроме того, мы планируем в будущем включить ICMP. Эта функция автоматического блокирования устанавливается вместе со сценарием предупреждения брандмауэра, и ее можно найти на сайте http://www.dmkpress.ru. Итак, брандмауэр разрешает любые входящие и только четыре исходящих соединения через протокол UDP или TCP, блокируя все действия после четвертого соединения.
Однако не нужно забывать, что для honeypot с системой Linux требуются неограниченные возможности DNS и NTP, поскольку это будет основа всех honeypot в пределах Honeynet. Для DNS мы настраиваем Linux, чтобы она была механизмом продвижения данных. Вместо того, чтобы сконфигурировать систему так, чтобы она запрашивала корневые серверы Internet (Internet root servers), мы настроили ее восходящий поток данных DNS. Значит, когда одна honeypot запрашивает honeypot Linux о разрешении имени, этот запрос для всех разрешений пойдет в одну систему DNS в Internet. Это ограничивает число исходящих DNS-запросов honeypot к отдельной системе. Мы сконфигурировали брандмауэр, чтобы он позволял honeypot посылать запросы к единственной DNS в сети Internet. Honeynet получает полный набор функциональных возможностей DNS, но ограничена в инициировании исходящих соединений от одной honeypot к одной и той же системе. Для NTP мы сделали то же самое - настроили honeypot Linux так, чтобы она опять запрашивала единственный NTP-сервер в сети Internet. Как и в случае с DNS, это ограничит объем дозволенных действий honeypot.
Наконец, брандмауэр настроен для противодействия смене IP-адресов. Это гарантирует, что пакеты, созданные в Honeynet, будут иметь ее IP-адрес. Мы обнаружили, что пакеты с ложным IP-адресом - это один из самых распространенных видов нападений взломщиков, так что очень важно принять контрмеры.
Мы рассмотрим назначение правил по порядку, начиная с самого верхнего:
1. Позволяет удаленно администрировать брандмауэр.
2. Блокирует любые другие попытки соединения с брандмауэром.
3. Разрешает honeypot с операционной системой Linux запрашивать сер
вер NTP. Однако это ограничивает все попытки запросами типа UDP
NTP (порт 123) к определенной системе. Другие внутренние honeypot
будут обращаться к honeypot с ОС Linux за всеми обновлениями вре
мени.
4. Позволяет honeypot с операционной системой Linux запрашивать
определенный DNS-сервер. Однако эти запросы сводятся к запросам
по протоколу UDP DNS (порт 53) и только с определенной системой.
Все другие внутренние honeypot затем будут обращаться к honeypot
Linux за всеми разрешениями DNS.
5. Разрешает любой системе, входящей в сеть Internet, но не в админис
тративную сеть, инициировать соединение с Honeynet. Однако при
регистрации этих соединений необходимо послать электронное пре
дупреждение, которое можно создать с помощью сценария предуп
реждения брандмауэра (см. главу 3).
6. Разрешает всем honeypot инициировать соединения с Internet, но не
с административной сетью - одно из самых важных правил для конт
роля данных. Каждая зарегистрированная попытка сначала рассмат
ривается выбранным пользователем механизмом предупреждения, то
есть сценарием предупреждения брандмауэра, который описан в гла
ве 3. Именно так мы считаем попытки установления исходящих соеди
нений и блокируем пятую или другую попытку.
7. По умолчанию всем отказать (default deny rule). Если пакет не отвеча
ет каким-то, требованиям - отказать и зарегистрировать. У брандмауэ
ра всегда должна быть строка с отказом по умолчанию. Это означает,
что любой, явно не разрешенный, трафик запрещен.
Брандмауэр и его база правил являются основными средствами контроля данных. Однако мы также используем второй, резервный уровень. Как показано на рис. 3.1, весь трафик должен пройти через маршрутизатор, который выступает в качестве дополнительного средства контроля данных. Если брандмауэр даст сбой, маршрутизатор все равно выполнит основную часть его функций. Кроме того, маршрутизатор блокирует основную часть нелегального трафика еще до того, как он дойдет до брандмауэра, что повышает эффективность работы и регистрации брандмауэра.
Маршрутизатор настроен так, чтобы разрешать любой трафик по направлению к Honeynet. Затем мы конфигурируем его так, чтобы он ограничил исходящий трафик только пакетами с исходным IP-адресом Honeynet. Это снова защищает от атак с использованием ложного IP-адреса. Покинуть сеть могут только пакеты с правомочным IP-адресом. Кроме того, маршрутизатор отсекает все пакеты протокола ICMP. Наконец, маршрутизатор можно использовать для того, чтобы ввести правила вручную и заблокировать особенно агрессивного взломщика. Приведем список контроля доступа (ACL), который используется для фильтрации всех пакетов, исходящих из Honeynet через маршрутизатор. Обратите внимание на то, как этот ACL блокирует все пакеты с ложным IP-адресом, разрешая покинуть сеть только пакетам с исходным адресом 172.16.1.0 - внутреннего сетевого блока этой Honeynet. Кроме того, блокируется весь исходящий трафик протокола ICMP. Мы вручную ввели правило блокировки удаленного вызова процедуры (Remote Procedure Call - RPC) и сделали это после того, как какой-то очень агрессивный взломщик попытался проскани-ровать тысячи систем со взломанной honeypot. Шестое правило брандмауэра автоматически блокировало попытки сканирования. Тем не менее мы вручную добавили его в маршрутизатор, чтобы заблокировать пакеты еще до того, как они дойдут до брандмауэра. Это повышает эффективность работы и регистрации брандмауэра. В нашем случае маршрутизатор зарегистрировал более 900 000 попыток сканирования систем в Internet по поводу RPC.
router#show access-list 100 Extended IP access list 100
deny tcp 172.16.1.0 0.0.0.255 any eq sunrpc log (932859 matches)
deny icmp any any (30 matches)
permit ip 172.16.1.0 0.0.0.255 any (62969 matches)
deny ip any any log
Последний уровень обороны заключался в соединении с Internet, имевшем очень небольшую скорость, только 128 Кб/с. Если бы и брандмауэр, и маршрутизатор не смогли блокировать атаки, исходящие из Honeynet, этот небольшой канал создал бы третью линию обороны. Канал настолько мал, что ограничивает действия взломщиков. Только определенное число пакетов в секунду пройдет по такому маленькому каналу. Следовательно, даже если и брандмауэр, и маршрутизатор дадут сбой, взломщику придется иметь дело с ограниченным количеством систем, которые он сможет просканировать, или с ограниченным числом пакетов, которые он сможет послать для организации нападения типа «отказ о обслуживания».
Конечно же, это не совершенная защита, но каждый уровень вносит свою лепту. Когда дело доходит до глубокой обороны, имеют значение даже те механизмы, которые обеспечивают минимальный уровень защиты: важен каждый уровень.