Spec-Zone.ru › Ansible 2.10

ansible.builtin.iptables – Изменение правил iptables

Примечание

Этот модуль входит в состав ansible-base и включён во все установки Ansible. В большинстве случаев, вы можете использовать короткое имя модуля iptables, даже не указывая ключевое слово collections:. Несмотря на это, рекомендуется использовать полное имя модуля (FQCN) для лёгкой ссылки на документацию модуля и для предотвращения конфликтов с другими коллекциями, которые могут иметь то же самое имя модуля.

Добавлен в версии 2.0: of ansible.builtin

  • Описание
  • Параметры
  • Примечания
  • Примеры

Описание

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

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
action
строка
добавлен в версии 2.2 ansible.builtin
    Варианты:
  • append ←
  • insert
Определяет, следует ли добавить правило в конец или вставить в начало.
Если правило уже существует, цепочка не будет изменена.
chain
строка
Указывает цепочку iptables для изменения.
Это может быть пользовательская цепочка или одна из стандартных цепочек iptables, таких как INPUT, FORWARD, OUTPUT, PREROUTING, POSTROUTING, SECMARK или CONNSECMARK.
comment
строка
Указывает комментарий, который будет добавлен к правилу.
ctstate
список / элементы=строка
По умолчанию:
[]
Список состояний соединения для сопоставления в модуле conntrack.
Возможные значения: INVALID, NEW, ESTABLISHED, RELATED, UNTRACKED, SNAT, DNAT.
destination
строка
Указание назначения.
Адрес может быть именем сети, именем хоста, IP-адресом сети (с /маской) или обычным IP-адресом.
Имена хостов будут разрешены один раз перед отправкой правила ядру. Обратите внимание, что указание любого имени для разрешения с удалённым запросом, таким как DNS, — очень плохая идея.
Маска может быть либо маской сети, либо обычным числом, определяющим количество единиц слева в маске сети. Таким образом, маска 24 эквивалентна 255.255.255.0. Аргумент ! перед указанием адреса инвертирует смысл адреса.
destination_port
строка
Указание номера или диапазона портов назначения. Это может быть имя службы или номер порта. Также можно указать диапазон, используя формат first:last. Если первый порт опущен, предполагается '0'; если последний — '65535'. Если первый порт больше второго, они будут поменяны местами. Это верно только если правило также указывает один из следующих протоколов: tcp, udp, dccp или sctp.
dst_range
строка
добавлен в версии 2.8 ansible.builtin
Указывает диапазон IP-адресов назначения для сопоставления в модуле iprange.
flush
булево
добавлен в версии 2.2 ansible.builtin
    Варианты:
  • нет ←
  • да
Очищает указанную таблицу и цепочку всех правил.
Если цепочка не указана, очищается вся таблица.
Игнорирует все остальные параметры.
fragment
строка
Это означает, что правило относится только ко второму и последующим фрагментам фрагментированных пакетов.
Поскольку нет способа узнать исходные или конечные порты такого пакета (или тип ICMP), такой пакет не будет соответствовать никаким правилам, которые их указывают.
Когда перед аргументом fragment стоит аргумент "!", правило будет соответствовать только заголовкам фрагментов или нефрагментированным пакетам.
gateway
строка
добавлен в версии 2.8 ansible.builtin
Указывает IP-адрес хоста для отправки клонированных пакетов.
Этот параметр допустим только когда jump установлен в TEE.
gid_owner
строка
добавлен в версии 2.9 ansible.builtin
Указывает GID или группу для использования в правиле сопоставления по владельцу.
goto
строка
Указывает, что обработка должна продолжаться в пользовательской цепочке.
В отличие от аргумента jump, return не продолжит обработку в этой цепочке, а перейдёт к цепочке, которая вызвала её с помощью jump.
icmp_type
строка
добавлен в версии 2.2 ansible.builtin
Позволяет указать тип 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 ansible.builtin
Указывает максимальный всплеск перед тем, как вступит в силу вышеуказанное ограничение.
log_level
строка
добавлен в версии 2.8 ansible.builtin
    Варианты:
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • emerg
  • alert
  • crit
  • error
  • warning
  • notice
  • info
  • debug
Уровень ведения журнала в соответствии с определёнными syslogd приоритетами.
Значение может быть строками или числами от 1 до 8.
Этот параметр применим только если jump установлен в LOG.
log_prefix
строка
добавлен в версии 2.5 ansible.builtin
Указывает текст для лога правила. Имеет смысл только с целевым jump: LOG.
match
список / элементы=строка
По умолчанию:
[]
Указывает используемое сопоставление, то есть модуль расширения, который проверяет определённое свойство.
Набор сопоставлений образует условие, при котором вызывается цель.
Сопоставления оцениваются последовательно, если указаны в массиве, и работают по принципу короткого замыкания, т.е., если одно расширение возвращает false, оценка прекращается.
out_interface
строка
Имя интерфейса, через который пакет будет отправлен (для пакетов, поступающих в цепочки FORWARD, OUTPUT и POSTROUTING).
Когда перед именем интерфейса используется аргумент !, смысл инвертируется.
Если имя интерфейса заканчивается на +, то соответствовать будут все интерфейсы, начинающиеся с этого имени.
Если этот параметр опущен, соответствовать будет любое имя интерфейса.
policy
строка
добавлен в версии 2.2 ansible.builtin
    Варианты:
  • ACCEPT
  • DROP
  • QUEUE
  • RETURN
Устанавливает политику для цепочки на заданную цель.
Только встроенные цепочки могут иметь политики.
Этот параметр требует параметра chain.
Игнорирует все остальные параметры.
protocol
строка
Протокол правила или пакета для проверки.
Указанный протокол может быть одним из tcp, udp, udplite, icmp, ipv6-icmp или icmpv6, esp, ah, sctp или специальным ключевым словом all, или это может быть числовое значение, представляющее один из этих протоколов или другой.
Также допускается имя протокола из /etc/protocols.
Аргумент ! перед протоколом инвертирует тест.
Число ноль эквивалентно всем.
all будет соответствовать всем протоколам и принимается по умолчанию, когда этот параметр опущен.
reject_with
строка
добавлен в версии 2.1 ansible.builtin
Указывает тип пакета ошибки для возврата при отклонении. Подразумевает "jump: REJECT".
rule_num
строка
добавлен в версии 2.5 ansible.builtin
Вставить правило как указанный номер правила.
Это работает только с action=insert.
set_counters
строка
Это позволяет администратору инициализировать счётчики пакетов и байтов правила (во время операций INSERT, APPEND, REPLACE).
set_dscp_mark
строка
добавлен в версии 2.1 ansible.builtin
Это позволяет указать метку DSCP, которая будет добавлена к пакетам. Она принимает целое или шестнадцатеричное значение.
Взаимоисключительно с set_dscp_mark_class.
set_dscp_mark_class
строка
добавлено в 2.1 ansible.builtin
Это позволяет указать предопределенный класс DiffServ, который будет преобразован в соответствующую метку DSCP.
Взаимоисключающее с set_dscp_mark.
source
строка
Спецификация источника.
Адрес может быть именем сети, именем хоста, сетевым IP-адресом (с маской) или простым IP-адресом.
Имена хостов будут разрешены только один раз, прежде чем правило будет передано ядру. Обратите внимание, что указание любого имени для разрешения с удалённым запросом, таким как DNS, является очень плохой идеей.
Маска может быть либо маской сети, либо простым числом, определяющим количество единиц слева в маске сети. Таким образом, маска 24 эквивалентна 255.255.255.0. Аргумент ! перед указанием адреса инвертирует смысл адреса.
source_port
строка
Указание исходного порта или диапазона портов.
Это может быть имя сервиса или номер порта.
Можно также указать включающий диапазон, используя формат first:last.
Если первый порт опущен, предполагается 0; если последний опущен, предполагается 65535.
Если первый порт больше второго, они будут поменяны местами.
src_range
строка
добавлено в 2.8 ansible.builtin
Указывает диапазон IP-адресов источника для сопоставления в модуле iprange.
state
строка
    Варианты:
  • absent
  • present ←
Указывает, должно ли правило быть отсутствующим или присутствующим.
syn
строка
добавлено в 2.5 ansible.builtin
    Варианты:
  • ignore ←
  • match
  • negate
Это позволяет сопоставлять пакеты, у которых установлен бит SYN, а биты ACK и RST сброшены.
При отрицании это соответствует всем пакетам с установленными битами RST или ACK.
table
строка
    Варианты:
  • filter ←
  • nat
  • mangle
  • raw
  • security
Этот параметр указывает таблицу соответствия пакетов, на которой должно выполняться действие.
Если ядро настроено на автоматическую загрузку модулей, будет предпринята попытка загрузить соответствующий модуль для этой таблицы, если он ещё не загружен.
tcp_flags
словарь
добавлено в 2.4 ansible.builtin
По умолчанию:
{}
Спецификация флагов TCP.
tcp_flags ожидает словарь с двумя ключами flags и flags_set.
flags
список / элементы=строка
Список флагов, которые вы хотите проверить.
flags_set
список / элементы=строка
Флаги, которые должны быть установлены.
to_destination
строка
добавлено в 2.1 ansible.builtin
Это указывает целевой адрес для использования с DNAT.
Без этого целевой адрес никогда не изменяется.
to_ports
строка
Это указывает целевой порт или диапазон портов для использования, без этого целевой порт никогда не изменяется.
Это применимо только в том случае, если правило также указывает один из протоколов tcp, udp, dccp или sctp.
to_source
строка
добавлено в 2.2 ansible.builtin
Это указывает адрес источника для использования с SNAT.
Без этого адрес источника никогда не изменяется.
uid_owner
строка
добавлено в 2.1 ansible.builtin
Указывает UID или имя пользователя для использования в правиле сопоставления по владельцу.
Начиная с Ansible 2.6, когда префикс ! используется, то правило инвертируется, чтобы применяться ко всем пользователям, кроме указанного.
wait
строка
добавлено в 2.10 ansible.builtin
Подождать N секунд блокировки xtables, чтобы предотвратить одновременное выполнение нескольких экземпляров программы.

Примечания

Примечание

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

Примеры

- name: Block specific IP
  ansible.builtin.iptables:
    chain: INPUT
    source: 8.8.8.8
    jump: DROP
  become: yes

- name: Forward port 80 to 8600
  ansible.builtin.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

- name: Allow related and established connections
  ansible.builtin.iptables:
    chain: INPUT
    ctstate: ESTABLISHED,RELATED
    jump: ACCEPT
  become: yes

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

- name: Match on IP ranges
  ansible.builtin.iptables:
    chain: FORWARD
    src_range: 192.168.1.100-192.168.1.199
    dst_range: 10.0.0.1-10.0.0.50
    jump: ACCEPT

- name: Tag all outbound tcp packets with DSCP mark 8
  ansible.builtin.iptables:
    chain: OUTPUT
    jump: DSCP
    table: mangle
    set_dscp_mark: 8
    protocol: tcp

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

- name: Insert a rule on line 5
  ansible.builtin.iptables:
    chain: INPUT
    protocol: tcp
    destination_port: 8080
    jump: ACCEPT
    action: insert
    rule_num: 5

- name: Set the policy for the INPUT chain to DROP
  ansible.builtin.iptables:
    chain: INPUT
    policy: DROP

- name: Reject tcp with tcp-reset
  ansible.builtin.iptables:
    chain: INPUT
    protocol: tcp
    reject_with: tcp-reset
    ip_version: ipv4

- name: Set tcp flags
  ansible.builtin.iptables:
    chain: OUTPUT
    jump: DROP
    protocol: tcp
    tcp_flags:
      flags: ALL
      flags_set:
        - ACK
        - RST
        - SYN
        - FIN

- name: Iptables flush filter
  ansible.builtin.iptables:
    chain: "{{ item }}"
    flush: yes
  with_items:  [ 'INPUT', 'FORWARD', 'OUTPUT' ]

- name: Iptables flush nat
  ansible.builtin.iptables:
    table: nat
    chain: '{{ item }}'
    flush: yes
  with_items: [ 'INPUT', 'OUTPUT', 'PREROUTING', 'POSTROUTING' ]

- name: Log packets arriving into an user-defined chain
  ansible.builtin.iptables:
    chain: LOGGING
    action: append
    state: present
    limit: 2/second
    limit_burst: 20
    log_prefix: "IPTABLES:INFO: "
    log_level: info

Авторы

  • 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.10/collections/ansible/builtin/iptables_module.html

Spec-Zone.ru

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