Árvore de páginas

Configurando um proxy reverso com apache 2.4 + Linux

Guia passo a passo

  1. Esta atividade tem como pré-requisito um Sistema operacional linux com apache 2.4
  2. Instale o apache no seu servidor com os seguintes módulos: mod_proxy, mod_xml2enc, mod_proxy_html, mod_unique_id, mod_ssl
  3. Caso deseje que o apache funcione como um WAF, instale o modulo mod_security2
  4. Crie a pasta root do seu site com o comando abaixo:

    mkdir /var/www/nomeExterno.com.br
  5. Adicione no arquivo de configurações do apache /etc/httpd/conf/httpd.conf (pode mudar dependendo da distro) o conteúdo abaixo:

    <VirtualHost nomeExterno.com.br:443>
            ServerName nomeExterno.com.br
            SetEnv nokeepalive ssl-unclean-shutdown
    
            ErrorLog "logs/nomeExterno.com.br-error_log"
            CustomLog "logs/nomeExterno.com.br-access_log" combined
    
            DocumentRoot /var/www/nomeExterno.com.br
    
            SSLEngine on
            SSLCertificateFile /pasta/unimed.der
            SSLCertificateKeyFile /pasta/certificadoUnimed.rsa
            SSLCACertificateFile /pasta/ca.der
            SSLVerifyClient require
            SSLVerifyDepth 1
    
            SSLProxyEngine On
            SSLProxyMachineCertificateFile /pasta/certificadoUnimed.pem
            SSLProxyCACertificateFile /pasta/ca.der
            SSLProxyVerify require
            SSLProxyVerifyDepth 1
            SSLProxyCheckPeerName off
            SSLProxyCheckPeerCN off
            SSLProxyCipherSuite kRSA:aDH:AES:SHA1:HIGH:!aNULL:!eNULL
    
            Redirect /htz-foundation /htz-foundation/
            ProxyPass /htz-foundation/ https://nomeInterno.com.br/htz-foundation/
            ProxyPassReverse /htz-foundation/ https://nomeInterno.com.br/htz-foundation/
    
            <Directory /var/www/nomeExterno.com.br>
                    Options -Indexes
                    AllowOverride None
            </Directory>
    
            <Location /htz-foundation>
                    Order allow,deny
                    allow from all
            </Location>
    
    </VirtualHost>
    
    
  6. Edite as configurações demonstradas acima de acordo com os nomes externos e internos definidos pela sua organização de cada serviço, substituindo os nomes “nomeExterno.com.br” e “nomeInterno.com.br”.

  7. Exporte os certificados com os seguintes comandos:

    # Certificado da Unimed para o SSL
    keytool -importkeystore -srckeystore certificado.keystore -destkeystore certificadoUnimed.p12 -srcstoretype jks -deststoretype pkcs12 -alias "alias do certificado da unimed"
    openssl pkcs12 -in  certificadoUnimed.p12 -out certificadoUnimed.pfx
    openssl x509 -outform der -in unimed.pfx -out unimed.der
    
    # Ca
    keytool -importkeystore -srckeystore certificado.keystore -destkeystore Ca.p12 -srcstoretype jks -deststoretype pkcs12 -alias "alias do ca do certificado"
    openssl pkcs12 -in  ca.p12 -out ca.pfx
    openssl x509 -outform der -in ca.pfx -out ca.der
    
    
    # Certificado da Unimed para SSLProxy
    openssl pkcs12 -in certificadoUnimed.p12 -out certificadoUnimed.key -nocerts -nodes
    openssl rsa -in certificadoUnimed.key -out certificadoUnimed.rsa
    openssl pkcs12 -in certificadoUnimed.p12 -out certificadoUnimed.pem -clcerts -nokeys
    cat certificadoUnimed.rsa >> certificadoUnimed.pem
    
    
    # Excluindo os arquivos desnecessarios
    rm certificadoUnimed.p12 certificadoUnimed.pfx ca.p12 ca.pfx certificadoUnimed.key
    
    
  8. Reinicie o apache e teste o tráfego do PTU da Unimed Brasil > Unimed Foundation.

Considerações

  1. Com o mod_security2 habilitado, existe a possibilidade de bloqueios (código 403), onde cada acesso deve ser analisado e tratado de acordo com a necessidade de cada organização.
  2. Caso possua, confira suas configurações de firewall e IDS para não bloquear suas aplicações de forma indevida.
  3. Os módulos citados são encontrados na página oficial do apache https://httpd.apache.org/docs/2.4/mod/

Artigos relacionados