Linux iptables permite algumas portas

1

Temos um servidor Linux (CentOS 6.3), onde todas as portas parecem acessíveis por dentro (quando tentadas pelo servidor), mas somente o SSH é acessível de fora. Eu gostaria de permitir algumas outras portas, como 1521 (Oracle), mas não consigo trabalhar.

Eu tentei o seguinte:

iptables -A INPUT -m state --state NEW -p tcp --dport 1521 -j ACCEPT
service iptables save
service iptables restart

mas eu ainda recebo uma "conexão expirada" quando eu faço um "telnet 192.168.97.1 1521" de outra máquina, enquanto eu posso conectar do servidor com o mesmo comando.

Isto é o que eu tenho em / etc / sysconfig / iptables:

# Generated by iptables-save v1.4.7 on Fri Mar 15 12:13:41 2013
*nat
:PREROUTING ACCEPT [6:1136]
:POSTROUTING ACCEPT [14:878]
:OUTPUT ACCEPT [15:986]
-A POSTROUTING -o em1 -j MASQUERADE
COMMIT
# Completed on Fri Mar 15 12:13:41 2013
# Generated by iptables-save v1.4.7 on Fri Mar 15 12:13:41 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [45:3812]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Fri Mar 15 12:13:41 2013

(A linha -A POSTROUTING -o em1 -j MASQUERADE está lá porque anteriormente eu também tentei instalar um servidor PPTP como descrito aqui )

    
por lbalazscs 15.03.2013 / 12:30

2 respostas

4

A ordem em que as diretivas aparecem é importante. O primeiro jogo vence.

Então, seu problema é:

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT

Assim, você nunca permite tráfego para a porta 1521.

Para corrigir o problema, simplesmente inverta as duas linhas.

    
por 15.03.2013 / 12:31
0

Você pode usar as duas opções a seguir: (Eu suponho que você use Red Hat ou CentOS Linux).

Opção 1:
Em um shell root, execute o comando:

iptables -L --line-numbers

Isso mostrará as cadeias e as regras aplicadas em cada cadeia com números de linha. Por exemplo, em um dos meus servidores, a saída é:

iptables -L --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  anywhere             anywhere
Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere
2    ACCEPT     icmp --  anywhere             anywhere            icmp any
3    ACCEPT     esp  --  anywhere             anywhere
4    ACCEPT     ah   --  anywhere             anywhere
5    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
6    ACCEPT     udp  --  anywhere             anywhere            state NEW udp    dpt:snmp
....
14   DROP       all  --  anywhere             anywhere

Então, para configurar sua regra, eu executaria os seguintes comandos:

iptables -I 7 INPUT -m state --state NEW -p tcp --dport 1521 -j ACCEPT
service iptables save
service iptables restart

Usando o -I 7 em vez do -A eu instruí iptables a adicionar uma nova regra na linha 7, e empurre para baixo todas as outras regras. Note que no meu caso eu poderia usar qualquer número de linha de 7-14.

Opção 2:

Edite o arquivo / etc / sysconfig / iptables , encontre a última entrada antes do "DROP" e adicione a regra lá, salve o arquivo e recarregue o iptables.

    
por 15.03.2013 / 13:40