NGINX/IPTables - Mascarar endereço IP

1. NGINX/IPTables - Mascarar endereço IP

Renan
cloudgamesbr

(usa Outra)

Enviado em 26/09/2019 - 23:26h

Fala pessoal, tudo certo?

Deixo aqui a minha dúvida para que, eventualmente, pessoas com maior conhecimento acerca do Nginx/IPTables possam me ajudar.

O problema é o seguinte, possuo uma aplicação que utiliza a porta 2083 funcionando da seguinte forma:

Usuário -> Servidor onde está o Proxy no NGinx (Máquina 1)-> IP Real da aplicação (Máquina 2).

Meu objetivo é que o usuário ao conectar (após o redirecionamento do nginx) na máquina 2 (onde a aplicação está hospedada), não consiga visualizar o IP da máquina real (com a finalidade de prevenir eventuais ataques DDoS).

Acontece que após se conectar com a aplicação e abrir o prompt de comando, ao digitar netstat -n, ele exibe o endereço IP Real da máquina (o que eu desejo esconder).

Seria possível fazer isso utilizando o próprio Nginx ou até mesmo alguma configuração de IPTables? Todos os redirecionamentos estão funcionando perfeitamente, apenas gostaria de esconder o endereço IP da máquina onde a aplicação está hospedada. A função MASQUERADE poderia servir para essa finalidade?

Muito obrigado!


  


2. Tenta isso

Bruno Cavalcanti
Bruno_Cavalcanti

(usa CentOS)

Enviado em 28/09/2019 - 13:40h

Pelo que entendi vc quer utilizar o nginx como proxy reverso,

Para proteger o acesso direto ao servidor de aplicação

Com isso, é só fazer da seguinte forma.

configure no NGINX um arquivo.confdentro de alguma pasta de include, ex, sites-enabled ou sites-available...
com esse conteúdo


server {

listen 80;

location / {

proxy_pass http://IP_do_servidor_de_aplicação;

}

}

reinicie o nginx e teste.

Em teoria, com essa configuração assim que você reiniciar, e digitar o ip do nginx no navegador, é para abrir a aplicação.

em relação a garantia de que a maquina cliente não acesse o servidor de aplicação, tem umas premissas.

A parte estática do site, o FrontEnd, em nenhum momemnto pode requisitar o servidor diretamente
ele as requisições tem que estar apontando ou para o IP do proxy reverso, (Não recomendado)
Ou tem que ser criada uma entrada de DNS com o nome da aplicação, apontando para o ip do proxy reverso, (Recomendado,)

Ai para garantir pode ser configurado no iptables do servidor de aplicação, que apenas o servidor de proxy reverso, nginx, possa acessar o mesmo.

Da seguinte maneira. (ou algo do tipo...)
iptables -A INPUT -p tcp --dport PORTA -j REJECT
Iptables -A INPUT -p tcp -s IP_NGINX --dport PORTA -j ACCEPT


Ou, se as maquinas estiverem em segmentos diferentes, pode ser tudo resolvido pelo firewall da rede.

Espero ter ajudado,














3. Re: NGINX/IPTables - Mascarar endereço IP

Renan
cloudgamesbr

(usa Outra)

Enviado em 28/09/2019 - 14:15h

Fala Bruno, tudo bem?

Obrigado por responder.

Acho que não fui muito claro na minha pergunta também. Eu possuo dois servidores distintos, e minha aplicação usa a porta 2083 para que os clientes se conectem. Como não utilizo a porta 80 e o protocol http, o código que você me forneceu eu acredito que não se aplica.

Quando o usuário vai se conectar (até aí está tudo certo), ele deve digitar o Login/pass normalmente. Nesse momento, é exibido o IP da máquina onde o proxy está hospedado, porém, quando o cliente se autentica e faz realmente o "login" na aplicação, por ele ter sido redirecionado pelo proxy para a outra máquina, no netstat -n agora passa a exibir endereço IP da máquina real, não mais o IP do proxy.

Estou procurando alguma forma de tentar esconder esse endereço IP da máquina real, entende? Para que fique exibindo por exemplo o endereço IP da máquina que tá funcionando como proxy, por exemplo. Eu realmente não sei se isso é possível.

O código que venho utilizando na máquina proxy:
stream {
upstream some_backend {
server ENDERECO_IP_ONDE_A_APLICAÇÃO_ESTA_HOSPEDADA:2083;
}
server {
listen 2083;
proxy_pass some_backend;
}
}

Muito obrigado!
Abraços.
Bruno_Cavalcanti escreveu:

Pelo que entendi vc quer utilizar o nginx como proxy reverso,

Para proteger o acesso direto ao servidor de aplicação

Com isso, é só fazer da seguinte forma.

configure no NGINX um arquivo.confdentro de alguma pasta de include, ex, sites-enabled ou sites-available...
com esse conteúdo


server {

listen 80;

location / {

proxy_pass http://IP_do_servidor_de_aplicação;

}

}

reinicie o nginx e teste.

Em teoria, com essa configuração assim que você reiniciar, e digitar o ip do nginx no navegador, é para abrir a aplicação.

em relação a garantia de que a maquina cliente não acesse o servidor de aplicação, tem umas premissas.

A parte estática do site, o FrontEnd, em nenhum momemnto pode requisitar o servidor diretamente
ele as requisições tem que estar apontando ou para o IP do proxy reverso, (Não recomendado)
Ou tem que ser criada uma entrada de DNS com o nome da aplicação, apontando para o ip do proxy reverso, (Recomendado,)

Ai para garantir pode ser configurado no iptables do servidor de aplicação, que apenas o servidor de proxy reverso, nginx, possa acessar o mesmo.

Da seguinte maneira. (ou algo do tipo...)
iptables -A INPUT -p tcp --dport PORTA -j REJECT
Iptables -A INPUT -p tcp -s IP_NGINX --dport PORTA -j ACCEPT


Ou, se as maquinas estiverem em segmentos diferentes, pode ser tudo resolvido pelo firewall da rede.

Espero ter ajudado,
















4. Ta certo

Bruno Cavalcanti
Bruno_Cavalcanti

(usa CentOS)

Enviado em 28/09/2019 - 19:00h

Acho que entendi mais ou menos... rsrs

Mas vamos la,

Quando vc digita no browser o ip do proxy reverso ele abre a aplicação normalmente na tela de autenticação.

Abre essa tela pelo firefox, abre o modo desenvolvedor (Inspecionar elemento F12), clica na aba rede, e depois disso autentica normalmente,

A primeira requisição que vc fez que abriu a tela de login foi para o NGINX,

QUando clicar para autenticar, provavelmente fará uma requisição POST enviando usuario e senha para autenticação

Dessa forma, tem como vc ver como (Sua maquina está fazendo a requisição, se para o ip do nginx, ou direto para o ip do servidor)

O certo é fazer a requisição para o ip do nginx.




















5. Re: NGINX/IPTables - Mascarar endereço IP

Renan
cloudgamesbr

(usa Outra)

Enviado em 28/09/2019 - 21:25h

Bruno, mas a aplicação não usa a porta 80, nem o protocolo HTTP. Acho que estaria mais próximo de um proxy tcp, algo do gênero =/

Bruno_Cavalcanti escreveu:

Acho que entendi mais ou menos... rsrs

Mas vamos la,

Quando vc digita no browser o ip do proxy reverso ele abre a aplicação normalmente na tela de autenticação.

Abre essa tela pelo firefox, abre o modo desenvolvedor (Inspecionar elemento F12), clica na aba rede, e depois disso autentica normalmente,

A primeira requisição que vc fez que abriu a tela de login foi para o NGINX,

QUando clicar para autenticar, provavelmente fará uma requisição POST enviando usuario e senha para autenticação

Dessa forma, tem como vc ver como (Sua maquina está fazendo a requisição, se para o ip do nginx, ou direto para o ip do servidor)

O certo é fazer a requisição para o ip do nginx.






















6. Massa

Bruno Cavalcanti
Bruno_Cavalcanti

(usa CentOS)

Enviado em 29/09/2019 - 09:25h

Então pq vc n usa haproxy pra fazer proxy reverso em camada 4?

Ele faz proxy reverso na camada de transporte. TCP...






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts