서버의 모든 사이트에서 사용자 에이전트를 어떻게 차단합니까?


9

나는 원래 webmasters.stackexchange.com에 게시 했지만 여기에서 더 나은 수신을 얻을 수 있다고 들었습니다.


지난 며칠 동안 (아마도 부주의 한) DDOS 공격으로 고통 받고 있습니다. 아파치가 사용 가능한 모든 메모리를 통해 먹는 "Mozilla / 4.0 (호환; ICS)"로 식별되는 에이전트로부터 요청이 너무 많습니다.

결과적으로이 사용자 에이전트와 함께 제공되는 모든 요청을 차단하고 싶습니다. httpd.conf에서이 작업을 시도했습니다.

SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user

그러나 아파치를 다시 시작하면 deny여기 사용에 대해 불평 합니다. location또는 directory블록 으로 묶지 않고 각 사이트에 새 블록을 추가해야한다는 것을 의미하므로 전체 서버에 대한 액세스를 거부 할 수있는 방법이 있습니까?


업데이트 : 내가 얻는 오류


  • /etc/apache2/httpd.conf의 라인 4에서 웹 서버 apache2 구문 재시작 오류 : 여기서 거부 할 수 없음 [실패]

답변:


7

지금은 오래된 질문처럼 보이지만 위와 같은 신경에서 답을 찾고 싶었습니다. 그것은 아주 잘으로이 아니다 - 그것은되어야한다고 나에게 것 <Location "/">, 그리고는 SetEnvIf괄호가 인용 될 필요가 있으므로 정규 표현식을 필요로한다.

이것은 모든 vhost에서 액세스 제어를 적용하는 데 효과적이었습니다.

SetEnvIfNoCase User-Agent "^Mozilla/4.0 \(compatible; Synapse\)" bad_ua
<Location "/">
    Deny from env=bad_ua
</Location>

가상 호스트 정의 전에이를 포함 시키십시오.


(Apache 2.4와 동등한 기능) 을 추가하지 않으면 <Location>다른의 권한 부여 제한을 무시하므로 주의해서 사용 <Directory>하십시오 AuthMerging And. Require아파치 문서 에 관한 보안 경고를 참조하십시오 : httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require
Cedric Knight

4

mod_rewrite는 문서에 따라 서버 수준에서 구성 할 수 있습니다.

RewriteCond %{HTTP_USER_AGENT} "Mozilla/4\.0 \(compatible; ICS\)" [nocase]
RewriteRule ^.*$ - [forbidden,last]

에 정규식을 탈출하는 것을 잊지 마십시오 RewriteCond


1
주의 : 대시는 복사 할 때 실제 대시가 아닙니다. 편집을 시도했지만 SF가 내 편집이 너무 작다고 불평합니다. 어쨌든 고마워, 치료를합니다!
Thibaut Barrère

@ ThibautBarrère 정말로 필요한 경우 편집에 보이지 않는 부분 <!-- -->을 추가하여 작은 편집 한계를 무시할 수 있습니다
hanshenrik

1

SetEnv 행의 구문이 올 바르면 다음과 같이 conf에이를 던질 수 있습니다.

<Location *>
SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user
</Location>

2.2.24에서 테스트 된 모든 가상 호스트에서 작동하도록 매력적으로 작동했습니다.


이것은 오류가 없다는 점에서 더 좋지만 사용자 에이전트를 스푸핑하는 동안 거부되지 않습니다. 왜 그런지 아십니까?
Tom Wright
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.