Diferença entre a política padrão do iptables para 'DROP' e a inserção de uma política separada na cadeia de entrada para DROP todas as conexões

2

Estou tentando DROP todas as conexões de entrada para o meu servidor, exceto em redes específicas. Ao mesmo tempo, quero manter todas as conexões de saída do meu servidor para a rede externa (qualquer rede através de qualquer protocolo) aberta. Ele está trabalhando fazendo abaixo duas mudanças na cadeia INPUT:

Observação: o teste foi feito com 3 servidores (VMs) com IPs na rede 192.168.0.0/24 e todas as regras definidas no servidor3 (IP: 192.168.0.3)

a. iptables -P INPUT DROP
b. iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
[root@server3 ~]# iptables -nvL

Chain INPUT (policy DROP 124 packets, 22308 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  265 34603 ACCEPT     all  --  *      *       192.168.0.0/24       0.0.0.0/0           

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 433 packets, 34693 bytes)
 pkts bytes target     prot opt in     out     source               destination         

No entanto, minha primeira pergunta:

  1. Quando defini a primeira regra acima (alterando a política padrão para a cadeia INPUT), ela também parou todas as conexões de saída (ssh, ping) do meu servidor (IP: 192.168.0.3). Por que isso está acontecendo, se minha política de cadeia OUTPUT padrão ainda é aceita e não tenho regras definidas na cadeia de saída?

Eu queria conseguir o mesmo ao não alterar a política padrão da cadeia INPUT, assim:

c. iptables -I INPUT -j DROP
d. iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT

Mas ainda bloqueia todas as conexões de entrada / saída para / do meu servidor3. Isso me leva à segunda pergunta:

  1. Como as regras c. e a. estão funcionando de maneira diferente? Por favor, ajudem na compreensão, como eu sou novo para firewalls linux.
por dig_123 07.09.2014 / 20:46

1 resposta

6

Se você tiver uma política DROP INPUT padrão, até mesmo os pacotes response de suas conexões externas serão descartados.

Para aceitá-los, adicione esta regra de entrada:

iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Quanto à sua última pergunta, no seu exemplo c and d (assumindo regras vazias antes desses comandos), você está definindo uma regra de primeira regra drop everything e segunda que aceitaria tráfego de uma certa rede. IPTABLES pega uma partida assim que possível, então a primeira regra sempre corresponde (sem condição definida), então todas as regras depois disso não serão executadas. Exceções a uma regra devem ser definidas antes da regra.

No primeiro exemplo -P INPUT DROP , você está definindo uma regra última que detectará o que não foi correspondido antes, portanto, qualquer exceção adicionada será executada antes dessa regra padrão ( -P ).

-I insere-se em uma determinada posição (por exemplo, no meu comando anterior, estou definindo a regra ESTABLISHED, RELATED como a primeira para que corresponda, independentemente do que você definir depois disso.

-A é anexado à lista de regras, portanto, será correspondido antes do padrão.

Se você deseja alcançar o mesmo que o primeiro exemplo com regras explícitas (como c and d ), você deve trocar suas posses.

    
por 07.09.2014 / 21:15