Linux - Алексей Стахнов
Шрифт:
Интервал:
Закладка:
Брандмауэр с фильтрацией пакетов
Брандмауэр с фильтрацией пакетов представляет собой «сито» для проходящих через него входящих и исходящих пакетов. В операционной системе Linux реализован брандмауэр, позволяющий контролировать ICMP-, UDP-и TCP-пакеты. Брандмауэр с фильтрацией пакетов организован как механизм, реализующий для входящих и исходящих пакетов набор разрешающих и запрещающих правил. Этот набор правил определяет, какие пакеты могут проходить через конкретный сетевой интерфейс.
Брандмауэр с фильтрацией пакетов может производить с проходящим пакетом всего три действия:
• переслать пакет на узел назначения;
• удалить пакет без уведомления посылающей пакет стороны;
• вернуть передающему компьютеру сообщение об ошибке.
Несмотря на такие простые действия, в большинстве случаев их достаточно для организации эффективной защиты. Как правило, бравдмауэр устанавливается для того, чтобы контролировать данные, которыми компьютеры обмениваются с Интернетом. В результате работы фильтрующего брандмауэра отсеиваются недопустимые обращения к узлам внутренней сети и запрещается передача из внутренней сети в Интернет для пакетов, определенных правилами фильтрации.
В целях получения более гибкой системы правила фильтрации пакетов составляются для каждого сетевого интерфейса, в них учитываются IP-адреса источника и назначения, номера портов TCP и UDP, флаги TCP-соединений и ICMP-сообщений. Причем правила для входящих и исходящих пакетов различаются. Это значит, что при настройке фильтрующего брандмауэра правила для конкретного сетевого интерфейса представляются как отдельные правила для входящей и исходящей информации, поскольку входящие и исходящие пакеты обрабатываются брандмауэром независимо друг от друга. Списки правил, которые управляют фильтрацией сетевых пакетов, поступающих извне в локальную сеть и отправляемых из локальной сети в Интернет, принято называть цепочками (chains). Термин «цепочка» используется потому, что при проверке пакета правила применяются последовательно одно за другим, пока не обнаружится подходящее правило для сетевого пакета или список правил не будет исчерпан.
Описанный механизм фильтрующего брандмауэра достаточно эффективен, однако он не обеспечивает полной безопасности локальной сети. Брандмауэр – это всего лишь один из элементов общей схемы защиты. Анализ заголовков сетевых пакетов – операция слишком низкого уровня для того, чтобы реально выполнять аутентификацию и контролировать доступ. В процессе фильтрации пакетов практически невозможно распознать отправителя сообщения и проанализировать смысл передаваемой информации. Из всего набора данных, пригодных для аутентификации, на рассматриваемом уровне доступен только IP-адрес отправителя, однако этот адрес очень легко подделать, на чем и базируется множество способов сетевых атак. Несмотря на то, что средства фильтрации пакетов позволяют эффективно контролировать обращение к портам, использование протоколов обмена и содержимое пакетов, проверку данных необходимо продолжить на более высоком уровне.
Политика организации брандмауэра
При построении брандмауэров используются два основных подхода:
• запрещается прохождение всех пакетов, пропускаются лишь те, которые удовлетворяют явно определенным правилам;
• разрешается прохождение всех пакетов, за исключением пакетов, удовлетворяющих определенным правилам.
Или, перефразируя, запрещено все, что не разрешено, и разрешено все, что не запрещено.
С практической точки зрения лучше использовать подход, при котором поступающий пакет по умолчанию отвергается (запрещено все, что не разрешено). В этом случае организация безопасности сети достигается достаточно просто, но с другой стороны, приходится предусматривать возможность обращения к каждой сетевой службе и использование каждого конкретного протокола. Это означает, что администратор сети, занимающийся настройкой брандмауэра, должен точно знать, какие протоколы применяются в его локальной сети. При использовании подхода, предусматривающего запрет по умолчанию, приходится предпринимать специальные меры всякий раз, когда необходимо разрешить доступ к какому-то ресурсу, однако эта модель с нашей точки зрения более надежна, чем противоположный вариант.
Политика разрешения по умолчанию позволяет добиться функционирования системы малыми усилиями, но при этом необходимо предусмотреть каждый конкретный случай, при котором требуется запретить доступ. Может случиться так, что необходимость внесения запретов станет ясна лишь тогда, когда в результате несанкционированного доступа сети будет нанесен значительный ущерб.
В обоих случаях для конфигурации брандмауэра используются цепочки правил. Каждая цепочка представляет собой набор правил, заданных явным образом, и политику по умолчанию. Пакет проверяется на соответствие каждому из правил, а правила выбираются из списка последовательно до тех пор, пока не будет обнаружено соответствие сетевого пакета одному из них. Если пакет не удовлетворяет ни одному из заданных правил, с сетевым пакетом производятся действия, определенные политикой по умолчанию.
В процессе работы брандмауэр может пропустить сетевой пакет, запретить прохождение сетевого пакета (deny) либо отказать сетевому пакету в прохождении, т. е. отклонить его (reject). С прохождением сетевого пакета все ясно, а чем же отличаются запрет и отклонение сетевого пакета? При отклонении сетевого пакета (reject) он удаляется, а его отправителю возвращается ICMP-сообщение об ошибке. При запрете прохождения сетевого пакета (deny) он удаляется, но отправитель не оповещается об его удалении.
В большинстве случаев запрет сетевого пакета считается лучшим решением, чем отказ в прохождении сетевого пакета. Во-первых, отправка сообщения об ошибке увеличивает сетевой трафик, а во-вторых, сообщения об ошибке могут быть использованы для организации атаки с целью вывода из строя сервера. Помимо этого, любое ответное действие на «неправильные» пакеты предоставляет взломщику дополнительную информацию о конфигурации вашей системы.
Фильтрация сетевых пакетов
Рассмотрим, на основании каких данных можно производить фильтрацию входящих и исходящих сетевых пакетов, а также каким образом определять «неправильные» сетевые пакеты.
Фильтрация входящих пакетов
Фальсификация исходящего адреса и недопустимые адреса
Рассмотрим признаки, по которым можно однозначно судить о поддельности сетевого пакета, поступающего из Интернета, или о проблемах прикладного программного обеспечения. На основании этих признаков нужно будет задать соответствующие правила фильтрации, чтобы ваш брандмауэр, обнаружив такой «неправильный» исходящий адрес в пакете, мог запретить прохождение сетевого пакета.
• Если в заголовке сетевого пакета в качестве исходного адреса указан адрес вашего компьютера. В процессе сетевого обмена невозможна ситуация, при которой сетевой пакет, отправленный с вашего компьютера, вернулся бы через внешний интерфейс. Следовательно, такой сетевой пакет – поддельный.
• Если в качестве исходящего IP-адреса указан адрес, попадающий в зарезервированный диапазон адресов, предназначенных для внутреннего применения. Согласно правилам распределения IP-адресов, в каждом из классов IP-адресов А, В и С существуют группы IP-адресов, выделенных для организации внутренних локальных сетей. В Интернете эти адреса не используются. При правильной конфигурации программного обеспечения через внешний порт не может прийти пакет с адресом источника, попадающий в один из перечисленных ниже диапазонов:
– класс А – в диапазоне от 10.0.0.0 до 10.255.255.255;
– класс В – в диапазоне от 172.16.0.0 до 172.31.255.255;
– класс С – в диапазоне от 192.168.0.0 до 192.168.255.255.
• Если в качестве исходящего IP-адреса указан IP-адрес класса D, предназначенный для группового вещания. Адреса класса D, специально выделенные для организации группового вещания, находятся в диапазоне адресов от 224.0.0.0 до 239.255.255.255 и ни при каких обстоятельствах не могут выступать в качестве адреса источника.
• Если в качестве исходящего IP-адреса использован зарезервированный IP-адрес класса Е. Класс Е зарезервирован для будущего использования, ему принадлежат адреса в диапазоне от 240.0.0.0 до 247.255.255.255. Если брандмауэр встретит пакет с исходным адресом класса Е, он должен предпринять меры, необходимые для того, чтобы такой пакет не попал в локальную сеть.
• Если в качестве исходящего IP-адреса использован адрес, принадлежащий интерфейсу обратной петли. Интерфейс обратной петли предназначен для локального использования сетевыми службами. Как правило, для обращения к интерфейсу обратной петли используется адрес 127.0.0.1, а вообще за интерфейсом локальной сети зарезервирована целая подсеть 127.х.х.х. Адрес интерфейса обратной петли не может присутствовать в заголовке пакета, полученного через внешний сетевой интерфейс.