Формирование политики по умолчанию
Первым шагом, предпринимаемым при настройке брандмауэра, является формирование политики по умолчанию . Политика по умолчанию — это выражение, определяющее, что должен делать брандмауэр, если пакет не удовлетворяет ни одному из правил. Для создания политики по умолчанию используется опция -Pутилиты iptables.
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
В данном примере задается политика по умолчанию для трех стандартных цепочек, содержащихся в таблице filter. В качестве политики по умолчанию может быть указано любое из описанных ранее действий ( ACCEPT, DROP, QUEUE, RETURNи т.д.). Наиболее часто используются действия ACCEPT, DROPи REJECT. ACCEPTуказывает Linux на то, что все пакеты должны передаваться, a DROPзаставляет систему игнорировать все пакеты. REJECT, подобно DROP, также указывает на то, что пакеты должны отвергаться, но при этом Linux оповещает источник о том, что пакет не принят (подобное сообщение источник получает и в том случае, если в системе нет ни одного сервера, ожидающего обращения через порт, указанный в заголовке пакета). Если брандмауэр должен обеспечивать высокую степень защиты, в качестве политики по умолчанию указывается DROPили REJECT, однако при этом все пакеты, передача которых не разрешена явным образом, будут отвергнуты. Если задана политика по умолчанию ACCEPT, то необходимо явно запретить все типы пакетов, которые не должны быть пропущены через брандмауэр. Составление правил, блокирующих все недопустимые типы пакетов, часто представляет собой достаточно сложную задачу, причем всегда остается опасность, что какое-либо условие останется не учтенным. С другой стороны, задавая политику по умолчанию DROPили REJECT, надо лишь разрешить прохождение некоторых типов пакетов через брандмауэр. Обычно при работе системы число типов пакетов ограничено, поэтому данному подходу следуют большинство системных администраторов.
Для создания правил используется опция --append(или -А) программы iptables. После этой опции задается один или несколько критериев, затем указывается опция --jump(или -j), за которой следует действие ACCEPT, DROPили REJECT. Вызов iptables, предназначенный для создания действия, выглядит следующим образом:
# iptables --append CHAIN критерий_выбора --jump действие
Сокращенно та же команда может быть записана так:
# iptables -A CHAIN критерий_выбора -j действие
Вместо --appendпри вызове iptablesмогут быть указаны следующие опции.
• --delete, или -D. Эта опция удаляет правило из существующей цепочки.
• --insert, или -I. С помощью данной опции вы можете включить правило в середину цепочки. При этом необходимо задать номер правила. Если номер не указан, iptablesвключит правило в начало цепочки (при использовании опции --appendправило помещается в конец цепочки).
• --replace, или -R. Эта опция дает возможность заменить правило. Задавая данную опцию, следует указать номер заменяемого правила.
• --list, или -L. Данная опция отображает все правила в цепочке.
Для утилиты iptablesпредусмотрены также другие опции. Информацию о них вы можете получить на страницах справочной системы, посвященных iptables. В следующем разделе рассматривается формирование критериев выбора, передаваемых iptables. В одной команде можно задать несколько критериев, например, вы можете ограничить доступ по номеру порта и по IP-адресу.
На заметку
Ядро системы читает правила в цепочке по порядку и применяет первое из них, которому соответствует пакет. Если вы хотите задать исключение из какого-либо правила (например, запретить доступ к порту Telnet для всех узлов, кроме машин, принадлежащих локальной сети), вы должны поместить исключение перед основным правилом. Политика по умолчанию по сути представляет собой правило, находящееся в самом конце цепочки. Ему удовлетворяют все пакеты, которые не соответствуют ни одному другому правилу в цепочке.
Использование номеров портов при выполнении фильтрации
При выполнении фильтрации пакетов могут анализироваться порты источника и назначения. Например, брандмауэр, находящийся на компьютере, на котором выполняется почтовый сервер, можно настроить для передачи пакетов, в которых указан порт назначения 25. Для этого используется опция --destination-port( --dport). Аналогичных результатов можно добиться, используя опцию --protocol( -p), в качестве значения которой указывается тип протокола ( tcp, udp, icmpили all). Опция --source-port( --sport) выполняет подобные действия, но задает порт источника. Команды, определяющие правила фильтрации на основе номеров портов, выглядят следующим образом:
Читать дальше