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

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