Spec-Zone.ru › Ansible 2.11

ansible.builtin.iptables – Модификация правил iptables

Примечание

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

В версии 2.0: из 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.
destination_ports
список / элементы=строка
добавлен в 2.11 ansible.builtin
Это указывает несколько номеров портов назначения или диапазонов портов для сопоставления в модуле multiport.
Он может использоваться только совместно с протоколами tcp, udp, udplite, dccp и sctp.
dst_range
строка
добавлен в 2.8 ansible.builtin
Указывает диапазон IP-адресов назначения для сопоставления в модуле iprange.
flush
булево
добавлен в 2.2 ansible.builtin
    Варианты:
  • no ←
  • yes
Очищает указанную таблицу и цепочку всех правил.
Если цепочка не указана, вся таблица очищается.
Игнорирует все другие параметры.
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
Указывает текст журнала для правила. Имеет смысл только с целевым параметром LOG.
match
список / элементы=строка
Значение по умолчанию:
[]
Указывает используемое соответствие, то есть модуль расширения, который проверяет определенное свойство.
Набор соответствий образует условие, при котором вызывается цель.
Совпадения оцениваются сначала по порядку следования, если указаны как массив, и работают по принципу короткого замыкания, то есть, если один расширения возвращает false, оценка прекращается.
match_set
строка
добавлен в 2.11 ansible.builtin
Указывает имя набора, которое может быть определено ipset.
Должен использоваться вместе с параметром match_set_flags.
Когда префикс ! добавлен, он инвертирует правило.
Использует расширение iptables set.
match_set_flags
строка
добавлен в 2.11 ansible.builtin
    Варианты:
  • src
  • dst
  • src,dst
  • dst,src
Указывает необходимые флаги для параметра match_set.
Должен использоваться вместе с параметром match_set.
Использует расширение iptables set.
out_interface
строка
Имя интерфейса, через который пакет будет отправлен (для пакетов, входящих в цепочки FORWARD, OUTPUT и POSTROUTING).
Когда используется аргумент !, смысл инвертируется.
Если имя интерфейса оканчивается на +, то соответствовать будут все интерфейсы, начинающиеся с этого имени.
Если этот параметр опущен, любому имени интерфейса будет соответствовать.
policy
строка
добавлен в 2.2 ansible.builtin
    Варианты:
  • ACCEPT
  • DROP
  • QUEUE
  • RETURN
Устанавливает политику для цепочки в заданную цель.
Только встроенные цепочки могут иметь политики.
Этот параметр требует параметра chain.
Если вы указали этот параметр, все остальные параметры будут игнорироваться.
Этот параметр используется для установки политики по умолчанию для заданной chain. Не путайте с параметром jump.
протокол
строка
Протокол правила или пакета для проверки.
Указанный протокол может быть одним из 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.
источник
строка
Указание источника.
Адрес может быть именем сети, именем хоста, IP-адресом сети (с маской) или простым IP-адресом.
Имена хостов будут разрешены только один раз, прежде чем правило будет отправлено ядру. Обратите внимание, что указание любого имени для разрешения с помощью удалённого запроса, такого как DNS, — очень плохая идея.
Маска может быть либо маской сети, либо простым числом, определяющим количество единиц слева от маски сети. Таким образом, маска 24 эквивалентна 255.255.255.0. Аргумент ! перед указанием адреса инвертирует смысл адреса.
порт_источника
строка
Указание порта источника или диапазона портов.
Это может быть имя службы или номер порта.
Также можно указать включающий диапазон, используя формат first:last.
Если первый порт опущен, подразумевается 0; если последний опущен, подразумевается 65535.
Если первый порт больше второго, они будут поменяны местами.
src_range
строка
добавлено в 2.8 ansible.builtin
Указывает диапазон IP-адресов источника для сопоставления в модуле iprange.
состояние
строка
    Варианты:
  • отсутствует
  • есть ←
Должно ли правило отсутствовать или присутствовать.
syn
строка
добавлено в 2.5 ansible.builtin
    Варианты:
  • игнорировать ←
  • сопоставить
  • отменить
Это позволяет сопоставлять пакеты, у которых установлен бит SYN, а биты ACK и RST сброшены.
При отрицании это соответствует всем пакетам, у которых установлены биты RST или ACK.
таблица
строка
    Варианты:
  • фильтр ←
  • nat
  • mangle
  • raw
  • security
Этот параметр указывает таблицу сопоставления пакетов, на которой должно выполняться действие.
Если ядро настроено на автоматическую загрузку модулей, будет выполнена попытка загрузить соответствующий модуль для этой таблицы, если он ещё не загружен.
tcp_flags
словарь
добавлено в 2.4 ansible.builtin
По умолчанию:
{}
Указание флагов TCP.
tcp_flags ожидает словарь с двумя ключами flags и flags_set.
флаги
список / элементы=строка
Список флагов, которые вы хотите проверить.
flags_set
список / элементы=строка
Флаги, которые нужно установить.
в_назначение
строка
добавлено в 2.1 ansible.builtin
Указывает целевой адрес для использования с DNAT.
Без этого целевой адрес никогда не изменяется.
в_порты
строка
Указывает целевой порт или диапазон портов для использования. Без этого целевой порт никогда не изменяется.
Это допустимо только в том случае, если правило также указывает один из протоколов tcp, udp, dccp или sctp.
в_источник
строка
добавлено в 2.2 ansible.builtin
Указывает адрес источника для использования с SNAT.
Без этого адрес источника никогда не изменяется.
uid_владелец
строка
добавлено в 2.1 ansible.builtin
Указывает UID или имя пользователя для использования в правиле сопоставления по владельцу.
С Ansible 2.6, когда аргумент ! предваряется, он инвертирует правило, чтобы применить его вместо этого ко всем пользователям, кроме указанного.
ожидание
строка
добавлено в 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: Allow source IPs defined in ipset "admin_hosts" on port 22
  ansible.builtin.iptables:
    chain: INPUT
    match_set: admin_hosts
    match_set_flags: src
    destination_port: 22
    jump: ALLOW

- 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

# Think twice before running following task as this may lock target system
- 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

- name: Allow connections on multiple ports
  ansible.builtin.iptables:
    chain: INPUT
    protocol: tcp
    destination_ports:
      - "80"
      - "443"
      - "8081:8083"
    jump: ACCEPT

Авторы

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

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

Spec-Zone.ru

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