Por que esta linha de arquivo iptables está falhando no CentOS 6

4

Oi alguém poderia me ajudar a entender porque a linha 15 está falhando supostamente no meu arquivo iptables. Estou usando o CentOS 6.

Quando tento reiniciar o serviço iptables, obtenha o seguinte:

[root@dbserver ~]# service iptables restart
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules: iptables-restore: line 15 failed
                                                           [FAILED]

Meu arquivo iptables se parece com:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.1/254 -m state --state NEW -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT

Estou realmente tentando permitir o acesso à máquina a partir da rede local atualmente.

Qualquer ajuda seria muito apreciada. Obrigado.

EDITAR:

De acordo com a primeira resposta, movemos o COMMIT para o final do arquivo, mas ainda estamos recebendo erros ...

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.1.0/255 -m state --state NEW -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
COMMIT

Erro:

[root@dbserver ~]# service iptables restart
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules: iptables-restore: line 13 failed
                                                           [FAILED]
    
por Larry B 02.10.2012 / 12:29

5 respostas

4

Simples - você precisa mover seu COMMIT até o final do arquivo.

COMMIT diz ao iptables que você terminou sua declaração e quer enviar sua configuração para o kernel. Ele termina sua declaração. Você está dizendo iptables para COMMIT, e então você está dando novas regras sem uma nova declaração, daí o seu erro.

Edite para incluir o conteúdo do comentário a favor do vento:

Aqui está uma versão atualizada e funcional (não necessariamente ideal) da sua configuração: link . Vou resumir algumas das questões:

  1. Sua cadeia de entrada, RH-Firewall-1-INPUT, não existe. Você está copiando e colando de algum outro lugar?
  2. Algumas de suas regras caíram após suas regras de rejeição padrão. Mesmo que a sintaxe demorasse, as regras não funcionariam.
  3. 192.168.1.1/254 não chega nem perto do endereçamento válido do CIDR. Você quis dizer 192.168.1.0/24?
  4. Você tem -A RH-Firewall-1-INPUT -m udp -p tcp, o que não faz sentido - suponho que você queira dizer -A INPUT -m udp -p udp.
por 02.10.2012 / 12:33
4

Além do problema COMMIT, como mencionado por jgoldschrafe, você está tentando adicionar linhas a uma regra que não existe ( RH-Firewall-1-INPUT ).

Você precisará adicionar uma linha

:RH-Firewall-1-INPUT - [0:0]

imediatamente abaixo

:OUTPUT ACCEPT [0:0]

que irá declarar a cadeia, permitindo que você adicione regras a ela. Mas a cadeia ainda não terá efeito, já que não há nada mágico sobre o nome, e nada nas três cadeias principais ( INPUT , OUTPUT e FORWARD ) envia qualquer pacote para ele. Certamente você pode adicionar uma regra à corrente INPUT para enviar tráfego para sua nova cadeia, mas - e por favor não leve isso a mal - eu noto que ela diz no topo desse arquivo

Manual customization of this file is not recommended.

Isso está lá por um motivo. De qualquer forma, ignore isso e edite-o, mas você pode fazer alguns furos na segurança ou na disponibilidade do seu sistema enquanto estiver aprendendo a acertar.

Edit: Eu suspeito que o problema com a linha 19 é o intervalo de endereços especificado como 192.168.1.0/255 , o que não é válido. Se você quiser indicar todos os endereços entre 192.168.1.0 e 192.168.1.255 , precisará de 192.168.1.0/24 .

Eu peço perdão, mas você realmente não está aparecendo como alguém que sabe muito sobre firewall e redes, e - assumindo que este é um servidor que você está mantendo profissionalmente - pode não ser o melhor lugar para aprenda essas coisas.

    
por 02.10.2012 / 12:43
1

Em geral, vale a pena adicionar regras via iptables e depois descarregá-las em um arquivo com iptables-save, caso você queira usá-las novamente via iptables-restore, por exemplo, quando o sistema for reiniciado porque simplesmente iptables-save sabe seus próprios pré-requisitos melhor que você.

    
por 02.10.2012 / 15:04
0

Tente colocar as duas linhas

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

no final do arquivo antes do COMMIT.

    
por 15.01.2014 / 10:53
-5

Sim cara, / 24 ... notação de barra. Conversão de notação de barra do Google. Olhando para o seu primeiro exemplo de mesa me fez ofegar.

Eu tenho dito a mesma coisa muitas vezes ao longo dos anos, mas você está em cima de sua cabeça. Como alguém consegue editar manualmente as regras do iptables sem estar ciente da notação de barra? É usado praticamente ... em todo lugar.

E como todos disseram, importante ou não, é um servidor - não é um lugar para jogar. Se a segurança não for importante e estiver atrás de um firewall e não estiver exposta à Internet, desligue o iptables ('#service iptables stop; #chkconfig iptables off') ... e brinque com ele em casa.

Dessa forma, quando as coisas não funcionam, você não precisa se perguntar por quê.

    
por 23.05.2013 / 04:35