iptables: Como permitir o SSH através do roteador debian?

1

Este é o mapa da rede:

  [External computer]---[Router]---[SSH server]

            EXTERNAL NET <=|=> INTERNAL NET

O roteador está fazendo SNAT e tradução de porta:

#~ iptables -t nat -A POSTROUTING -o eth-external -j SNAT --to-source $EXT_ROUTER_IP
#~ iptables -t nat -A PREROUTING -i eth-external -p tcp --dport 2222 -j DNAT --to-destination $SSH_SERVER:22

Isso funciona bem, eu posso fazer ssh para o servidor SSH de fora da minha rede fazendo ssh -p 2222 $ ROUTER_IP.

O problema surge quando defino a política padrão de FORWARD para DROP.

#~ iptables -P FORWARD DROP

Logicamente, agora os pacotes para o servidor SSH interno foram descartados.

Estou tentando com

#~ iptables -A FORWARD -i eth-external -o eth-internal -p tcp --dport 22 -j ACCEPT
#~ iptables -A FORWARD -o sth-external -i eth-internal -p tcp --dport 22 -j ACCEPT

Sem trabalho.

#~ iptables -A FORWARD -i eth-external -o eth-internal -j ACCEPT
#~ iptables -A FORWARD -o sth-external -i eth-internal -j ACCEPT

Funciona.

Mas não quero permitir todo o tráfego entre essas duas interfaces, apenas pacotes SSH.

Alguém pode me ajudar?

Obrigado!

EDIT:

Finalmente eu tenho esse trabalho ...

#~ iptables -t nat -A PREROUTING -i eth-external -p tcp --dport 2222 -j DNAT --to-destination $SSH_SERVER:22
#~ iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

obrigado @davidgo

    
por Víctor E. 22.03.2016 / 21:49

1 resposta

0

Você não está aceitando tráfego da porta 2222 de volta para a porta 22. Você precisa das linhas

iptables -A FORWARD -i eth-external -o eth-internal -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -o sth-external -i eth-internal -p tcp --dport 2222 -j ACCEPT

ou, possivelmente, melhor

iptables -A FORWARD -i eth-external -o eth-internal -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Qual deles corresponderá aos pacotes de saída em resposta a uma solicitação de entrada.

    
por 23.03.2016 / 03:22