Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Proxy Reverso com Apache2

Proxy Reverso com Apache2

Expor detalhes da nossa aplicação como IP e porta não é uma boa alternativa principalmente quando começamos a aumentar o fluxo de acesso, um atacante pode usar essas informações para derrubar nosso serviço.

Pensando em como resolver esse problema uma alternativa é usar um proxy reverso tentar dificultar a vida do atacante, agora ele não terá acesso direto ao servidor e sim a um proxy que internamente vai chamar um ou vários outros servidores.

Nessa talk converso sobre como podemos configurar um proxy usando o apache2

Avatar for Mattheus Cassundé

Mattheus Cassundé

October 07, 2023
Tweet

More Decks by Mattheus Cassundé

Other Decks in Programming

Transcript

  1. Criar um servidor de proxy que receberá as requisições dos

    clientes e direcioná-las para o servidor da aplicação Uma solução
  2. servidor expondo porta 8080 http://app.dominio.com.br proxy reverso na porta 80

    Servidor de DNS app.dominio.com.br = 192.123.454.66 192.123.454.66 192.123.454.XX
  3. servidor expondo porta 8080 http://app.dominio.com.br proxy reverso na porta 80

    server 1 server 2 server 1.1 proxy reverso na porta 80
  4. Segurança Como estamos colocando uma camada a frente da nossa

    aplicação os atacantes precisam passar primeiro por essa camada
  5. Segurança • Realizar Filtros de requisições TIP • Servidores web

    disponibilizados por linguagens ou frameworks são simples • Criptografia SSL a cargo do Proxy Reverso • Autenticação & Autorização TIP
  6. Performance • Maior rapidez no tráfego de dados • Mais

    tempo de stress para sua aplicação ficar indisponível • GZIP é a forma mais conhecida
  7. • Configurar DNS para apontar para IP • Configurar proxy

    reverso para sempre que chegar alguma chamada desse dns redirecione para um outro endereço Agenda
  8. <VirtualHost *:80> ServerName subdominio.dominio.com DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log

    combined ProxyPass / http://192.168.1.125:8080/ ProxyPassReverse / http://192.168.1.125:8080/ RewriteEngine on RewriteRule "^/$" "/context/login.xhtml" [PT] </VirtualHost>
  9. <VirtualHost *:80> ServerName subdominio.dominio.com DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log

    combined ProxyPass / http://192.168.1.125:8080/ ProxyPassReverse / http://192.168.1.125:8080/ RewriteEngine on RewriteRule "^/$" "/context/login.xhtml" [PT] </VirtualHost> Não pode esquecer essa barra
  10. <VirtualHost *:80> ServerName subdominio.dominio.com DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log

    combined ProxyPass / http://192.168.1.125:8080/ ProxyPassReverse / http://192.168.1.125:8080/ RewriteEngine on RewriteRule "^/$" "/context/login.xhtml" [PT] </VirtualHost> Não pode esquecer essa barra Mesmo nome do arquivo que fizemos no passo anterior
  11. <VirtualHost *:80> ServerName subdominio.dominio.com DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log

    combined ProxyPass / http://192.168.1.125:8080/ ProxyPassReverse / http://192.168.1.125:8080/ RewriteEngine on RewriteRule "^/$" "/context/login.xhtml" [PT] </VirtualHost> Não pode esquecer essa barra Mesmo subdominio configurado no servidor de DNS Mesmo nome do arquivo que fizemos no passo anterior Redireciona para contexto e página inicial
  12. ➜ ~ sudo systemctl stop apache2 Gerenciando o Apache ➜

    ~ sudo systemctl start apache2 ➜ ~ sudo systemctl restart apache2 ➜ ~ sudo systemctl status apache2 ➜ ~ sudo systemctl reload apache2