Wie kann ich bestimmte URLs in Apache httpd blockieren, wenn ich einen Proxy-Pass verwende?

Wie kann ich bestimmte URLs in Apache httpd blockieren, wenn ich einen Proxy-Pass verwende?

Meine Site verwendet Apache httpd, um den Reverse-Proxy für eine App zu erstellen, die in Express ausgeführt wird (Node.js-App). Ich habe 2 Express-Server, einen für das Backend und einen für das Frontend-Hosting. Im Moment versuche ich, böswillige Anfragen zu blockieren, die an meine Site gesendet werden, damit sie eine 404- oder fehlerhafte Anfrage zurückgibt.

Unten sehen Sie mein some-site-ssl.conf-Beispiel, aber es sieht nicht so aus, als ob es die bösartigen Websites blockiert. Jede Hilfe wäre super!! Danke.


<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>

Antwort1

Mit dem Tag können Sie den Zugriff auf jede Ressource steuern Locationund den Zugriff bestimmter Hosts auf Ihre Ressourcen deaktivieren:

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

Die Zugriffsrechte werden von oben nach unten vererbt. Wenn Sie also den Zugriff auf verweigern, /wird dieser Client praktisch von Ihrer Site ausgeschlossen (es sei denn natürlich, der Zugriff wird auf eine Ressource auf niedrigerer Ebene gewährt, sodass es möglich ist, keinen Zugriff auf zu haben /, aber auf zugreifen zu können /this/one/). Siehedie Apache HTTP-Server-DokumentationFür mehr Information.

Und wie @Freddy sagte, sollten Sie diese ProxyRequests OnZeile wirklich entfernen.

verwandte Informationen