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.10
e ao mesmo tempo interromper o tráfego de saída para esse endereço:
- Permitir entrada (presumivelmente para qualquer porta)
- Permitir respostas de saída para conexões de entrada estabelecidas
- 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 INPUT
regra, a menos que tenha regras posteriores atingindo DENY
/ REJECT
ou sua política seja definida dessa maneira.
Responder2
Você está entendendo errado! Aqui está o que eu entendo:
Primeiro de tudo, observe sua input
regra. Deve permitir a entrada de state
, mas o que isso state
significa? Isso significa que o tráfego já foi out
do 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, state
só 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 output
conexões, mas também input
somente se o correto knocking
tiver acontecido, então.