iptables question

1

Estou tentando configurar regras genéricas do iptables que posso distribuir para o meu pequeno cluster de 4 nós.

Eu quero que todos os servidores:

  1. aceite qualquer tráfego nas portas 22,80,443

  2. ou todo o tráfego, se a fonte for 127.0.0.1

  3. ou todo o tráfego é a fonte é um dos servidores no meu cluster

  4. qualquer outra coisa que eu queira deixar cair

iptables -F
iptables -A INPUT -p all -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p all -s <SERVER-A> -j ACCEPT
iptables -A INPUT -p all -s <SERVER-B> -j ACCEPT
iptables -A INPUT -p all -s <SERVER-C> -j ACCEPT
iptables -A INPUT -p all -s <SERVER-D> -j ACCEPT
iptables -A INPUT -j DROP

Isso parece correto?

    
por womble 15.01.2010 / 00:43

3 respostas

1
  1. Livre-se da regra final e torne a política padrão DROP ( iptables -P INPUT DROP )
  2. Este conjunto de regras não manipula os pacotes de retorno das conexões de saída; adicione iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT na parte superior (a menos que você queira não permitir conexões de saída, em cujo caso algumas regras OUTPUT deixariam isso mais claro).
  3. Crie a política FORWARD chain DROP , para o caso de alguém fat-fingers /proc/sys/net/ipv4/ip_forward .
por 15.01.2010 / 01:06
0

Eu recomendo vivamente o uso de um wrapper em torno de IPtables. Por si só, fica bastante feio além das regras simples que você precisa.

Nós usamos FireHOL com bons resultados - existem pacotes Debian / Ubuntu na distro padrão e RHEL / CentOS via RPMForge ( iirc).

Uma configuração do firehol para as regras que você descreve seria da seguinte forma:

my_ips="<your server list>"
interface any world 
        protection strong 100/sec 50
        policy drop
        server ident reject with tcp-reset
        server ssh accept
        server http accept
        server https accept
        server all accept src "$my_ips"

Também não é muito difícil criar regras completas de roteador - o exemplo acima é para um firewall local (sem roteamento), como você descreve em sua pergunta.

FireHOL e outros invólucros IPtables, também tendem a adicionar (ou tornar mais fácil adicionar) padrões sensíveis às suas regras de firewall que filtram pacotes conhecidos como ruins - por exemplo, a linha de 'proteção' acima, que acaba criando muitos (10+) regras iptables úteis.

Outro motivo pelo qual eu prefiro o FireHOL é que o arquivo de configuração ainda é apenas um script bash, permitindo a flexibilidade total de qualquer shell script IPtables que você acabaria escrevendo.

    
por 15.01.2010 / 02:12
0

Para sua última regra. Seria mais amigável para a Internet para rejeitar o pacote, ao invés de soltar. Algo como ...

iptables -A INPUT -j REJECT --rejeita com icmp-host-proibido

    
por 21.01.2010 / 20:44

Tags