iptables não fecha a porta 3000?

3

Eu queria configurar o iptables no meu servidor de forma que apenas portas específicas estejam abertas. No entanto, posso acessar, e. porta 3000, se eu executar um aplicativo da web nele. Qual poderia ser a razão pela qual 3000 está aberto?

Aqui está a saída do comando iptables -nv -L INPUT

 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x00
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:!0x17/0x02 state NEW
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x3F
  670  302K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
  187  136K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
   33  1968 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp spt:25 state ESTABLISHED

Na minha opinião, a tabela acima indica que apenas as portas 80, 443, 22 e 25 estão abertas, mas aparentemente estou perdendo alguma coisa.

UPD. Conteúdo de /etc/sysconfig/iptables

# Generated by iptables-save v1.4.21 on ...
*filter
:INPUT ACCEPT [11:812]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [7:2120]
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
COMMIT
# Completed on ...
# Generated by iptables-save v1.4.21 on ...
*mangle
:PREROUTING ACCEPT [6775:1045434]
:INPUT ACCEPT [6183:992008]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3415:5301713]
:POSTROUTING ACCEPT [3415:5301713]
COMMIT
# Completed on ...
# Generated by iptables-save v1.4.21 on ...
*nat
:PREROUTING ACCEPT [671:58811]
:POSTROUTING ACCEPT [3:243]
:OUTPUT ACCEPT [3:243]
COMMIT
# Completed on ...
# Generated by iptables-save v1.4.21 on ...
*raw
:PREROUTING ACCEPT [6775:1045434]
:OUTPUT ACCEPT [3415:5301713]
COMMIT

UPD. Obrigado pelas respostas, @akhfa e @Iain! Ambos funcionam para mim. Parece que a opção de rejeitar é um pouco melhor (por exemplo, tendo em conta esta comparação ), então eu marquei como o aceito.

P.S. Agora eu tenho um problema que eu não posso mais pingar google do meu servidor, mas isso provavelmente vai além do escopo da pergunta original. P.P.S. Nevermind, no final eu consertei o problema de acesso à internet adicionando as seguintes regras no começo:

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

sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT  -p udp --sport 53 -m state --state ESTABLISHED     -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT  -p tcp --sport 53 -m state --state ESTABLISHED     -j ACCEPT

sudo iptables -A INPUT -p icmp -j ACCEPT
    
por Skeeve 25.12.2015 / 22:37

2 respostas

8

Você não tem regras para bloquear a porta 3000. Sua política é ACCEPT, portanto, a porta 3000 (como todo o restante) está aberta. Você poderia tentar adicionar um padrão drop / reject no final de suas regras, isso é comum

iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable

e deve fazer o trabalho como qualquer pacote que chega tão longe será rejeitado e o controle remoto vai pensar notando é ouvir nessa parte.

    
por 25.12.2015 / 22:42
6

Você pode alterar a política padrão em INPUT para DROP assim

iptables -P INPUT DROP

e, em seguida, você pode excluir todas as regras DROP na sua cadeia INPUT. Você deve adicionar a regra ACCEPT em todas as portas que deseja abrir se fizer essa alteração.

    
por 25.12.2015 / 23:18