¿Cómo puedo bloquear ciertas URL en Apache httpd cuando uso el pase de proxy?

¿Cómo puedo bloquear ciertas URL en Apache httpd cuando uso el pase de proxy?

Mi sitio utiliza Apache httpd para realizar el proxy inverso a una aplicación que se ejecuta en Express (aplicación Node.js). Tener 2 servidores express, uno para backend y otro para hosting frontend. En este momento estoy intentando bloquear solicitudes maliciosas que llegan a mi sitio para que devuelva una solicitud 404 o incorrecta.

Mi ejemplo de some-site-ssl.conf se encuentra a continuación, pero no parece que esté bloqueando los sitios web maliciosos, ¡cualquier ayuda sería increíble! Gracias.


<VirtualHost _default_:443>
      ServerAdmin webmaster@localhost

      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined

      SSLEngine on

      SSLCertificateFile      /etc/letsencrypt/live/some-site.com/fullchain.pem
      SSLCertificateKeyFile /etc/letsencrypt/live/some-site.com/privkey.pem
      Include /etc/letsencrypt/options-ssl-apache.conf

      RewriteEngine On
      RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?bad-word(-|.).*$  [NC]
      RewriteCond %{HTTP_REFERER} ^https://(www\.)?.*(-|.)?bad-word(-|.).*$  [NC]
      RewriteRule ^(.*)$ - [F,L]

      ProxyRequests On

      ProxyPass /api http://some-site.com:3000/api
      ProxyPassReverse /api http://some-site.com:3000/api

      ProxyPass / http://some-site.com:4226/
      ProxyPassReverse / http://some-site.com:4226/
</VirtualHost>

Respuesta1

Puedes controlar el acceso a cualquier recurso usando la Locationetiqueta y con ella puedes deshabilitar el acceso desde ciertos hosts a tus recursos, así:

<Location "/denied/resource">
    <RequireAll>
        Require not ip 1.2.3.4
        Require not host spammer.domain
        Require all granted
    <RequireAll>
</Location>

Los derechos de acceso se heredan de arriba a abajo, por lo que negar el acceso /prácticamente bloqueará a ese cliente de su sitio (a menos, por supuesto, que se le conceda acceso a un recurso de nivel inferior, por lo que es posible no tener acceso a /, pero estar poder acceder /this/one/). Verla documentación del servidor Apache HTTPpara más información.

Y como dijo @Freddy, deberías eliminar esa ProxyRequests Onlínea.

información relacionada