Mein Server wird stark von Bots usw. angegriffen, die nach verschiedenen Dateien suchen /cgi-bin/
, search.cgi, YaBB.pl, gitweb.perl, perl, gitweb.pl, htsearch,
usw.
Ich möchte für alle möglichen Dateinamen und Erweiterungen in /cgi-bin
/ jeglichen Zugriff verweigern (einen 403-Forbidden-Header senden). (Dies ist ein gemeinsam genutzter Server, daher habe ich nur Zugriff auf .htaccess, nicht auf vhosts
oder httpd
).
In einer .htaccess in cgi-bin
Ich habe versucht
deny from all
sowie
<FilesMatch "\.cgi?$">
Order Allow,Deny
Allow from All
</FilesMatch>
für bloße .cgi
Erweiterungen, ohne Erfolg für beides.
Wie kann ich den Zugriff für alles in verweigern /cgi-bin/
?
Muss ich alle Dateinamen und Erweiterungen in einer <FilesMatch
Direktive auflisten?
Antwort1
Kennen Sie die IP oder den User-Agent, der für den hohen Datenverkehr verantwortlich ist?
<Directory /cgi-bin>
order deny,allow
deny from all
</Directory>
Alt,
RewriteRule "cgi(.*)" "go_away"
Antwort2
Es gibt viele Möglichkeiten, dies zu erreichen:
Verzeichnis verwenden (Apache-Version 2.2):
<Directory /var/www/cgi-bin/> order deny,allow deny from all </Directory>
Umschreibbedingung verwenden:
RewriteCond %{REQUEST_URI} ^/cgi-bin RewriteRule .* - [END,R=406]
Sie können 406 durch jeden beliebigen Code in 403 für Verboten ändern. Die Liste der Statuscodes finden Sie hier:https://en.wikipedia.org/wiki/Liste_der_HTTP-Statuscodes
Und Sie können die Umschreibbedingung sogar erweitern, um mehr Bots abzudecken:
RewriteCond %{HTTP_USER_AGENT} ^-? [OR]
RewriteCond %{REQUEST_URI} ^/cgi [OR,NC]
RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$ [OR]
RewriteCond %{REQUEST_URI} !^/
RewriteRule .* - [END,R=406]
Diese Regeln verhindern einen leeren Useragenten, Anfragen, die mit /cgi beginnen, beschränken die Methode auf GET/HEAD/POST und Anfragen, die nicht mit / beginnen
- Verwenden Sie den logischeren Weg:
Verschieben oder entfernen Sie cgi-bin einfach aus Ihrem Webordner, wenn Sie es nicht verwenden.