봇 차단 질문

Extra Form
PHP PHP 7.3
CMS Rhymix 2.0

라이믹스 기반의 홈페이지를 운영중입니다.

봇 차단을 위해 이리저리 검색해 보다가, 다음 링크의 글을 봤습니다.

https://github.com/bluedragonz/bad-bot-blocker/blob/master/.htaccess

 

이걸 적용하려고 봤더니, 이미 라이믹스가 .htaccess를 사용중인 것 같습니다.

 

제가 나름대로 조합해 봤는데, 다음과 같은 .htaccess 파일이 완성되었습니다.

이대로 사용해도 별 문제 없을까요?

특히, 기존에 없던 'Options All -Indexes' 구문이 있어도 괜찮을까요?

-------------------------

RewriteEngine On

 

# Block Bad Bots & Scrapers
SetEnvIfNoCase User-Agent "Aboundex" bad_bot
SetEnvIfNoCase User-Agent "80legs" bad_bot
SetEnvIfNoCase User-Agent "360Spider" bad_bot
...

 

# Vulnerability Scanners
SetEnvIfNoCase User-Agent "Acunetix" bad_bot
SetEnvIfNoCase User-Agent "FHscan" bad_bot

 

# Aggressive Chinese Search Engine
SetEnvIfNoCase User-Agent "Baiduspider" bad_bot

 

# Aggressive Russian Search Engine
SetEnvIfNoCase User-Agent "Yandex" bad_bot

 

<Limit GET POST HEAD>
Order Allow,Deny
Allow from all

 

# Cyveillance
deny from 38.100.19.8/29
deny from 38.100.21.0/24
deny from 38.100.41.64/26
deny from 38.105.71.0/25
deny from 38.105.83.0/27
deny from 38.112.21.140/30
deny from 38.118.42.32/29
deny from 65.213.208.128/27
deny from 65.222.176.96/27
deny from 65.222.185.72/29

Deny from env=bad_bot
</Limit>

 

Options All -Indexes

 

# block direct access to templates, XML schema files, config files, dotfiles, environment, etc.
RewriteCond %{REQUEST_URI} !/modules/editor/(skins|styles)/
RewriteRule ^(addons|common/tpl|files/ruleset|(m\.)?layouts|modules|plugins|themes|widgets|widgetstyles)/.+\.(html|xml)$ - [L,F]
RewriteRule ^files/(attach|config|cache/store)/.+\.(ph(p|t|ar)?[0-9]?|p?html?|cgi|pl|exe|[aj]spx?|inc|bak)$ - [L,F]
RewriteRule ^files/(env|member_extra_info/(new_message_flags|point))/ - [L,F]
RewriteRule ^(\.git|\.ht|\.travis|codeception\.|composer\.|Gruntfile\.js|package\.json|CONTRIBUTING|COPYRIGHT|LICENSE|README) - [L,F]

 

# static files
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.+)/(addons|files|layouts|m\.layouts|modules|widgets|widgetstyles)/(.*) ./$2/$3 [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.+)\.min\.(css|js)$ ./$1.$2 [L]

 

# all other short URLs
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule . index.php [L]
-----------------

 

 

  • profile

    만약 코어의 .htaccess 파일을 꼭 수정해야 한다면,  맨 아래에 붙이는 것을 추천합니다. RewriteEngine On과 그 다음 줄 사이에 많은 내용을 끼워넣으면 업뎃할 때마다 골치아플 거예요.

     

    Options 명령을 사용했을 때 서버가 에러를 뿜지 않는다면 특별히 문제가 되지는 않습니다만, 이것도 달랑 한 줄짜리여서 중간에 끼워 놓으면 업뎃할 때 빼먹기 딱 좋습니다. (차단과는 무관하고, 그냥 작성자의 주관이 들어간 설정인 듯 한데 개인적으로 반대하지는 않습니다. 정상적인 서버라면 이미 -Indexes 설정이 기본값으로 들어가 있겠지요.)

     

    그나저나 저 파일은 10여년 전 기준으로 만들어진 것이라 지금은 저 목록에 없는 봇들이 오히려 더 말썽을 일으키는 경우도 흔하고, 해당 IP 대역들도 지금은 전혀 무관한 목적으로 사용되고 있을 가능성이 높습니다. 즉, 최근까지 꾸준히 업데이트된 차단목록이 아니라면 별 효과가 없을 가능성이 높아요. 저렇게 공개적으로 차단해 버렸는데 나쁜놈들도 바보가 아니라면 IP 바꾸고 user-agent 바꾸고 하죠. ㅎㅎ

  • profile
    기진곰 님. 답변 고맙습니다.
    업데이트할 때 마다 설정을 변경하는 것은 제가 잘 관리해야죠. ^^

    다만, 코어수정 없이, 라이믹스에 이런 기능이 포함되면 참 좋을 것 같습니다.

    저도 질문 올리고 나서 보니, 해당 git이 업데이트 된 지 10년도 넘었다는 걸 뒤늦게 알았습니다.
    그래서 최근에 업데이트 된 다음과 같은 곳을 찾았습니다.
    https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/blob/master/_htaccess_versions/htaccess-mod_setenvif.txt

    이것 관련해서는 다른 글로 질문 올리도록 하겠습니다.
  • profile profile
    간단하게 차단하는 정도는 애드온으로 충분히 구현할 수 있습니다.
    CIDR 해석 등 필요한 재료는 코어에서 모두 제공합니다.
    그걸 활용해서 코어 수정 없이 구현할지, 그냥 코어 파일을 수정해서 쓸지는
    100% 사용자의 선택이고 책임이죠.
  • profile
    네, 답변 고맙습니다.
    제 말씀은 '코어'에서 해당 기능이 구현되면 좋겠다는 뜻이었습니다. ^^
  • profile profile

    어떤 기능의 특성상 모듈, 애드온 등의 형태로 만들어 배포하기 곤란하다면 당연히 코어에서 손을 써드립니다. 그러나 단순히 어떤 자료가 존재하지 않는다는 이유만으로 코어에서 구현하지는 않습니다. 피치 못할 사정이 아니라면 이미 존재하는 자료를 코어가 꿀꺽하지도 않습니다. 서드파티 시장의 자율성을 침범하고 싶지 않기 때문입니다.

     

    필요한 함수와 트리거 등은 모두 준비되어 있으니, 수요가 충분히 있다면 당연히 누군가가 시장에서 공급을 하겠지요. 만약 공급이 이루어지지 않는다면 생각보다 수요가 없는 것은 아닌지 생각해 보아야겠고요.^^