O iptables multiport é um módulo, verifique se ele está instalado no sistema CentOS de destino.
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.
O iptables multiport é um módulo, verifique se ele está instalado no sistema CentOS de destino.
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.