IPtables
Resumo
- Modificar regras de iptables.
Parâmetros
Parâmetro | Tipo | Escolhas | Valor Padrão | Comentários |
|---|---|---|---|
table | string | Escolhas: - filter (default) - nat - mangle - raw - security | Esta opção especifica a tabela de correspondência de pacotes na qual o comando deve operar. Se o kernel estiver configurado com carregamento automático de módulo, será feita uma tentativa de carregar o módulo apropriado para aquela tabela, se ainda não estiver lá. |
state | string | Escolhas: - present (default) - absent | Se a regra deve estar ausente ou presente. |
action | string | Escolhas: - append (default) - insert | Se a regra deve ser anexada na parte inferior ou inserida na parte superior. Se a regra já existe, a chain não será modificada. |
rule_num | string | | Insira a regra como o número da regra fornecida. Isso funciona apenas com (action = insert). |
ip_version | string | Escolhas: - ipv4 (default) - ipv6 | A qual versão do protocolo IP esta regra deve ser aplicada. |
chain | string | | Especifique a cadeia de iptables a ser modificada. Pode ser uma cadeia definida pelo usuário ou uma das cadeias iptables padrão, como (INPUT), (FORWARD), (OUTPUT), (PREROUTING), (POSTROUTING), C(SECMARK) ou (CONNSECMARK). |
protocol | string | | O protocolo da regra ou do pacote a verificar. O protocolo especificado pode ser (tcp), (udp), (udplite), (icmp), (esp), (ah), (sctp) ou a palavra-chave especial (all), ou pode ser um valor numérico, representando um desses protocolos ou outro. Um nome de protocolo de (/ etc / concepts) também é permitido. Um argumento (!) Antes do protocolo inverte o teste. O número zero é equivalente a todos. (all) corresponderá a todos os protocolos e será considerado como padrão quando esta opção for omitida. |
source | string | | Especificação da fonte. O endereço pode ser um nome de rede, um nome de host, um endereço IP de rede (with/mask) ou um endereço IP simples. Os nomes de host serão resolvidos apenas uma vez, antes que a regra seja enviada ao kernel. Observe que especificar qualquer nome a ser resolvido com uma consulta remota, como DNS, é realmente uma má ideia. A máscara pode ser uma máscara de rede ou um número simples, especificando o número de 1 no lado esquerdo da máscara de rede. Portanto, uma máscara de 24 é equivalente a 255.255.255.0. Um argumento (!) Antes da especificação do endereço inverte o sentido do endereço. |
destination | string | | Especificação de destino. O endereço pode ser um nome de rede, um nome de host, um endereço IP de rede (with/mask) ou um endereço IP simples. Os nomes de host serão resolvidos apenas uma vez, antes que a regra seja enviada ao kernel. Observe que especificar qualquer nome a ser resolvido com uma consulta remota, como DNS, é realmente uma má ideia. A máscara pode ser uma máscara de rede ou um número simples, especificando o número de 1 no lado esquerdo da máscara de rede. Portanto, uma máscara de 24 é equivalente a 255.255.255.0. Um argumento (!) Antes da especificação do endereço inverte o sentido do endereço. |
tcp_flags (Possíveis valores) | dictionary | - { } (default) | - Especificação de flags TCP. (tcp_flags) espera um dict com as duas chaves (flags) e (flags_set). |
match | list | - [ ] (default) | Especifica uma correspondência a ser usada, ou seja, um módulo de extensão que testa uma propriedade específica. O conjunto de correspondências constitui a condição sob a qual um destino é invocado. As correspondências são avaliadas da primeira à última se especificadas como uma matriz e funcionam em curto-circuito, ou seja, se uma extensão resultar em falso, a avaliação será interrompida. |
jump | string | | Isso especifica o alvo da regra; ou seja, o que fazer se o pacote corresponder a ele. O alvo pode ser uma cadeia definida pelo usuário (diferente daquela em que esta regra está), um dos alvos embutidos especiais que decidem o destino do pacote imediatamente, ou uma extensão. Se esta opção for omitida em uma regra (e o parâmetro goto não for usado), a correspondência da regra não terá efeito no destino do pacote, mas os contadores na regra serão incrementados. |
gateway | string | | Isso especifica o endereço IP do host para enviar os pacotes clonados. Esta opção só é válida quando (jump) é definido como (TEE). |
log_prefix | string | | Especifica um texto de registro para a regra. Só faz sentido com um salto LOG. |
log_level | string | Escolhas: - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - emerg - alert - crit - error - warning - notice - info - debug | Nível de registro de acordo com as prioridades definidas pelo syslogd. O valor pode ser strings ou números de 1 a 8. Este parâmetro só é aplicável se (jump) estiver definido como (LOG). |
goto | string | | Isso especifica que o processamento deve continuar em uma cadeia especificada pelo usuário. Ao contrário do argumento de salto, o retorno não continuará processando nesta cadeia, mas sim na cadeia que nos chamou por meio de salto. |
in_interface | string | | Nome de uma interface pela qual um pacote foi recebido (somente para pacotes que entram nas cadeias (INPUT), (FORWARD) e (PREROUTING)). Quando o argumento (!) É usado antes do nome da interface, o sentido é invertido. Se o nome da interface terminar em (+), qualquer interface que comece com esse nome será compatível. Se esta opção for omitida, qualquer nome de interface corresponderá. |
out_interface | string | | Nome de uma interface pela qual um pacote será enviado (para pacotes que entram nas chains (FORWARD), (OUTPUT) e (POSTROUTING)). Quando o argumento (!) É usado antes do nome da interface, o sentido é invertido. Se o nome da interface terminar em (+), qualquer interface que comece com esse nome será compatível. Se esta opção for omitida, qualquer nome de interface corresponderá. |
fragment | string | | Isso significa que a regra se refere apenas ao segundo e outros fragmentos de pacotes fragmentados. Como não há como saber as portas de origem ou destino de tal pacote (ou tipo ICMP), tal pacote não corresponderá a nenhuma regra que os especifique. Quando o argumento "!" precede o argumento de fragmento, a regra irá corresponder apenas a fragmentos de cabeça ou pacotes não fragmentados. |
set_counters | string | | Isso permite que o administrador inicialize os contadores de pacotes e bytes de uma regra (durante as operações (INSERT), (APPEND), (REPLACE)). |
source_port | string | | Porta de origem ou especificação de intervalo de portas. Pode ser um nome de serviço ou um número de porta. Um intervalo inclusivo também pode ser especificado, usando o formato (first:last). Se a primeira porta for omitida, (0) será assumido; se o último for omitido, (65535) é assumido. Se a primeira porta for maior que a segunda, elas serão trocadas. |
destination_port | string | | Porta de destino ou especificação de intervalo de portas. Pode ser um nome de serviço ou um número de porta. Um intervalo inclusivo também pode ser especificado, usando o formato primeiro: último. Se a primeira porta for omitida, '0' será assumido; se a última é omitida, '65535' é assumido. Se a primeira porta for maior que a segunda, elas serão trocadas. Isso só é válido se a regra também especificar um dos seguintes protocolos: tcp, udp, dccp ou sctp. |
to_ports | string | | Isso especifica uma porta de destino ou intervalo de portas a serem usadas, sem isso, a porta de destino nunca é alterada. Isso só é válido se a regra também especifica um dos protocolos (tcp), (udp), (dccp) ou (sctp). |
to_destination | string | | Isso especifica um endereço de destino para usar com (DNAT). Sem isso, o endereço de destino nunca é alterado. |
to_source | string | | Isso especifica um endereço de origem a ser usado com (SNAT). Sem isso, o endereço de origem nunca é alterado. |
syn | string | Escolhas: - ignore (default) - match - negate | Isso permite combinar pacotes que têm o bit SYN definido e os bits ACK e RST não definidos. Quando negado, combina todos os pacotes com os bits RST ou ACK definidos. |
set_dscp_mark | string | | Isso permite especificar uma marca DSCP a ser adicionada aos pacotes. É um valor inteiro ou hexadecimal. Mutuamente exclusivo com (set_dscp_mark_class). |
set_dscp_mark_class | string | | Isso permite especificar uma classe DiffServ predefinida que será traduzida para a marca DSCP correspondente. Mutuamente exclusivo com (set_dscp_mark). |
comment | string | | Isso especifica um comentário que será adicionado à regra. |
ctstate | list | - [ ] (default) | (ctstate) é uma lista dos estados de conexão para combinar no módulo conntrack. Os estados possíveis são (INVALID), (NEW), (ESTABLISHED), (RELATED), (UNTRACKED), (SNAT), (DNAT) |
src_range | string | | Especifica o intervalo de IP de origem para corresponder no módulo iprange. |
dst_range | string | | Especifica o intervalo de IP de destino para corresponder no módulo iprange. |
limit | string | | Especifica o número médio máximo de correspondências permitidas por segundo. O número pode especificar unidades explicitamente, usando / segundo' , / minuto', / hora'ou / dia', ou partes deles (então 5 / second é o mesmo que 5 / s') . |
limit_burst | string | | Especifica o burst máximo antes que o limite acima seja ativado. |
uid_owner | string | | Especifica o UID ou nome de usuário a ser usado na regra de correspondência do proprietário. A partir do Atmosphere 2.6, quando o argumento (!) É adicionado, ele inverte a regra para ser aplicada a todos os usuários, exceto aquele especificado. |
gid_owner | string | | Especifica o GID ou grupo a ser usado em correspondência pela regra do proprietário. |
reject_with | string | | Especifica o tipo de pacote de erro a retornar durante a rejeição. Implica "jump: REJECT" ' |
icmp_type | string | | Isso permite a especificação do tipo de ICMP, que pode ser um tipo numérico de ICMP, par de tipo / código ou um dos nomes de tipo de ICMP mostrados pelo comando 'iptables -p icmp -h'. |
flush | boolean | Escolhas: - false (default) - true | Libera a tabela especificada e a cadeia de todas as regras. Se nenhuma cadeia for especificada, toda a tabela será removida. Ignora todos os outros parâmetros. |
policy | string | Escolhas: - ACCEPT - DROP - QUEUE - RETURN | Defina a política para a cadeia para o alvo determinado. Apenas as cadeias integradas podem ter políticas. Este parâmetro requer o parâmetro (chain). Ignora todos os outros parâmetros. |
Subcampos da opção tcp_flags
Parâmetro | Tipo | Escolhas | Valor Padrão | Comentários |
|---|---|---|---|
flags | list | | Lista de flags que você deseja examinar. |
flags_set | list | | Flags a serem definidos. |
Exemplos
# Exemplo: Bloquear IP específico
- iptables:
chain: INPUT
source: 8.8.8.8
jump: DROP
become: yes
# Exemplo: Porta de encaminhamento 80 para 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
# Exemplo: Permitir conexões relacionadas e estabelecidas
- iptables:
chain: INPUT
ctstate: ESTABLISHED,RELATED
jump: ACCEPT
become: yes
# Exemplo: Permitir novos pacotes SYN de entrada na porta TCP 22 (SSH).
- iptables:
chain: INPUT
protocol: tcp
destination_port: 22
ctstate: NEW
syn: match
jump: ACCEPT
comment: Accept new SSH connections.
# Exemplo: Corresponder em intervalos de IP
- 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
# Exemplo: Etiquete todos os pacotes tcp de saída com DSCP marca 8
- iptables:
chain: OUTPUT
jump: DSCP
table: mangle
set_dscp_mark: 8
protocol: tcp
# Exemplo: Etiquete todos os pacotes tcp de saída com DSCP DiffServ classe CS1
- iptables:
chain: OUTPUT
jump: DSCP
table: mangle
set_dscp_mark_class: CS1
protocol: tcp
# Exemplo: Insira uma regra na linha 5
- iptables:
chain: INPUT
protocol: tcp
destination_port: 8080
jump: ACCEPT
action: insert
rule_num: 5
# Exemplo: Defina a política da cadeia INPUT para DROP
- iptables:
chain: INPUT
policy: DROP
# Exemplo: Rejeitar tcp com tcp-reset
- iptables:
chain: INPUT
protocol: tcp
reject_with: tcp-reset
ip_version: ipv4
# Exemplo: Definir tcp flags
- iptables:
chain: OUTPUT
jump: DROP
protocol: tcp
tcp_flags:
flags: ALL
flags_set:
- ACK
- RST
- SYN
- FIN
# Exemplo: Filtro de liberação de iptables
- iptables:
chain: "{{ item }}"
flush: yes
with_items: [ 'INPUT', 'FORWARD', 'OUTPUT' ]
# Exemplo: Iptables flush nat
- iptables:
table: nat
chain: '{{ item }}'
flush: yes
with_items: [ 'INPUT', 'OUTPUT', 'PREROUTING', 'POSTROUTING' ]
# Exemplo: Pacotes de log que chegam em uma cadeia definida pelo usuário
- iptables:
chain: LOGGING
action: append
state: present
limit: 2/second
limit_burst: 20
log_prefix: "IPTABLES:INFO: "
log_level: info
Valores retornados
Chave | Tipo | Retornado quando | Descrição |
|---|---|---|---|
changed | boolean | sempre | Mostra se houve modificações |
state | string | sempre | Ação da execução do módulo |
flush | boolean | sempre | status do flush |
chain | list | sempre | Cadeia de iptables. |