Bloco de saída do Iptables nega entrada

Bloco de saída do Iptables nega entrada

Estou tentando bloquear apenas conexões de saída para endereços IP específicos, mas quero permitir conexões de entrada dos mesmos endereços IP.

Pelo que entendi sobre o bloqueio de conexões de saída, elesnão deveriabloquear se uma conexão de entrada tiver sido feita com sucesso.

Basicamente, configurei regras assim:

--append OUTPUT --jump DROP --destination x.x.x.x

E para permitir conexões estabelecidas:

--append INPUT --in-interface eth0 --match state --state RELATED,ESTABLISHED --jump ACCEPT

Quero que as conexões sejam permitidas quando este endereço IP tentar se conectar ao servidor, mas quando meu servidor tentar fazer uma conexão de saída, ele não conseguirá.

Gostaria de bloquear o acesso completo do servidor para fazer conexões de saída com o x.x.x.x. Porém quando um usuário desse IP deseja acessar o servidor ele deverá poder visitar sites em determinadas portas.

Responder1

Você está quase lá com suas tentativas de regras de firewall. Aqui está o que você precisa para permitir o tráfego de entrada do host 10.10.10.10e ao mesmo tempo interromper o tráfego de saída para esse endereço:

  1. Permitir entrada (presumivelmente para qualquer porta)
  2. Permitir respostas de saída para conexões de entrada estabelecidas
  3. Bloquear o tráfego de saída restante

Então,

iptables -A INPUT --src 10.10.10.10 --jump ACCEPT

iptables -A OUTPUT --match state --state RELATED,ESTABLISHED --jump ACCEPT
iptables -A OUTPUT --dst 10.10.10.10 --jump DROP

Você realmente não precisa da INPUTregra, a menos que tenha regras posteriores atingindo DENY/ REJECTou sua política seja definida dessa maneira.

Responder2

Você está entendendo errado! Aqui está o que eu entendo:

Primeiro de tudo, observe sua inputregra. Deve permitir a entrada de state, mas o que isso statesignifica? Isso significa que o tráfego já foi outdo seu servidor para este endereço antes! Portanto, esta regra nunca corresponderá se você bloquear output(para este endereço) completamente.

É por isso que seu empreendimento completo não é possível, statesó está disponível em input.

Pode haver alguma solução hacky. Mas com as opções dadas isso não é possível.

PS

Depois da sua pergunta, verifiquei novamente um tópico antigo e adivinhe. Depois de ler sua postagem novamente, percebi que isso é EXATAMENTE o que você deseja. Olhe paraBatendo na porta.

Adiciona um componente à sua solicitação, o que a torna ainda melhor; aleatoriedade.

Basta configurar um esquema de batidas e não só permitir outputconexões, mas também inputsomente se o correto knockingtiver acontecido, então.

informação relacionada