
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 Location
etiqueta 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 On
línea.