Linux
Шрифт:
Фильтрация на основе адреса источника
При этом типе фильтрации необходимо сформировать правила фильтрации таким образом, чтобы пакет, в котором указан адрес источника, не совпадающий ни с одним из адресов компьютеров вашей локальной сети, не был пропущен брандмауэром. Это может вызвать некоторые затруднения, если в вашей организации разветвленная локальная сеть или IP-адреса выдаются динамически. Однако эти проблемы решаемы.
Фильтрация на основе адреса назначения
Как уже упоминалось выше, возможна ситуация, при которой вам потребуется ограничить передачу сетевых пакетов за пределы локальной сети адресами отдельных сетей или отдельных компьютеров. Эти адреса или диапазоны адресов могут быть указаны в правилах, задаваемых брандмауэру.
Фильтрация на основе порта источника
Проверка портов, указанных в заголовках сетевых пакетов, может выполняться как для клиентов,
Пакеты, передаваемые сервером, обязательно должны содержать в заголовке порт источника, совпадающий с номером порта, выделенным для службы данного типа. Проверка номера порта представляет собой проверку конфигурации сетевых протоколов.
Фильтрация на основе порта назначения
Поскольку локальные клиенты могут обращаться к удаленным серверам лишь по конкретным номерам портов, фильтрация исходящих пакетов является одновременно средством контроля за использованием протоколов. Запрет прохождения сетевых пакетов на основе порта назначения не дает возможности пользователям локальной сети проводить сканирование портов удаленных компьютеров, ведь обычно сканирование портов – предвестник сетевой атаки.
Защита локальных служб
Как правило, локальные сервисы используются только внутри вашей сети, и предоставление доступа к этим службам извне нецелесообразно, а зачастую и вредно. Поэтому самый простой способ уберечься от проникновения в систему через один из сервисов – запретить доступ к сервису извне. Однако существуют службы, которые могут вызвать большое количество проблем при организации запрета доступа, например ICQ.
Один из способов защитить службы, предназначенные для внутреннего использования, – отказаться от размещения соответствующих серверов на компьютерах, доступных из глобальной сети. Однако в небольших сетях обычно существует один-единственный сервер, зачастую выполняющий роль брандмауэра, поэтому в некоторых случаях компромиссы неизбежны.
Для защиты сервера от обращений из Интернета можно применить брандмауэр, выполняющий фильтрацию пакетов по порту назначения. Наличие такого брандмауэра позволяет запускать в локальной сети большое количество служб, не подвергая серьезной опасности сетевые ресурсы.
Программа ipchains
Как уже упоминалось выше, брандмауэр – это набор программных средств для организации защиты вашей сети. Большая часть функциональности брандмауэра интегрирована в ядре операционной системы Linux, но для создания и управления цепочками правил используются внешние программы. Для этих целей и предназначена программа ipchains. В последнее время активно внедряется программа iptables, однако она еще не получила такого широкого распространения, как программа ipchains.
Правила фильтрации пакетов, составляющих цепочки input, output и forward (входящие, исходящие и переадресация), содержатся во внутренних таблицах ядра операционной системы Linux. Каждое правило может быть включено в начало цепочки или добавлено в ее конец. Для определенности будем считать, что все правила, определяемые в данной главе, добавляются в конец цепочки. Порядок, в котором задаются правила, определяет порядок, в котором они будут включены в цепочку, и последовательность их применения к каждому пакету.
При поступлении на сетевой интерфейс извне информационного пакета содержимое заголовка этого пакета проверяется. Правила, принадлежащие цепочке input данного сетевого интерфейса, применяются последовательно одно за другим до тех пор, пока не будет найдено такое, которому удовлетворяет данный сетевой пакет. Соответственно, каждый сетевой пакет, отправляемый вовне, проверяется на соответствие правилам, содержащимся в цепочке output сетевого интерфейса. При обнаружении первого соответствия правилу проверка прекращается и к пакету применяется действие, указанное в составе правила accept, reject или deny. Если пакет не удовлетворяет ни одному из правил, содержащихся в цепочке, вступает в действие политика по умолчанию. Таким образом, при работе брандмауэра пакет обрабатывается по первому из правил, которым он удовлетворяет.
Программе ipchains параметры передаются при вызове в командной строке. Формат командной строки приведен ниже:
ipchains -А|I [цепочка] [-i интерфейс] [-р протокол] [[!] -y]
[-s адрес [порт [: порт]]]
[-d адрес [порт [: порт]]] -j действие [1]В правилах, управляющих работой брандмауэра, предусматривается проверка адреса источника и адреса назначения. Для сравнения могут использоваться IP-адрес узла, диапазон IP-адресов, символьное имя узла и имя домена.
Программа ipchains позволяет задавать после IP-адреса дескриптор маски. Дескриптор маски — это целое число, которое может принимать значения от О до 32, и определяет число битов в маске.
Дескриптор маски указывает, сколько старших битов адреса узла должны в точности совпадать с адресом, заданным в составе правила. Дескриптор маски, равный 32, означает, что адрес узла должен полностью совпадать с адресом, указанным в правиле. Если дескриптор маски отсутствует, считается, что он равен 32. Так, адрес 192.168.0.45 означает то же самое, что и выражение 192.168.0.45/32.Опции ipchains
В табл. 29.1 приведены наиболее часто применяемые опции программы ipchains.
Таблица 29.1. Опции программы ipchainsСимвольные константы
Для улучшения удобочитаемости правил фильтрации и для удобства сопровождения в сценариях брандмауэра рекомендуется использовать символьные имена. В табл. 29.2 приведены некоторые символьные константы, используемые при конфигурировании брандмауэра.
Таблица 29.2. Символьные константы, используемые при описании правил фильтрацииСоздание правил фильтрации
В этом разделе мы рассмотрим создание правил фильтрации для нашего брандмауэра. Эти правила ориентированы для среднестатистического брандмауэра, который полностью удовлетворяет потребностям одного компьютера или малой локальной сети. Для более серьезных случаев вы сможете оформить свой набор правил, используя нижеприведенные как базис.
Удаление существующих правилНачиная создание своих правил фильтрации, обязательно удалите уже существующие правила. Это необходимо с точки зрения элементарной предосторожности – вдруг в системе уже определены некоторые правила фильтрации, идущие вразрез с вашей политикой безопасности.
Удаление правил фильтрации называется сбросом цепочки. Для сброса встроенных цепочек необязательно обращаться к ним явно. Все три цепочки – input, output и forward – можно сбросить с помощью одной команды, приведенной ниже:ipchains -F Определение политики по умолчанию
После удаления правил фильтрации автоматически устанавливается политика фильтрации сетевых пакетов по умолчанию, согласно которой разрешается прохождение всех сетевых пакетов. Таким образом, до тех пор, пока вы не внесете изменения в политику фильтрации сетевых пакетов, фильтрация сетевых пакетов производиться не будет.
Для обеспечения безопасности вашей операционной системы политика по умолчанию должна быть выбрана так, чтобы входящие сетевые пакеты удалялись без передачи сообщений на хосты, посылающие сетевые пакеты. Исходящим сетевым пакетам должно быть отказано в прохождении, а компьютеры, с которых эти сетевые пакеты были отправлены, должны получать ICMP-сообщения об ошибке. Обратившись к компьютеру вашей сети, программа, выполняющаяся на одном из компьютеров, размещенных в Интернете, не получит никакой информации о том, существует ли сервер, указанный в запросе. Такая же программа на локальном компьютере сразу получит сообщение о том, что операция, которую она собиралась выполнить, недопустима.
В следующих трех строках мы задаем, что для входящей цепочки сетевые пакеты будут уничтожаться, для исходящей цепочки и цепочки маршрутизации сетевые пакеты будут отклоняться, а компьютеры, посылающие сетевые пакеты, получат уведомление об ошибке.ipchains -Р input DENY
ipchains -Р output REJECT
ipchains -P forward REJECTПосле ввода в действие вышеприведенных правил весь сетевой трафик оказывается блокированным, в том числе и весь трафик, проходящий через интерфейс обратной петли. Разрешение прохождения пакетов через интерфейс обратной петли
Поскольку в предыдущем разделе мы заблокировали весь сетевой трафик, автоматически возникнут проблемы с рядом программ, исполняемых на вашем компьютере, поскольку многие из них для нормального функционирования используют интерфейс обратной петли. Поэтому мы должны обеспечить прохождение всего сетевого трафика через интерфейс обратной петли. Так как этот интерфейс недоступен из-за пределов системы, подобные установки не могут повлечь за собой нежелательных последствий.
Правила, разрешающие прохождение сетевых пакетов без ограничений, очень просты. В данном случае надо нейтрализовать влияние политики по умолчанию на интерфейс обратной петли. Для этого введем следующие правила:ipchains -A input -i $LOOPBACK_INTERFACE -j ACCEPT ipchains -A output -i $LOOPBACK_INTERFACE -j ACCEPT
Таким простым способом прохождение трафика через интерфейс обратной петли будет восстановлено. Запрет прохождения пакетов с фальсифицированными адресами Как уже упоминалось ранее, фальсификация адресов – один из признаков сетевых атак, поэтому следует бороться с сетевыми пакетами, имеющими сфальсифицированный адрес. Первое и очевидное правило – запретить прием сетевых пакетов, якобы отправленных с внешнего интерфейса вашего узла: