로그 테일링(Log Tailing)의 미학: 서버를 스쳐가는 봇(Bot)들의 세계

검은 터미널 화면 위로 쏟아지는 하얀 텍스트의 향연. 시스템 관리자나 백엔드 개발자라면 누구나 공감할 만한 순간이 있습니다. 바로 tail -f access.log 명령어를 입력하고 멍하니 로그를 바라볼 때입니다.

끊임없이 올라가는 로그를 보고 있으면 묘한 안정감이 듭니다. 일종의 '디지털 불멍'이라고 할까요? 하지만 그 평온함 속에서도 호기심은 피어오릅니다. "지금 내 서버 문을 두드리는 저 녀석은 누구일까?"

로그를 자세히 들여다보면 순수한 실제 사용자보다는, 인터넷의 바다를 헤엄치는 수많은 '봇(Bot)'들이 대다수임을 알게 됩니다. 이번 포스트에서는 로그 테일링 중에 마주치는 다양한 크롤러 봇들의 정체와 그 특징에 대해 정리해 봅니다.


봇(Bot), 서버의 불청객인가 손님인가



웹 크롤러(Web Crawler) 또는 스파이더(Spider)라 불리는 이들은 인터넷상의 정보를 수집하기 위해 자동화된 스크립트로 웹사이트를 방문합니다.

1. 예의 바른 봇 (Polite Bots)

자신의 정체(User-Agent)를 명확히 밝히고, robots.txt 규약을 준수하며, 서버에 과부하를 주지 않는 적절한 주기로 방문하는 봇들입니다. 이들은 검색 엔진 노출 등 우리에게 이득을 가져다주는 고마운 존재들입니다.

2. 무례한 봇 (Bad Bots)

User-Agent를 일반 브라우저처럼 위장하거나(Spoofing), 정체를 숨긴 채 접근합니다. 심지어 robots.txt를 무시하고 DDoS 공격에 가까운 속도로 요청을 퍼부어 서버 자원을 고갈시키기도 합니다. 이런 녀석들은 방화벽 차단 대상 1순위입니다.


주요 봇(Bot) 완전 정복

로그 테일링 중 자주 목격되는 주요 봇들의 리스트를 정리했습니다. User-Agent 문자열을 기반으로 그들의 정체와 목적을 파악해 봅시다.

봇 이름 (User-Agent) 운영 주체 목적 및 특징 IP 대역 특징 (참고용)
Googlebot Google 구글 검색 인덱싱을 위한 메인 크롤러. 가장 환영받는 손님. 66.249.x.x 등 (DNS 조회로 확인 필요)
Mediapartners-Google Google 구글 애드센스(AdSense) 문맥 분석용 봇. 광고 송출을 위해 페이지 내용을 파악함. 66.249.x.x
Google-InspectionTool Google 서치 콘솔의 URL 검사 도구. 사용자가 직접 인덱싱 요청 시 발생. 66.249.x.x
Bingbot Microsoft Bing 검색 엔진 크롤러. 구글 다음으로 중요한 검색 봇. 157.55.x.x, 40.77.x.x
Yeti Naver 네이버 검색 엔진 크롤러. 한국 웹사이트라면 필수적인 방문자. 210.117.x.x, 114.111.x.x
DuckDuckBot DuckDuckGo 개인정보 보호를 중시하는 덕덕고의 검색 크롤러. 20.191.x.x (MS Azure 대역 사용)
YandexBot Yandex 러시아 최대 검색 엔진. 러시아권 트래픽이 없다면 리소스만 소모함. 5.255.x.x, 77.88.x.x
Baiduspider Baidu 중국 최대 검색 엔진. 매우 공격적인 크롤링으로 유명하며, 중국 서비스가 아니라면 차단하기도 함. 116.179.x.x, 220.181.x.x
GPTBot OpenAI ChatGPT 등의 AI 모델 학습용 데이터를 수집하는 봇. 20.15.x.x (Azure 대역)
ChatGPT-User OpenAI ChatGPT 사용자가 브라우징 기능을 통해 링크를 참조할 때 발생하는 트래픽. -
Bytespider ByteDance 틱톡(TikTok) 모기업의 봇. 최근 매우 공격적인 수집으로 악명이 높음. 47.128.x.x 등 다양함
PetalBot Huawei 화웨이의 검색 엔진(Petal Search) 봇. 모바일 중심이며 역시 수집 빈도가 높음. 114.119.x.x
AhrefsBot Ahrefs SEO 분석 도구. 사이트 평판 분석용. 서버 부하를 꽤 주는 편. 54.36.x.x
SemrushBot Semrush SEO 마케팅 및 분석 도구. Ahrefs와 유사한 성격. 46.229.x.x
DotBot Moz Moz의 SEO 분석 도구. 링크 데이터 구축용. 216.244.x.x
Amazonbot Amazon 알렉사(Alexa) 및 아마존 서비스 개선을 위한 크롤러. 52.95.x.x 등 AWS 대역
FreshRSS / Reeder Open Source 개인이 사용하는 RSS 리더기. 봇이라기보다 사용자가 구독을 갱신하는 요청. 사용자 IP
python-requests / curl - 스크립트 도구. 개발자가 테스트용으로 쓰기도 하지만, 자동화된 공격 봇일 확률도 높음. -
peer39_crawler Peer39 문맥 광고 분석 툴. 광고 적합성 판단 목적. -

내 마음대로 정하는 봇 계급도



로그를 보며 느끼는 지극히 주관적으로 봇의 등급을 정리했습니다. 특히 운영자의 철학과 트래픽 타겟에 따라 이 계급은 언제든 바뀔 수 있음을 밝혀둡니다.

🏆 1그룹: VIP 손님 (어서 오십시오!)

"트래픽을 가져다주시는 귀한 분들이자, 내 서버의 존재 이유입니다. 가장 소중한 손님들입니다."

  • 멤버: Googlebot, Bingbot, Yeti, DuckDuckBot, Mediapartners-Google, YandexBot, FreshRSS, Reeder
  • 이유:
  • 검색 엔진(Googlebot, Yeti, Bingbot): 이들이 없으면 웹 서비스는 무인도나 다름없습니다.
  • YandexBot: 러시아와 동유럽권 트래픽에 관심이 있다면 이들은 구글만큼이나 중요합니다. 개인적인 경험상 꽤 예의 바르게(Polite) 접근하며, 글로벌한 트래픽을 꿈꾼다면 반드시 챙겨야 할 1등 시민입니다.
  • 구독기(FreshRSS, Reeder): 검색 유입은 아니지만, 내 글을 받아보기 위해 직접 RSS를 등록한 '진성 구독자' 분들의 요청입니다. 트래픽 확산보다 더 중요한 '찐팬'들이니 VVIP 대접이 마땅합니다.

😐 2그룹: 일반 시민 (지나가세요~ 나쁘진 않네요)

"큰 이득이 당장 보이지 않아도, 잠재력이 있거나 무해한 존재들입니다."

  • 멤버: Baiduspider, ChatGPT-User, Google-InspectionTool, Amazonbot
  • 이유:
  • Baiduspider: 중국의 거대한 인구를 생각하면 무시할 수 없는 잠재 시장입니다. (중국 내 접속 차단 이슈 등의 '카더라'가 있어 살짝 찜찜하긴 하지만) 그래도 명색이 중국 대표 검색 엔진인데, 막을 이유는 없습니다.
  • 기타: ChatGPT-UserAmazonbot 등은 딱히 해를 끼치지 않으며, 누군가 내 글을 참조하고 있다는 신호이므로 기분이 나쁘지 않습니다. 가볍게 용인해 줍니다.

😤 3그룹: 불청객 (오지 마... 제발...)

"이름표(User-Agent)는 달고 있어서 차마 막지는 않는데... 솔직히 안 왔으면 좋겠습니다. 리소스만 축내고, 예의도 없으며, 나에게 전혀 도움 안 되는 녀석들입니다."

  • 멤버: Bytespider, PetalBot, AhrefsBot, SemrushBot, DotBot, python-requests, curl
  • 이유:
  • 공격적인 수집가(Bytespider, PetalBot): 최근 가장 골칫덩어리입니다. 마치 DDoS 공격하듯 무식하게 긁어가는 빈도가 잦아 서버 관리자를 피곤하게 만듭니다.
  • SEO 장사꾼(Ahrefs, Semrush): 내 데이터를 가져다가 자기들 유료 서비스 분석 자료로 씁니다. 정작 나에게 트래픽을 돌려주지는 않으니 얄밉기 그지없습니다.

  • 정체불명 스크립트: python-requests, curl 등으로 위장 없이 들어오는 요청은 대부분 무단 스크래핑이거나 취약점 스캔일 확률이 높습니다. 가장 기분이 나쁩니다. 정신건강을 위해서 자주 보이는 IP는 바로 fail2ban 처리 합니다.

image


마치며

로그 테일링은 단순한 모니터링을 넘어, 내 서버가 전 세계의 네트워크와 어떻게 상호작용하고 있는지를 보여주는 창입니다.

비록 Bytespider 같은 녀석들이 무식하게 긁어갈 때면 iptables로 막아버리고 싶은 충동이 들기도 하지만, 자신의 이름(UA)이라도 정직하게 밝히고 들어오는 것은 그나마 '최소한의 예의'라고 생각하며 쓴웃음을 짓습니다.

오늘도 멍하니 흐르는 로그를 바라보며 생각합니다.

"그래, 이름이라도 밝히니 들어오게는 해줄게. 대신 적당히 좀 긁어가라!"