AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 907925
Accepted
tomsk
tomsk
Asked: 2018-04-17 10:40:45 +0800 CST2018-04-17 10:40:45 +0800 CST 2018-04-17 10:40:45 +0800 CST

Ignorando regras no iptables

  • 772

Imagine que eu tenha 3 regras no iptables:

  1. Verifique se o IP está na lista de permissões no ipset e aceite-o.
  2. Verifique se o usuário tenta se conectar à porta 22 e, em seguida, solte-a.
  3. Verifique se o usuário tenta se conectar à porta 80 e aceite-a.

Este é um exemplo (não real) de regras:

iptables -A INPUT -m set --match-set whitelist src -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j DROP

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Mas eu gostaria de fazer isso se o usuário estiver na lista de permissões (1ª regra), então não o aceite, mas pule/redirecione para a 3ª regra (pule a 2ª regra), como nesta imagem ( eu sei que se o pacote for ACEITO, então está feito, isso é apenas um exemplo, não sei como fazer esse salto ):

Imagem

Então eu gostaria de perguntar a você, como posso definir esse "pular" em cadeia.

Subquestão: Se for possível, também é possível redirecioná-lo para outra cadeia para uma regra específica?

Atualização: cenário real

iptables -A INPUT -m set --match-set whitelist src -j ACCEPT

iptables -A INPUT -m geoip --src-cc DE -j DROP

... other rules ...

Como você pode ver, eu coloquei na lista de permissões apenas a Alemanha, se o IP do alemão passar pela segunda regra, então vou verificar se há outras regras, mas também uso IPs na lista de permissões.

Portanto, se algum IP estiver na lista de permissões (principalmente não alemão), não quero verificar se é IP alemão (porque falharia), em vez disso, esse IP deve pular para outras regras (3ª linha) e pular a verificação do país.

Que tal ir para a função?

iptables
  • 2 2 respostas
  • 2240 Views

2 respostas

  • Voted
  1. Best Answer
    A.B
    2018-04-17T14:35:38+08:002018-04-17T14:35:38+08:00

    Uma cadeia personalizada pode ser usada para organizar as coisas com mais facilidade. Há um outro destino "terminal" mais útil uma vez em uma cadeia personalizada: RETURNpara voltar imediatamente e executar a regra após a regra de chamada. RETURNna cadeia base apenas aplica a política padrão, por isso não é muito usado.

    O exemplo solicitado torna-se:

    iptables -N whitelist-check
    iptables -A whitelist-check -m set --match-set whitelist src -j RETURN
    iptables -A whitelist-check -p tcp --dport 22 -j DROP
    iptables -A INPUT -j whitelist-check
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    

    Às vezes, inverter a lógica e o agrupamento também pode funcionar. Para este caso simples, um método equivalente teria sido simplesmente:

    iptables -A INPUT -p tcp -m set ! --match-set whitelist src --dport 22 -j DROP
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    

    Para o cenário atualizado : solte tudo o que não está na lista de permissões nem do DE (nem ...). Para exceções adicionais, basta adicionar mais regras terminando com -j RETURNantes do-j DROP

    Atualização 2 : alterou a lógica DEdesde que o OP também a alterou ... se, de acordo com a alteração do OP, o tráfego for interrompido para a Alemanha, aqui, o tráfego continua para fora da Alemanha.

    iptables -N filterchain
    iptables -A filterchain -m set --match-set whitelist src -j RETURN
    iptables -A filterchain -m geoip ! --src-cc DE -j RETURN
    ...
    iptables -A filterchain -j DROP
    
    iptables -A INPUT -j filterchain
    ... other rules ...
    
    • 2
  2. Ben Franske
    2018-04-17T14:04:59+08:002018-04-17T14:04:59+08:00

    Até onde eu sei, você não pode pular regras dentro de uma cadeia. Você absolutamente pode "saltar" para outra cadeia se uma regra for correspondida. Por exemplo, iptables -A INPUT -p tcp -j tcp_packet_chaincorresponderá a todos os pacotes TCP e os levará para o "tcp_packet_chain". É importante notar que se o pacote não for ACCEPTed ou DENYed na cadeia, você retornará à próxima regra na cadeia original.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve