디렉토리의 모든 파일에 대해 "모두 거부"

디렉토리의 모든 파일에 대해 "모두 거부"

/cgi-bin/내 서버가 봇 등의 공격을 받아 , like search.cgi, YaBB.pl, gitweb.perl, perl, gitweb.pl, htsearch,및 on 등에서 다양한 파일을 찾고 있습니다 .

/ 에서 가능한 모든 파일 이름과 확장자에 대한 모든 액세스(403 Forbidden 헤더 보내기)를 거부하고 싶습니다 /cgi-bin. (이것은 공유 서버이므로 vhosts또는 이 아닌 .htaccess에만 액세스할 수 있습니다 httpd.)

.htaccess에서 cgi-bin시도했습니다.

deny from all

게다가

<FilesMatch "\.cgi?$">
        Order Allow,Deny
        Allow from All
</FilesMatch>

단지 확장을 위해서만 .cgi, 어느 쪽에도 행운이 없습니다.

의 모든 항목에 대한 액세스를 거부하려면 어떻게 해야 하나요 /cgi-bin/?

지시문에 모든 파일 이름과 확장자를 나열해야 합니까 <FilesMatch?

답변1

트래픽이 많이 발생하는 IP나 User-Agent를 알고 계시나요?

<Directory /cgi-bin>
  order deny,allow
  deny from all
</Directory>

대체,

RewriteRule   "cgi(.*)"   "go_away"

답변2

이를 달성하는 방법에는 여러 가지가 있습니다.

  1. 디렉토리 사용(Apache 2.2 버전):

    <Directory /var/www/cgi-bin/>
    order deny,allow
    deny from all
    </Directory>
    
  2. 재작성 조건 사용:

    RewriteCond %{REQUEST_URI} ^/cgi-bin
    RewriteRule .* - [END,R=406]
    

forbiden의 경우 403으로 원하는 코드로 406을 변경할 수 있습니다. 여기에서 상태 코드 목록을 찾을 수 있습니다.https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

그리고 더 많은 봇을 포괄하도록 재작성 조건을 확장할 수도 있습니다.

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]

이러한 규칙은 빈 사용자 에이전트, /cgi로 시작하는 요청, GET/HEAD/POST로 메서드 제한, /로 시작하지 않는 요청을 방지합니다.

  1. 보다 논리적인 방법을 사용하면 다음과 같습니다.

cgi-bin을 사용하지 않을 경우 웹 폴더에서 이동하거나 제거하세요.

관련 정보