Сценарии загрузки политики безопасности включают команды загрузки модулей, требуемых для работы и набора цепочек правил для таблиц iptables. Каждая строка правил iptables имеет вид
iptables [-t <таблица>] -<команда> [<цепочка>] [<номер правила>] [<спецификация правила] -j операция [опции операции]
Для правил конкретного типа синтаксис может несколько отличаться от показанного выше и будет более подробно рассмотрен при описании каждой проверки, поддерживаемой программой iptables.
Опции команд iptables
Выбор таблицы (-t)
По умолчанию все команды iptables выполняются применительно к таблице filter. Для выбора другой таблицы1 служит команда
iptables -t <имя таблицы>
или
iptables --table <имя таблицы>
Если при компиляции ядра была выбрана опция автоматической загрузки модулей и требуемый модуль еще не загружен, будет предпринята попытка загрузить модуль. Для загрузки модулей вручную служит опция –modprobe или команда Linux modprobe <имя модуля>.
Выбор операции для правила (-j)
Большинство цепочек iptables заканчиваются указанием операции, которая должна быть применена по отношению к пакету, при выполнении условий, заданных спецификацией правила. Для указания операции служит опция -j. Обычно эта опция используется последней в строке задания правила и имеет формат
-j <имя операции>
или
-jump <имя операции>
Параметр <имя операции> может быть именем одной из встроенных операций iptables или пользовательской цепочки.
Объем выводимой информации (-v)
Опция -v (или --verbose) позволяет вывести с помощью команды -L дополнительную информацию, включающую опции правила, маски TOS, имена интерфейсов и значения счетчиков пакетов и байтов. По умолчанию значения счетчиков выводятся с округлением и суффиксами K (1 000), M (1 000 000) и G (1 000 000 000). Используя описанную ниже опцию -x, можно задать вывод полных (точных) значений счетчиков.
При использовании опции -v в командах добавления, вставки, замены и удаления правил в цепочках обеспечивается вывод детальной информации о соответствующих правилах.
Формат адресов при выводе (-n)
Опция -n (или –numeric) позволяет выбрать для вывода информации представление хостов с помощью адресов IP взамен используемых по умолчанию доменных имен. Использование этой опции значительно ускоряет вывод информации, поскольку не требуется делать многочисленных запросов DNS для преобразования IP-адресов в имена хостов.
Эта опция используется совместно с командой -L.
Формат представления значений счетчиков (-x)
Эта опция служит для управления форматом вывода значений счетчиков пакетов и байтов. По умолчанию значения счетчиков выводятся с округлением и суффиксами K (1 000), M (1 000 000) или G (1 000 000). Опция -x (--exact) позволяет выводить точные значения счетчиков без использования префиксов и округления.
Эта опция используется совместно с командой -L и опцией -v.
Инициализация счетчиков (-c)
Опция -c (--set-counters) позволяет задать стартовые значения для счетчиков пакетов и байтов при добавлении, вставке или замене правил в цепочках iptables. Опция может использоваться в формате
-c <значение счетчика пакетов> <значение счетчика байтов>
или
--set-counters <значение счетчика пакетов> <значение счетчика байтов>
Нумерация строк
Опция –line-numbers позволяет при выводе списков правил (команда -L) показывать в каждой строке номер правила в цепочке. Информация о номере правила может быть полезна при работе с командами добавления, вставки, замены и удаления правил в цепочках iptables.
Загрузка модулей
При использовании правил, компоненты (действия, соответствия и т. п.) опция
--modprobe=command
служит для загрузки модуля, указанного значением параметра command. Вы можете также загрузить модули заранее с помощью команды Linux
modprobe <имя модуля>
Команды iptables
Программа iptables поддерживает множество команд и опций, позволяющих задать точную спецификацию правил фильтрации, преобразования адресов и изменения пакетов. Отметим, что все команды по умолчанию связаны с правилами таблицы filter и для применения команд к цепочкам других таблиц следует использовать опцию 2
-t <имя таблицы>
или
--table <имя таблицы>
Команды управления цепочками и таблицами в целом
Команды управления цепочками и таблицами в целом используют форма
iptables [-t имя таблицы] команда <имя цепочки>
Если в команде отсутствует имя таблицы, эта команда выполняется применительно к таблице filter.
Создание цепочки
Команда
iptables -N <имя цепочки>
или
iptables --new-chain <имя цепочки>
позволяет создать пользовательскую цепочку с указанным именем.
Удаление цепочки
Для удаления существующей пользовательской цепочки служит команда
iptables -X <имя цепочки>
или
iptables --delete-chain <имя цепочки>
Удаляемая цепочка не должна содержать правил3 и не должна использоваться в качестве операции (target) ни в одной из оставшихся цепочек. Если в команде не указано имя удаляемой цепочки, будет предпринята попытка удалить все пользовательские цепочки. При попытке удаления встроенной цепочки выдается сообщение об ошибке:
iptables: Can't delete built-in chain
Переименование цепочки
Для изменения имени пользовательской цепочки служит команда
iptables -E <старое имя цепочки> <новое имя цепочки>
или
iptables --rename-chain <старое имя цепочки> <новое имя цепочки>
Эта команда не оказывает реального влияния на работу цепочек и служит лишь для “косметических” целей.
Сброс цепочки
Для удаления из цепочки всех правил (сброса) можно использовать команду
iptables -F <имя цепочки>
или
iptables --flush <имя цепочки>
Если в команде не указано имя цепочки, будет предпринята попытка удаления всех правил из каждой цепочки.
Просмотр списка правил в цепочках
Команда
iptables -L <имя цепочки>
или
iptables --list <имя цепочки>
служит для просмотра всех правил в указанной цепочке. На рисунке показан пример вывода для встроенных и пользовательских цепочек.
Рисунок 5.1 Просмотр списка правил в цепочках
В первой строке вывода указывается имя цепочки и принятая для нее политика (встроенные цепочки) или количество правил, использующих данную цепочку в качестве действия (target). Нулевое значение счетчика использования цепочки говорит о возможности ее удаления.
Если команда не содержит имени цепочки, выводится список правил во всех цепочках (даже пустых).
Команда -L поддерживает три опции:
-n – при выводе списка правил используются IP-адреса вместо имен хостов;
-v – вывод дополнительной информации, включающей значения счетчиков пакетов и байтов, параметры TOS, имена интерфейсов;
-x – задает формат вывода значений счетчиков при использовании опции -v.
Сброс счетчиков
Для сброса счетчиков может использоваться команда
iptables -Z <имя цепочки>
или
iptables --zero <имя цепочки>
Эта команда может быть весьма полезна для установки нулевых значений счетчиков после просмотра их значений с помощью команды -L
iptables -L -Z FORWARD
Можно выполнить эту операцию с помощью 2 раздельных команд -L и -Z, но следует помнить, что за время последовательного выполнения команд значения счетчиков могут измениться.
Установка политики для цепочек
Команда
iptables -P <имя цепочки> <название политики>
или
iptables --policy <имя цепочки> <название политики>
позволяет выбрать для таблицы принятую по умолчанию политику для любой из встроенных цепочек INPUT, FORWARD и OUTPUT. В качестве политики могут использоваться стандартные операции iptables. Заданная политикой цепочки операция выполняется по отношению к пакетам, прошедшим через все правила данной цепочки4. Политика цепочки определяет судьбу пакета, не соответствующего ни одному из правил данной цепочки.
Политика не задается для пользовательских цепочек, поскольку после завершения проверки соответствия пакета всем заданным цепочкой правилам происходит возврат в точку вызова данной пользовательской цепочки. В качестве политики недопустимо использовать встроенные цепочки iptables.
Пример выбора для цепочки INPUT политики отбрасывания пакетов показан ниже
iptables -P INPUT DROP
Команды управления отдельными правилами в цепочках
Описанные ниже команды служат для создания правил фильтрации, преобразования адресов или изменения пакетов, а также для замены и удаления существующих в цепочке правил. Команды этой группы имеют вид
iptables [-t имя таблицы] -[AIRD] <имя цепочки> <спецификация соответствия> <операция>
Параметр <операция> определяет действие, выполняемое по отношению к пакету при его соответствии заданным правилом условиям. В качестве операции могут использоваться стандартные операции iptables – target или пользовательские цепочки..
Каждое правило указывает имя таблицы (по умолчанию правила включаются в таблицу filter), команду (что делать с данным правилом), условия соответствия (что проверять для пакета) и операцию, выполняемую по отношению к пакету при его соответствии заданным условиям.
Добавление правила в цепочку
Для добавления правила в конец цепочки служит команда
iptables -A <имя цепочки> <спецификация соответствия> <операция>
или
iptables --append <имя цепочки> <спецификация соответствия> <операция>
При необходимости вставленное в цепочку правило можно заменить другим или удалить. Описание спецификаций соответствия приводится в отдельной статье.
Вставка правила в указанную позицию
Если вам нужно поместить новое правило в определенную строку цепочки, можно воспользоваться командой
iptables -I <имя цепочки> <номер правила> <спецификация соответствия> <операция>
или
iptables --insert <имя цепочки> <номер правила> <спецификация соответствия> <операция>
Нумерация правил в цепочке начинается с 1. Посмотреть нумерацию имеющихся в таблице правил можно определить с помощью команды типа
iptables -L INPUT –line-numbers
После вставки правила в цепочку номера строк для последующих правил автоматически увеличиваются на 1 – об этом следует помнить при выполнении других операций. Команда -I достаточно редко используется в сценариях загрузки правил, но может быть полезна для вставки в цепочку временных правил.
При необходимости вставленное в цепочку правило можно заменить другим или удалить. Описание спецификаций соответствия приводится в отдельной статье.
Замена правила в указанной позиции
Команда
iptables -R <имя цепочки> <номер правила> <спецификация соответствия> <операция>
или
iptables --replace <имя цепочки> <номер правила> <спецификация соответствия> <операция>
позволяет заменить правило в строке <номер правила> на новое, спецификация которого задается данной командой. Номер правила можно определить с помощью команды типа
iptables -L INPUT –line-numbers
Команда -R предназначена в основном для экспериментов с цепочками iptables – обычно не возникает необходимости использовать ее в рабочих цепочках5.
Удаление правила
Для удаления правила из цепочки служит команда -D (--delete). Команда может использоваться в двух вариантах – для удаления правила в заданной строке или для удаления правила, полностью совпадающего с указанной спецификацией.
Удаление по номеру
Для удаления правила в указанной номером строке цепочки служит команда
iptables -D <имя цепочки> <номер правила>
или
iptables --delete <имя цепочки> <номер правила>
Номер правила можно определить с помощью команды типа
iptables -L INPUT –line-numbers
При удалении правил из таблицы не забывайте об автоматическом уменьшении на 1 номеров строк для всех последующих правил данной цепочки.
Удаление по спецификации
Для удаления правила из цепочки можно воспользоваться командой, содержащей полную спецификацию удаляемого правила
iptables -D <имя цепочки> <спецификация соответствия> <операция>
или
iptables --delete <имя цепочки> <спецификация соответствия> <операция>
При использовании данного варианта команды заданная в строке спецификация должна в точности соответствовать имеющемуся в цепочке правилу, которое вы хотите удалить.
Примечание:
|