É possível encaminhar o tráfego de uma porta para outra fora da caixa?

2

Eu tenho um dbms Oracle em uma máquina linux remota (aws linux, deve ser semelhante a rhel).

Infelizmente, a rede em que eu estou só permite o tráfego de saída para a porta 80,443 e 22.

Como estamos falando de uma máquina de teste, eu gostaria de fazer uma configuração para que cada tráfego de entrada na porta 80 seja imediatamente encaminhado para a porta 1521.

Eu não posso usar um proxy http, pois o tráfego seria de fato o tráfego personalizado do protocolo oracle na porta 1521, mas ouvi dizer que o linux permite simplesmente encaminhar de uma maneira pronta. Você poderia me dizer como fazer isso? Obrigado

    
por Phate 19.06.2018 / 22:46

2 respostas

2

Uma maneira de fazê-lo (infelizmente, não "fora da caixa", como você mencionou) é usar um programa chamado socat . É acessível na maioria dos repos de pacotes, então você pode usar yum install socat em seu cenário (no Debian, apt install socat works).

O comando usado é socat tcp-listen:[public accessible port],reuseaddr,fork tcp:localhost:[actual port] . No seu caso, seria sudo socat tcp-listen:80,reuseaddr,fork tcp:localhost:1521 . (Observe que você pode precisar de privilégios de superusuário dependendo da configuração.)

Para mais respostas, você pode procurar aqui .

    
por 20.06.2018 / 04:05
2

Aviso justo, não sou especialista em netfilter (iptables).

Qualquer distro Linux respeitável deve ter o netfilter instalado e habilitado em seu kernel. O Netfilter permite rotear, bloquear e manipular os pacotes que entram e saem do sistema. Tente executar isso como root na máquina do servidor:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 1521

Talvez seja necessário alterar a eth0 para o nome do dispositivo correto para o adaptador de rede local do servidor. Isso deve fazer com que todos os pacotes que chegam na porta 80 sejam recebidos pelo Oracle DBMS na porta 1521.

Eu fui em frente e procurei o que essas opções fazem (porque eu não estou super familiarizado com o gerenciamento manual do netfilter). Leme quebra:

-t nat -A PREROUTING

Isto seleciona a tabela NAT e acrescenta ( -A ) a nova regra à cadeia PREROUTING da tabela NAT. Geralmente, quando você está redirecionando de uma porta para outra, isso pertence à tabela NAT. A cadeia PREROUTING acontece muito cedo quando no processamento de pacotes recebidos pelo Netfilter. É a primeira cadeia para pacotes de entrada, normalmente.

-i eth0 -p tcp -dport 80

Estas são a parte do filtro da regra. Estamos dizendo a qual interface ( -i ) e protocolo ( -p ) você deseja que esta regra afete os pacotes. Neste exemplo, estamos criando uma regra para o tráfego tcp na interface eth0 . Também estamos dizendo qual porta de destino ( -dport ) procurar nos pacotes ... neste caso pacotes com uma porta de destino de 80 (tcp).

Quando você tenta se conectar à porta tcp 80 no servidor com o Oracle DBMS, os pacotes tcp que sua máquina envia terão uma porta de destino de 80 em seus cabeçalhos.

--j REDIRECT --to-ports 1521

Esta é a carne da regra. Aqui você está dizendo que os pacotes que correspondem aos filtros acima devem ser redirecionados ( --j REDIRECT ) para a porta 1521 ( --to-ports 1521 ). Quando o netfilter estiver no mesmo sistema que o aplicativo para o qual você deseja redirecionar o tráfego, use REDIRECT . Quando o aplicativo estiver em outro servidor, você deve usar DNAT (e especificar o IP e a porta).

Por favor, deixe-me saber se isso funciona.

Essas configurações não são persistentes; para torná-los persistentes, sugiro que você olhe para a instalação de iptables-persistent . Você pode encontrar mais informações aqui no StackOverflow .

    
por 20.06.2018 / 06:15