Spec-Zone.ru › Ansible 2.6

iptables - Модификация таблиц iptables системы

Новая версия с 2.0.

  • Краткое описание
  • Параметры
  • Примечания
  • Примеры
  • Статус
  • Техническое обслуживание
    • Поддержка
    • Автор

Краткое описание

  • Iptables используется для настройки, поддержки и проверки таблиц правил фильтрации IP-пакетов в ядре Linux.
  • Этот модуль не обрабатывает сохранение и/или загрузку правил, а лишь манипулирует текущими правилами, присутствующими в памяти. Это аналогично поведению команд iptables и ip6tables, которые этот модуль использует внутри.

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
action
(добавлено в 2.2)
    Варианты:
  • append ←
  • insert
Указывает, нужно ли добавить правило в конец или вставить в начало.
Если правило уже существует, цепочка не будет изменена.
chain
Цепочка, на которой нужно выполнить действие.
Этот параметр может быть именем пользовательской цепочки или любой из встроенных цепочек: 'INPUT', 'FORWARD', 'OUTPUT', 'PREROUTING', 'POSTROUTING', 'SECMARK', 'CONNSECMARK'.
comment
Указывает комментарий, который будет добавлен к правилу.
ctstate
    Варианты:
  • DNAT
  • ESTABLISHED
  • INVALID
  • NEW
  • RELATED
  • SNAT
  • UNTRACKED
Значение по умолчанию:
[]
ctstate — список состояний соединений для сопоставления в модуле conntrack. Возможные состояния: 'INVALID', 'NEW', 'ESTABLISHED', 'RELATED', 'UNTRACKED', 'SNAT', 'DNAT'
destination
Указание назначения.
Адрес может быть именем сети, хоста, IP-адресом сети (с маской) или простым IP-адресом.
Имена хостов будут разрешены только один раз, прежде чем правило будет передано ядру. Обратите внимание, что указание любого имени для разрешения с помощью удалённого запроса, такого как DNS, — очень плохая идея.
Маска может быть маской сети или простым числом, определяющим количество единиц слева в маске сети. Таким образом, маска 24 эквивалентна 255.255.255.0. Аргумент "!" перед указанием адреса инвертирует смысл адреса.
destination_port
Указание порта назначения или диапазона портов. Это может быть имя службы или номер порта. Диапазон также может быть задан в формате first:last. Если первый порт опущен, предполагается '0'; если последний — '65535'. Если первый порт больше второго, они поменяются местами.
flush
(добавлено в 2.2)
Очищает указанную таблицу и цепочку от всех правил.
Если цепочка не указана, очищается вся таблица.
Игнорирует все остальные параметры.
fragment
Это означает, что правило относится только ко второму и последующим фрагментам фрагментированных пакетов. Поскольку нет возможности определить исходные или целевые порты такого пакета (или тип ICMP), такой пакет не будет соответствовать никаким правилам, которые их указывают. Когда перед параметром fragment стоит аргумент "!", правило будет соответствовать только головным фрагментам или нефрагментированным пакетам.
goto
Указывает, что обработка должна продолжаться в указанной пользователем цепочке. В отличие от аргумента jump, return не будет продолжать обработку в этой цепочке, а вместо этого продолжит в цепочке, которая вызвала нас с помощью jump.
icmp_type
(добавлено в 2.2)
Позволяет указать тип ICMP, который может быть числовым типом ICMP, парой тип/код или одним из имён типов ICMP, показанных командой 'iptables -p icmp -h'.
in_interface
Имя интерфейса, через который пакет был получен (только для пакетов, входящих в цепочки INPUT, FORWARD и PREROUTING). При использовании аргумента "!" перед именем интерфейса смысл инвертируется. Если имя интерфейса заканчивается на "+", то будет соответствовать любой интерфейс, начинающийся с этого имени. Если этот параметр опущен, будет соответствовать любое имя интерфейса.
ip_version
    Варианты:
  • ipv4 ←
  • ipv6
Какую версию протокола IP должно применять это правило.
jump
Указывает цель правила; то есть, что делать, если пакет ему соответствует. Целью может быть пользовательская цепочка (кроме той, в которой находится это правило), одна из специальных встроенных целей, которые немедленно определяют судьбу пакета, или расширение (см. РАСШИРЕНИЯ ниже). Если этот параметр опущен в правиле (и параметр goto не используется), то соответствие правилу не повлияет на судьбу пакета, но счётчики по правилу будут увеличены.
limit
Указывает максимальное среднее число совпадений, разрешённых в секунду.
Число может указывать единицы явно, используя `/second', `/minute', `/hour' или `/day', или части от них (например, `5/second' — то же самое, что `5/s').
limit_burst
(добавлено в 2.1)
Указывает максимальную вспышку перед тем, как вступит в силу вышеупомянутый лимит.
log_prefix
(добавлено в 2.5)
Указывает текст для лога для правила. Имеет смысл только с командой LOG.
match Значение по умолчанию:
[]
Указывает используемое сопоставление, то есть модуль расширения, который проверяет на наличие определённого свойства. Набор сопоставлений составляет условие, при котором вызывается цель. Сопоставления вычисляются по порядку, если заданы как массив, и работают в режиме короткого замыкания, т.е. если один модуль возвращает false, вычисления прекращаются.
out_interface
Имя интерфейса, через который пакет будет отправлен (для пакетов, входящих в цепочки FORWARD, OUTPUT и POSTROUTING). При использовании аргумента "!" перед именем интерфейса смысл инвертируется. Если имя интерфейса заканчивается на "+", то будет соответствовать любой интерфейс, начинающийся с этого имени. Если этот параметр опущен, будет соответствовать любое имя интерфейса.
policy
(добавлено в 2.2)
    Варианты:
  • ACCEPT
  • DROP
  • QUEUE
  • RETURN
Устанавливает политику для цепочки на заданную цель.
Только встроенные цепочки могут иметь политики.
Этот параметр требует параметр chain.
Игнорирует все остальные параметры.
protocol
Протокол правила или пакета для проверки.
Указанный протокол может быть tcp, udp, udplite, icmp, esp, ah, sctp или специальным ключевым словом "all", или он может быть числовым значением, представляющим один из этих протоколов или другой. Также разрешено имя протокола из /etc/protocols. Аргумент "!" перед протоколом инвертирует проверку. Ноль эквивалентен "all". "all" будет соответствовать всем протоколам и принимается по умолчанию, если этот параметр опущен.
reject_with
(добавлено в 2.1)
Указывает тип пакета ошибки для возврата при отклонении. Подразумевает "jump: REJECT".
rule_num
(добавлено в 2.5)
Вставляет правило как указанное число правила. Это работает только с action = 'insert'.
set_counters
Это позволяет администратору инициализировать счётчики пакетов и байтов правила (во время операций INSERT, APPEND, REPLACE).
set_dscp_mark
(добавлено в 2.1)
Позволяет указать метку DSCP для добавления в пакеты. Принимает целое число или шестнадцатеричное значение.
Взаимоисключающее с set_dscp_mark_class.
set_dscp_mark_class
(добавлено в 2.1)
Позволяет указать предопределённый класс DiffServ, который будет преобразован в соответствующую метку DSCP.
Взаимоисключающее с set_dscp_mark.
source
Указание источника.
Адрес может быть именем сети, хоста, IP-адресом сети (с маской) или простым IP-адресом.
Имена хостов будут разрешены только один раз, прежде чем правило будет передано ядру. Обратите внимание, что указание любого имени для разрешения с помощью удалённого запроса, такого как DNS, — очень плохая идея.
Маска может быть маской сети или простым числом, определяющим количество единиц слева в маске сети. Таким образом, маска 24 эквивалентна 255.255.255.0. Аргумент "!" перед указанием адреса инвертирует смысл адреса.
source_port
Указание порта источника или диапазона портов. Это может быть имя службы или номер порта. Диапазон также может быть задан в формате first:last. Если первый порт опущен, предполагается '0'; если последний — '65535'. Если первый порт больше второго, они поменяются местами.
state
    Варианты:
  • absent
  • present ←
Указывает, должно ли правило отсутствовать или присутствовать.
syn
(добавлено в 2.5)
    Варианты:
  • ignore ←
  • match
  • negate
Позволяет сопоставлять пакеты, у которых установлен бит SYN, а биты ACK и RST сброшены.
При отрицании это соответствует всем пакетам с установленным битом RST или ACK.
table
    Варианты:
  • filter ←
  • nat
  • mangle
  • raw
  • security
Этот параметр указывает таблицу сопоставления пакетов, на которой должна выполняться команда. Если в ядре настроено автоматическое загрузка модулей, будет предпринята попытка загрузить соответствующий модуль для этой таблицы, если он ещё не загружен.
tcp_flags
(добавлено в 2.4)
Значение по умолчанию:
{}
Указание флагов TCP.
tcp_flags ожидает словарь с двумя ключами flags и flags_set.
flags
Список флагов, которые нужно проверить.
flags_set
Флаги, которые нужно установить.
to_destination
(добавлен в 2.1)
Указывает адрес назначения для использования с DNAT.
Без этого адрес назначения никогда не изменяется.
to_ports
Указывает порт назначения или диапазон портов для использования: без этого порт назначения никогда не изменяется. Это справедливо только в том случае, если в правиле также указан один из следующих протоколов: tcp, udp, dccp или sctp.
to_source
(добавлен в 2.2)
Указывает исходный адрес для использования с SNAT.
Без этого исходный адрес никогда не изменяется.
uid_owner
(добавлен в 2.1)
Указывает UID или имя пользователя для использования в правиле сопоставления по владельцу. Начиная с Ansible 2.6, при добавлении префикса !, правило меняет своё действие на применение к всем пользователям, кроме указанного.

Примечания

Примечание

  • Этот модуль работает только с отдельными правилами. Если вам нужны сложные цепочки правил, рекомендуется использовать шаблон файла восстановления iptables.

Примеры

# Block specific IP
- iptables:
    chain: INPUT
    source: 8.8.8.8
    jump: DROP
  become: yes

# Forward port 80 to 8600
- iptables:
    table: nat
    chain: PREROUTING
    in_interface: eth0
    protocol: tcp
    match: tcp
    destination_port: 80
    jump: REDIRECT
    to_ports: 8600
    comment: Redirect web traffic to port 8600
  become: yes

# Allow related and established connections
- iptables:
    chain: INPUT
    ctstate: ESTABLISHED,RELATED
    jump: ACCEPT
  become: yes

# Allow new incoming SYN packets on TCP port 22 (SSH).
- iptables:
    chain: INPUT
    protocol: tcp
    destination_port: 22
    ctstate: NEW
    syn: match
    jump: ACCEPT
    comment: Accept new SSH connections.

# Tag all outbound tcp packets with DSCP mark 8
- iptables:
    chain: OUTPUT
    jump: DSCP
    table: mangle
    set_dscp_mark: 8
    protocol: tcp

# Tag all outbound tcp packets with DSCP DiffServ class CS1
- iptables:
    chain: OUTPUT
    jump: DSCP
    table: mangle
    set_dscp_mark_class: CS1
    protocol: tcp

# Insert a rule on line 5
- iptables:
    chain: INPUT
    protocol: tcp
    destination_port: 8080
    jump: ACCEPT
    rule_num: 5

# Set the policy for the INPUT chain to DROP
- iptables:
    chain: INPUT
    policy: DROP

# Reject tcp with tcp-reset
- iptables:
    chain: INPUT
    protocol: tcp
    reject_with: tcp-reset
    ip_version: ipv4

# Set tcp flags
- iptables:
    chain: OUTPUT
    jump: DROP
    protocol: tcp
    tcp_flags:
      flags: ALL
      flags_set:
        - ACK
        - RST
        - SYN
        - FIN

Статус

Этот модуль помечен как превью, что означает, что его интерфейс не гарантирует обратной совместимости.

Техническое обслуживание

Этот модуль помечен как ядерный, что означает, что он поддерживается командой Ansible Core. Подробнее см. Техническое обслуживание и поддержка модулей.

Список других модулей, поддерживаемых командой Ansible Core, см. в этом месте.

Поддержка

Дополнительную информацию о поддержке этого модуля Red Hat, пожалуйста, найдите в этой статье базы знаний

Автор

  • Linus Unnebäck (@LinusU) <linus@folkdatorn.se>
  • Sébastien DA ROCHA (@sebastiendarocha)

Подсказка

Если вы обнаружите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/modules/iptables_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API