라이믹스 기반의 홈페이지를 운영중입니다.
봇 차단을 위해 이리저리 검색해 보다가, 다음 링크의 글을 봤습니다.
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]
-----------------
만약 코어의 .htaccess 파일을 꼭 수정해야 한다면, 맨 아래에 붙이는 것을 추천합니다. RewriteEngine On과 그 다음 줄 사이에 많은 내용을 끼워넣으면 업뎃할 때마다 골치아플 거예요.
Options 명령을 사용했을 때 서버가 에러를 뿜지 않는다면 특별히 문제가 되지는 않습니다만, 이것도 달랑 한 줄짜리여서 중간에 끼워 놓으면 업뎃할 때 빼먹기 딱 좋습니다. (차단과는 무관하고, 그냥 작성자의 주관이 들어간 설정인 듯 한데 개인적으로 반대하지는 않습니다. 정상적인 서버라면 이미 -Indexes 설정이 기본값으로 들어가 있겠지요.)
그나저나 저 파일은 10여년 전 기준으로 만들어진 것이라 지금은 저 목록에 없는 봇들이 오히려 더 말썽을 일으키는 경우도 흔하고, 해당 IP 대역들도 지금은 전혀 무관한 목적으로 사용되고 있을 가능성이 높습니다. 즉, 최근까지 꾸준히 업데이트된 차단목록이 아니라면 별 효과가 없을 가능성이 높아요. 저렇게 공개적으로 차단해 버렸는데 나쁜놈들도 바보가 아니라면 IP 바꾸고 user-agent 바꾸고 하죠. ㅎㅎ