Iptables Tutorial 1.1.19
Шрифт:
6.2. Таблицы
Опция – t указывает на используемую таблицу. По умолчанию используется таблица filter. С ключом – t применяются следующие опции.
Таблица 6-1. Таблицы
(Таблица – Описание)
Таблица: nat
Описание: Таблица nat используется главным образом для преобразования сетевых адресов (Network Address Translation). Через эту таблицу проходит только первый пакет из потока. Преобразования адресов автоматически применяется ко всем последующим пакетам. Это один из факторов, исходя из которых мы не должны осуществлять какую-либо фильтрацию
Таблица: mangle
Описание: Эта таблица используется для внесения изменений в заголовки пакетов. Примером может служить изменение поля TTL, TOS или MARK. Важно: в действительности поле MARK не изменяется, но в памяти ядра заводится структура, которая сопровождает данный пакет все время его прохождения через брандмауэр, так что другие правила и приложения на данном брандмауэре (и только на данной брандмауэре) могут использовать это поле в своих целях. Таблица имеет пять цепочек PREROUTING, POSTROUTING, INPUT, OUTPUT и FORWARD. PREROUTING используется для внесения изменений на входе в брандмауэр, перед принятием решения о маршрутизации. POSTROUTING используется для внесения изменений на выходе из брандмауэра, после принятия решения о маршрутизации. INPUT – для внесения изменений в пакеты перед тем как они будут переданы локальному приложению внутри брандмауэра. OUTPUT – для внесения изменений в пакеты, поступающие от приложений внутри брандмауэра. FORWARD – для внесения изменений в транзитные пакеты после первого принятия решения о ипршрутизации, но перед последним принятием решения о ипршрутизации. Замечу, что таблица mangle ни в коем случае не должна использоваться для преобразования сетевых адресов или маскарадинга (Network Address Translation, Masquerading), поскольку для этих целей имеется таблица nat.
Таблица: filter
Описание: Таблица filter используется главным образом для фильтрации пакетов. Для примера, здесь мы можем выполнить DROP, LOG, ACCEPT или REJECT без каких либо ограничений, которые имеются в других таблицах. Имеется три встроенных цепочки. Первая – FORWARD, используемая для фильтрации пакетов, идущих транзитом через брандмауэр. Цепочку INPUT проходят пакеты, которые предназначены локальным приложениям (брандмауэру). И цепочка OUTPUT – используется для фильтрации исходящих пакетов, сгенерированных приложениями на самом брандмауэре.
Выше мы рассмотрели основные отличия трех имеющихся таблиц. Каждая из них должна использоваться только в своих целях, и вы должны это понимать. Нецелевое использование таблиц может привести к ослаблению защиты брандмауэра и сети, находящейся за ним. Позднее, в главе Порядок прохождения таблиц и цепочек, мы подробнее остановимся на этом.
6.3. Команды
Ниже приводится список команд и правила их использования. Посредством команд мы сообщаем iptables что мы предполагаем сделать. Обычно предполагается одно из двух действий – добавление
нового правила в цепочку или удаление существующего правила из той или иной таблицы. Далее приведены команды, которые используются в iptables.Таблица 6-2. Команды
(Команда – Пример – Описание)
Команда: – A, –append
Пример: iptables -A INPUT ...
Описание: Добавляет новое правило в конец заданной цепочки.
Команда: – D, –delete
Пример: iptables -D INPUT –dport 80 -j DROP, iptables -D INPUT 1
Описание: Удаление правила из цепочки. Команда имеет два формата записи, первый – когда задается критерий сравнения с опцией -D (см. первый пример), второй – порядковый номер правила. Если задается критерий сравнения, то удаляется правило, которое имеет в себе этот критерий, если задается номер правила, то будет удалено правило с заданным номером. Счет правил в цепочках начинается с 1.
Команда: – R, –replace
Пример: iptables -R INPUT 1 -s 192.168.0.1 -j DROP
Описание: Эта команда заменяет одно правило другим. В основном она используется во время отладки новых правил.
Команда: -I, –insert
Пример: iptables -I INPUT 1 –dport 80 -j ACCEPT
Описание: Вставляет новое правило в цепочку. Число, следующее за именем цепочки указывает номер правила, перед которым нужно вставить новое правило, другими словами число задает номер для вставляемого правила. В примере выше, указывается, что данное правило должно быть 1-м в цепочке INPUT.
Команда: -L, –list
Пример: iptables -L INPUT
Описание: Вывод списка правил в заданной цепочке, в данном примере предполагается вывод правил из цепочки INPUT. Если имя цепочки не указывается, то выводится список правил для всех цепочек. Формат вывода зависит от наличия дополнительных ключей в команде, например – n, – v, и пр.
Команда: -F, –flush
Пример: iptables -F INPUT
Описание: Сброс (удаление) всех правил из заданной цепочки (таблицы). Если имя цепочки и таблицы не указывается, то удаляются все правила, во всех цепочках. (Хочется от себя добавить, что если не указана таблица ключом – t (–table), то очистка цепочек производится только в таблице filter, прим. перев. )
Команда:– Z, –zero
Пример: iptables -Z INPUT
Описание: Обнуление всех счетчиков в заданной цепочке. Если имя цепочки не указывается, то подразумеваются все цепочки. При использовании ключа – v совместно с командой – L, на вывод будут поданы и состояния счетчиков пакетов, попавших под действие каждого правила. Допускается совместное использование команд – L и – Z. В этом случае будет выдан сначала список правил со счетчиками, а затем произойдет обнуление счетчиков.
Команда: – N, –new-chain
Пример: iptables -N allowed
Описание: Создается новая цепочка с заданным именем в заданной таблице В выше приведенном примере создается новая цепочка с именем allowed. Имя цепочки должно быть уникальным и не должно совпадать с зарезервированными именами цепочек и действий (такими как DROP, REJECT и т.п.)