나는 내 서버를 보호하기 위해 ZIP 폭탄을 사용한다
(idiallo.com)서론
- 인터넷 트래픽의 대부분은 봇이며, 이 중 일부는 악의적인 목적(스팸, 해킹 등)을 가진다.
- 작성자는 과거에 봇으로 인해 워드프레스 서버가 감염되거나 구글 검색에서 제외되는 등 피해를 겪음.
- 이를 방지하기 위해 Zip Bomb을 사용하기 시작함.
본론
-
Zip Bomb이란?
- 작지만 압축 해제 시 매우 큰 용량으로 확장되는 압축 파일.
- 1MB 압축 파일이 1GB로, 10MB는 10GB로 확장되어 서버를 마비시킴.
-
기존의 gzip 기능
- 웹에서는 전송 효율을 위해 gzip 압축을 사용함.
- 대부분의 봇도 gzip 압축을 지원함.
-
Zip Bomb을 통한 대응 방식
- 악성 봇으로 판단되면
200 OK
와 함께 gzip 압축된 Zip Bomb 파일을 응답함. - 이 파일을 열다가 봇이 서버에서 다운되거나 멈춤.
- 일반적으로 1MB(1GB 확장) 또는 10MB(10GB 확장)를 사용.
- 악성 봇으로 판단되면
-
Zip Bomb 생성 방법
dd if=/dev/zero bs=1G count=10 | gzip -c > 10GB.gz
-
/dev/zero
로 10GB의 0 바이트 데이터를 생성한 후 gzip으로 압축. - 결과물은 약 10MB 크기의 zip bomb.
-
-
서버 적용 예시
- 미들웨어에서 IP 블랙리스트 또는 악성 패턴을 감지하면 Zip Bomb 전송.
if (ipIsBlackListed() || isMalicious()) { header("Content-Encoding: deflate, gzip"); header("Content-Length: "+ filesize(ZIP_BOMB_FILE_10G)); readfile(ZIP_BOMB_FILE_10G); exit; }
결론
- Zip Bomb은 완벽한 방어책은 아님.
- 정교한 봇은 이를 감지하고 우회할 수 있음.
- 그러나 무차별 웹 크롤링을 하는 저급 봇에겐 효과적인 방어 수단.
- 일부 서버 리소스를 사용하더라도 보안을 위해 충분한 가치가 있음.
본 글과는 관련 없는 댓글인데, 즐겨보는 hada에 최근 악플 다는 사용자 몇몇이 눈에 띄게 증가한 거 같네요. 댓글이 없거나 몇 개 안 달리던 시절의 분위기랑 좀 많이 달라진 것 같습니다.
개인적으로는 차단 기능이 있던지, 다수의 신고를 받아서 댓글을 회색처리하는 기능이 있으면 어떨까 합니다.
인터넷 글은 누가 소유한 택배가 아닙니다
그럼 공개불가 소유물이면 인증절차를 넣었겠죠
길거리에 전단지 하나 놓고 거기에 맹독 뭍여놓는 거랑 비슷하다고 봐도 될것 같네요
agent가 bot이라고 오는 요청에 폭탄을 선사하겠다는건데..
너무 악의 적이네요. 어짜피 agent는 쉽게 숨길 수 있습니다. 진짜 악의적인 봇이면 악의를 드러내지 않습니다.
말씀하신 User-Agent든 원글에서 언급된 IP 기반 탐지든, 식별 정보는 위장이 가능하기에 악성 여부를 단정하기 어렵다는 점에 동의합니다. 실제 악의적인 봇은 더 교묘하게 접근하겠지요.
제 생각에는 이런 공격보다는, 차라리 부하 제한이 있는 크롤링 API를 제공해서 합법적인 자동화 접근은 허용하되 서버 자원은 보호하는 방향이 더 현실적인 '넛지'가 아닐까 싶습니다. ㅎㅎ
최근 LLM 연계 서비스로부터의 과도한 트래픽으로 인한 피해 사례가 간간이 보이는데, 사실상 그런 유형을 위한 방편으로도 볼 수 있을 것 같습니다. 예를 들어 챗지피티의 웹 검색 기능 등을 보면 그 유저 풀 특성상 '악의적이지 않은' 과도한 트래픽 발생 여지가 다분한데, 이들은 간단한 에이전트 매칭으로 쉽게 걸러진다고 들었습니다. 이게 진짜 의도가 맞다면 애꿎은 OpenAI 서버비(와 평판?)만 축내는 길이지만요..
OpenAI는 이미 그정도의 예의(?)는 갖출 수 있는 큰 .. 회사이긴 하죠.
그리고 아마도 사용자가 직접 검색 결과를 클릭하는 걸로는 부담스런 트래픽이 발생하긴 어려울 거라 생각되고, 크롤러가 너무 과도하게 동작하는 문제 아닐까요?
이런 글을 올리는 목적이 뭘까요?
실제로 크롤러를 돌리는 기업들이 이 글을 읽고 제외까지 할 가능성은 거의 없다고 생각하는데 말입니다.
그럼 이 글은 어떤 독자들을 대상으로 쓴 글일까요?
같이 블로그를 운영하는 사람들에게 이런 방법이 있다고 알려주는 소개글,
아니면 내 블로그 이렇게 보안 쎄니까 할 수 있으면 한번 크롤링 해보라는 어그로?
글을 올려서 얻는 게 뭘지 정말 궁금해집니다
물론 공적인 장소가 아니니까 그냥 별 생각 없이 올린 글일수도 있죠.
커뮤니티에서 별 생각 없이 댓글을 달 수도 있듯이요
저는 크롤러를 완전히 막을 수는 없으니 시도 자체를 안 받는 게 가장 좋을 텐데, 어그로를 끄는 의도가 궁금했습니다.