Nginx 악성 봇(로봇 SemrushBot) 차단

Last Updated on 2월 26, 2021 by 태랑(정현호)


유명한 봇 외 과도한 네트웍 트래픽을 사용하는 악성 봇들이 있습니다


이런 봇들을 Nginx에 설정하여 한번에 차단을 진행하려 합니다(특히 SemrushBot)

Apache 환경에서 설정을 하는 내용은 예전에 포스팅 한적이 있었습니다 해당글의 Nginx 버전이 될 것 같습니다.




1. 파일 생성

먼저 아래 경로에 bad_bot.conf 파일을 생성 후 차단할 agent 내용을 입력 합니다

[root]# vi /etc/nginx/conf.d/bad_bot.conf

map $http_user_agent $bad_bot {
        default         0;
        ~*360Spider                              1;
        ~*360Spider                              1;
<.....중략.....>
        ~*Zyborg                                 1;
        ~*ZyBorg                                 1;
}


내용이 많고 매우 긴 관계로 아래 첨부파일을 다운 받아서 사용하시면 됩니다
다운로드




2. nginx 적용 및 reload

2-1 다음으로 server 블럭에 아래 코드를 추가합니다.

if ($bad_bot) {
return 403;
}



2-2 그 다음 systemctl reload nginx 명령으로 설정을 적용해 줍니다.


2-3 적용 후 확인 해보니 정상적으로 차단이 이루어 지는 것을 확인 할 수 있습니다.

<…중략…>
403 ( SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
403 ( SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
403 ( SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
403 ( SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
403 ( SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
<…중략…>




3. agent bot 항목 관련

참조한 bad bot 리스트에서 아래 4개의 차단 대상은 지금 환경에서 제외 하였습니다.

~*Yandex
~*YandexBot
~*Baiduspider
~*BaiduSpider

관련 한 내용으로 저번 포스팅 내용처럼 해당 Robot은 중국 Search Engine 와 러시아의 Search Engine 입니다 보통 차단되는 이유는 수집해가는 크롤링 양이 많아 과도한 트래픽을 사용하기 때문 입니다
차단하게 되면 트래픽이 그만큼 줄어들게 됩니다 하지만 반대로 사이트나 블로그의 목적이나 특성상 많이 노출이 되거나 다양한 검색 엔진에서 검색이 되어야 하는 부분이 더 중요하다면 해당 Search Engine 도 허용을 하는것을 고려해 봐야 합니다.

운영하는 사이트의 정책이나 트래픽 소모량 , 운영하시는 분들의 판단에 따라서 2개의 bot 이외에 차단을 허용하거나 혹은 더 막을 필요가 있는 bot 은 추가하여 사용하시면 될 것 같습니다

그래서 지금 환경에서는 Yandex 와 Baiduspider 는 제외 하였으나 같이 차단을 하시려면 아래 4개의 라인을 추가로 더 설정하시면 됩니다.

~*Yandex                                 1;
~*YandexBot                              1;
~*Baiduspider                            1;
~*BaiduSpider                            1;


Ref link
shareablecode.com/agent-in-nginx [Link]


관련된 다른 글

답글 남기기