Pierwotnie napisałem to na webmasters.stackexchange.com , ale powiedziano mi, że otrzymam lepszy odbiór tutaj.
Przez ostatnie kilka dni cierpiałem na (prawdopodobnie nieumyślny) atak DDOS. Otrzymuję tak wiele żądań od agenta identyfikującego się jako „Mozilla / 4.0 (zgodny; ICS)”, że apache zjada całą dostępną pamięć.
W związku z tym chciałbym zablokować wszystkie żądania połączone z tym agentem użytkownika, więc próbowałem to zrobić w httpd.conf:
SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user
Ale kiedy ponownie uruchamiam apache, narzeka na używanie deny
tutaj. Bez konieczności owijania go w blok location
lub directory
, co oznaczałoby, że musiałbym dodać nowy blok dla każdej witryny, czy jest jakiś sposób, aby odmówić dostępu do całego serwera?
AKTUALIZACJA: Występuje błąd
- Ponowne uruchamianie serwera WWW apache2
Błąd składniowy w wierszu 4 pliku /etc/apache2/httpd.conf: odmowa niedozwolona tutaj [błąd]
źródło
<Location>
ponieważ zastępuje on wszelkie inne ograniczenia autoryzacji w<Directory>
, chyba że dodaszAuthMerging And
. Zobacz ostrzeżenie dotyczące bezpieczeństwaRequire
w dokumentach apache: httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requiremod_rewrite można skonfigurować na poziomie serwera zgodnie z dokumentacją:
Nie zapomnij uciec od wyrażenia regularnego w
RewriteCond
źródło
<!-- -->
do edycjiPod warunkiem, że składnia w wierszach SetEnv jest poprawna, powinieneś być w stanie przekazać to w conf w następujący sposób:
Powinno to umożliwić działanie na wszystkich wirtualnych hostach - właśnie przetestowane w wersji 2.2.24, działało jak urok.
źródło