iptables config funciona em um servidor Centos 6 mas não em outro

1

Este script do iptables:

#!/bin/sh
service iptables stop
iptables -F
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
service iptables save
service iptables restart

funciona como esperado em um servidor Centos 6.3 (fornecido por VPSBlocks.com.au), mas não em um servidor Centos 6.0 (fornecido pelo VPSNine.com). Por "funciona como esperado", quero dizer que, pelo menos, permite o acesso de entrada para as portas 22, 80 e 443. E por não funcionar, quero dizer que não permite o acesso.

O que funciona tem o seguinte / etc / sysconfig / iptables:

# Generated by iptables-save v1.4.7 on Wed Feb 27 19:10:38 2013
*filter
:INPUT DROP [3:453]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1:52]
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT 
COMMIT
# Completed on Wed Feb 27 19:10:38 2013

enquanto o que não funciona tem o seguinte / etc / sysconfig / iptables:

# Generated by iptables-save v1.4.7 on Wed Feb 27 11:28:36 2013
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Wed Feb 27 11:28:36 2013
# Generated by iptables-save v1.4.7 on Wed Feb 27 11:28:36 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT 
COMMIT
# Completed on Wed Feb 27 11:28:36 2013
# Generated by iptables-save v1.4.7 on Wed Feb 27 11:28:36 2013
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Wed Feb 27 11:28:36 2013

Se eu substituir o / etc / sysconfig / iptables que não funciona pelo que funciona no outro servidor, ele me permite manter a conexão ssh atual, mas quando tento voltar, estou bloqueado .

Por que a mesma configuração do iptables funcionaria em um servidor, mas não no outro? A diferença nas versões menores do Centos (6,3 vs. 6,0) poderia ser diferente?

Atualização: O servidor Centos 6.3 (um no qual a configuração do iptables funciona) usa o iptables 1.4.7-5.1.el6_2. O outro servidor usa o iptables 1.4.7-3.el6.

Atualização: iptables --list retorna o seguinte em ambos os servidores:

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            multiport dports ssh,http,https state NEW,ESTABLISHED 

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Atualização: Quando eu faço o login no servidor 6.0, vejo este aviso:

Warning: Unknown iptable module: nf_conntrack_ipv4, skipped

Não sei como instalar isso. É um módulo do kernel? Se assim for, parece que eu sou snookered.

    
por Steve Taylor 27.02.2013 / 09:54

2 respostas

0

O iptables multiport é um módulo, verifique se ele está instalado no sistema CentOS de destino.

    
por 27.02.2013 / 10:27
0

Em seu script, talvez seja preciso flush de todas as tabelas, além do filter (-F), que é o padrão da tabela de filtros.

  /sbin/iptables -F
  /sbin/iptables -t nat -F
  /sbin/iptables -t mangle -F

Em seguida, aceite conexões para sessões já estabelecidas com a seguinte linha em /etc/sysconfig/iptables logo acima da regra de aceitação da interface de loopback.

 -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT

Você também pode precisar carregar manualmente o módulo nf_conntrack_ipv4 com -

  modprobe nf_conntrack_ipv4

Se o multiportar estiver causando um problema, você poderá adicionar as portas individualmente para um teste.

    
por 27.02.2013 / 19:09