Иллюстрированный самоучитель по защите в Интернет

Фильтрация пакетов

Работа брандмауэров с фильтрацией пакетов (в том числе с сохранением состояний) типа Firewall-1 от компании CheckPoint, PIX и IOS от компании Cisco (да, IOS тоже можно использовать в качестве брандмауэра) основывается на списках ACL или правилах, служащих для определения того, является ли авторизованным трафик, передаваемый в/из внутренней сети. В большинстве случаев эти списки грамотно разработаны и их очень трудно обойти. Однако зачастую можно обойти брандмауэры с нестрогим списком ACL и передать отдельные пакеты во внутреннюю сеть.

Нестрогие списки ACL

Нестрогие списки ACL применяются на гораздо большем числе брандмауэров, чем это можно себе представить. Предположим, что провайдеру услуг Internet какой-то организации необходимо разрешить перенос зоны. В этом случае вместо нестрогого списка ACL, такого как "Разрешить выполнение действий с сервера DNS провайдера услуг Internet с исходного TCP-порта 53 и порта назначения 53", может быть реализован следующий: "Разрешить выполнение любых действий с исходного TCP-порта 53". Подобные ошибки в конфигурации могут оказаться поистине разрушительными, поскольку злоумышленник сможет просканировать всю сеть извне. Большинство из таких атак начинается со сканирования узла, расположенного позади брандмауэра, и использования в качестве исходного ложного TCP-порта 53 (DNS).

Контрмеры против нестрогих списков ACL

Предотвращение

Удостоверьтесь, что правила вашего брандмауэра разрешают лишь определенные подключения. Например, если вашему провайдеру услуг Internet требуется выполнять перенос зоны, это должно быть явно указано в установленных правилах. При этом требуйте указания в правиле как исходного IP-адреса, так и IP-адреса назначения (внутреннего сервера DNS).

Если вы используете брандмауэр Checkpoint, то для ограничения возможности использования исходного порта 53 (DNS) лишь службой DNS провайдера можно реализовать следующее правило. Например, если адресом сервера DNS провайдера является 192.168.66.2, а адресом внутреннего сервера DNS – 172.30.140.1, то это правило будет иметь следующий вид.

Source Destination Service Action Track
(источник) (назначение) (служба) (действие) (регистрация)
192.168.66.2 172.30.140.1 domain-tcp Accept Short

Обход брандмауэров Checkpoint

Брандмауэры Checkpoint 3.0 и 4.0 предоставляют открытые порты по умолчанию. Порты, используемые для обратного поиска DNS (UDP 53), переноса зоны DNS (TCP 53) и маршрутизации (RIP, UDP 520), могут задействоваться любьш узлом для доступа к любому узлу. В дополнение ко всему эти операции не регистрируются в системных журналах. В результате после "захвата" узла внутренней сети у взломщика появляются интересные возможности.

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

В любом случае на взломанном узле должна быть запущена программа прослушивания netcat. Эта утилита либо обеспечит доступ взломщика к удаленной командной оболочке, либо предоставит ему возможность вводить команды и выполнять их локально на удаленном узле. Подобные "потайные ходы" подробно рассматриваются в главе 14, а сейчас для лучшего понимания проблемы мы лишь кратко рассмотрим описанный подход.

Как видно из следующего рисунка, брандмауэр Checkpoint пропускает данные через TCP-порт 53 без регистрации. После установки на взломанном удаленном узле программы netcat, связанной с портом 53, и "захвата" удаленной командной оболочки /bin/sh через свой собственный порт 53, находящийся в состоянии ожидания запросов, взломщик "прорубит окно" в брандмауэре и получит доступ к любой системе.

Иллюстрированный самоучитель по защите в Интернет › Брандмауэры › Фильтрация пакетов

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.