/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
이를 달성하는 방법에는 여러 가지가 있습니다.
디렉토리 사용(Apache 2.2 버전):
<Directory /var/www/cgi-bin/> order deny,allow deny from all </Directory>
재작성 조건 사용:
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로 메서드 제한, /로 시작하지 않는 요청을 방지합니다.
- 보다 논리적인 방법을 사용하면 다음과 같습니다.
cgi-bin을 사용하지 않을 경우 웹 폴더에서 이동하거나 제거하세요.