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...