Encaminhamento de porta local dependente de IP no Linux

Encaminhamento de porta local dependente de IP no Linux

Eu configurei o sshd do meu servidor para escutar em uma porta 42 não padrão.

No entanto, no trabalho estou atrás de um firewall/proxy, que só permite conexões de saída para as portas 21, 22, 80 e 443. Conseqüentemente, não consigo fazer ssh do trabalho para meu servidor, o que é ruim. Não quero retornar o sshd para a porta 22.

A ideia é esta: no meu servidor, encaminhe localmente a porta 22 para a porta 42seO IP de origem corresponde ao IP externo da rede do meu trabalho. Para maior clareza, vamos supor que o IP do meu servidor seja 169.1.1.1 (na eth1) e o IP externo do meu trabalho seja 169.250.250.250. Para todos os IPs diferentes de 169.250.250.250, meu servidor deve responder com uma esperada 'conexão recusada', como acontece com uma porta que não escuta.

Eu sou muito novo no iptables. Examinei brevemente o longo manual do iptables e estas questões relacionadas/relevantes:

No entanto, essas questões lidam com cenários mais complicados de vários hosts, e não está claro para mim quais tabelas e cadeias devo usar para encaminhamento de porta local e se devo ter 2 regras (para pacotes de "perguntas" e "respostas" ) ou apenas 1 regra para pacotes de "perguntas".

Até agora, habilitei apenas o encaminhamento via sysctl. Começarei a testar soluções amanhã e apreciarei dicas ou talvez exemplos específicos de casos para implementar meu cenário simples.

O projeto de solução abaixo está correto?

iptables -A INPUT [-m state] [-i eth1] --source 169.250.250.250 -p tcp
    --destination 169.1.1.1:42 --dport 22 --state NEW,ESTABLISHED,RELATED
    -j ACCEPT

Devo usar a mangletabela em vez de filter? E/ou FORWARDcorrente em vez de INPUT?

Responder1

Para encaminhar/redirecionar coisas você deve editar a tabela NAT.

Uma regra como essa provavelmente está mais próxima do que você precisa.

/sbin/iptables --table nat --append PREROUTING --protocol tcp \
               --source 169.250.250.250 --dport 22 \
               --jump REDIRECT --to-ports 42

Seria muito mais fácil e provavelmente melhor deixar o SSH na porta padrão e protegê-lo adequadamente. Usar uma porta alternativa retardaria apenas um invasor motivado por alguns segundos. Configure um sistema de prevenção de intrusões como denyhosts/fail2ban e desative a autenticação baseada em senha. Ou considere conexões ssh de entrada com limite de taxa.

Ver:

Responder2

Eu usaria o Shorewall para gerenciar tabelas de IP. Ele configura um firewall básico decente e fazer o que você deseja é simples. Adicione uma regra a /etc/shorewall/rules como:

Rede DNAT:169.250.250.250 loc:169.250.250.250 tcp 42 22

Como os outros, não sei por que você executa o sshd em outra porta. Se esta for uma porta da Internet, você pode querer verificar a porta batendo para mantê-la fechada, a menos que você acesse outra porta primeiro. Shorewall lida com isso de forma simples.

informação relacionada