제 서버에 CrowdSec을 세우고, 딱 하룻밤이 지났을 때였어요.
명단을 열어봤더니, 낯선 손님이 한 명 잡혀 있더라고요.

불가리아에서 온 IP 하나가 제 서버 SSH 문을 54번 두드렸고, 그대로 차단당했어요.
제가 잠든 사이에요.
저는 아무것도 안 했습니다. 그냥 방범대를 하나 세워뒀을 뿐이에요.
※ CrowdSec : 서버 로그를 실시간으로 들여다보면서, 수상한 행동 패턴을 찾아내는 보안 도구예요. 여기에 하나 더 붙는 게 있는데, 전 세계 사용자들이 잡아낸 나쁜 IP 명단을 서로 공유해요. 우리 동네에서 잡힌 놈이 옆 동네엔 아예 못 들어가는 거죠. 그래서 저는 얘를 동네 방범대라고 부르기로 했어요.
잠깐, 정문 경비는 이미 있잖아요
맞아요. 2편에서 클라우드플레어를 정문 경비로 세워뒀죠.
그래서 저도 처음엔 똑같이 생각했어요.
“경비 아저씨 있는데 방범대를 또 뽑아야 하나?”
정문 경비는 밖에서 오는 트래픽을 봐요. DDoS 같은 대규모 공격을 막고, 알려진 악성 봇을 걸러내죠.
근데 이 경비 아저씨한테는 치명적인 약점이 하나 있어요.
집 안에서 무슨 일이 일어나는지는 모른다는 거예요.
예를 들면 이런 것들이요.
- 누가 워드프레스 로그인 페이지에 비밀번호를 100번 연속 찍어보는 것
- SSH 포트로 낯선 IP가 계속 접속을 시도하는 것 (서두의 그 불가리아 손님처럼요)
- 이미 들어와서 이상한 요청을 반복하는 것
이런 건 경비 아저씨 눈엔 그냥 “정상적인 방문”으로 보여요. 겉모습만 보면 문제가 없거든요.
게다가 원본 서버 IP가 어디선가 노출되면, 아예 정문을 안 거치고 담을 넘어 들어오는 공격도 있어요. 이건 정문 경비가 존재조차 모르고요.
CrowdSec은 정문이 아니라 집 안 CCTV 겸 방범대예요. 실제 로그를 들여다보면서 “얘 패턴이 이상한데?” 하고 직접 판단하죠.
| 클라우드플레어 (정문 경비) | CrowdSec (집 안 방범대) | |
|---|---|---|
| 보는 위치 | 인터넷 ↔ 내 서버 사이 | 내 서버 안 로그 |
| 잘하는 것 | DDoS, 대규모 악성 트래픽 | 로그인 무차별 대입, 이상행동, SSH 방어 |
| 약점 | 서버 안 사정·우회 공격은 모름 | 대규모 트래픽 폭탄엔 약함 |
정리하면, 둘 중 하나만 있으면 나머지 구멍이 그대로 뚫려 있는 거예요.
정문 경비 + 집 안 방범대. 이게 정석이더라고요.
그래서 조직을 이렇게 짰습니다
이번에 세운 건 사실 사람 하나가 아니라 팀 하나예요.
SSH 로그인 기록
걸린 나쁜 IP들
“이 IP는 나쁜 놈”이라고 판단합니다.
혼자 지키는 게 아니라, 전 세계가 명단을 돌려봅니다.
방범대 상황실 (엔진)
우리 집 로그를 계속 들여다봐요. 웹 접속 기록이랑 SSH 로그인 기록을 실시간으로 읽으면서, “이 IP는 나쁜 놈”이라고 판단해서 명단을 만들어요.
참고로 지난 8일 동안 이 친구가 읽어들인 로그가 11만 줄이 넘어요. 사람이 볼 수 있는 양이 아니죠.
근데 여기서 중요한 게 있어요.
상황실은 명단만 만들어요. 실제로 문을 잠그진 않아요.
그래서 명단을 받아서 진짜로 쫓아내는 실행 담당이 따로 필요해요.
※ 바운서(Bouncer) : 상황실이 만든 명단을 받아서, 실제로 문 앞에서 쫓아내는 담당이에요. 클럽 입구 기도 아저씨라고 보시면 돼요.
방범대원 1호 — 뒷문 담당
서버 대문을 지켜요. SSH처럼 클라우드플레어를 안 거치고 직접 들어오는 트래픽을 막아요. 서두에 보신 그 불가리아 손님을 잡은 게 이 친구예요.
방범대원 2호 — 정문 담당
이쪽이 좀 특이해요. 서버 앞이 아니라 클라우드플레어 정문에 명단을 직접 전달해요. 그러면 나쁜 IP는 아예 우리 집 근처에도 못 와요.
정문 경비랑 우리 방범대가 명단을 공유하는 셈이죠.
설치 얘기는 짧게
설치법은 여기서 자세히 안 다룰게요. 환경마다 다르고, 솔직히 이런 건 AI한테 물어보는 게 제일 빨라요. 저도 AI한테 물어가며 세웠거든요.
대신 저처럼 헤매지 마시라고, 삽질한 것 하나만 남겨둘게요.
CrowdSec 깔면 시나리오가 50개 넘게 같이 깔려요. SSH 무차별 대입부터 워드프레스 스캔, 유명한 취약점 공격까지요.
근데 전부 자동 차단되는 게 아니에요.
시나리오마다 “탐지만 할지, 차단까지 할지”가 다르게 설정돼 있거든요. 오탐 위험이 큰 몇 개는 일부러 알림만 울리게 되어 있어요.
저는 이걸 모르고 “왜 이 공격은 탐지만 되고 안 막히지?” 하며 한참을 헤맸어요.
설치했다고 끝난 게 아니라, 내 서버에서 실제로 뭐가 잡히고 뭐가 안 잡히는지 한 번은 직접 들여다봐야 한다는 걸 그때 알았어요.
저를 노린 게 아니었어요
며칠 뒤에 명단을 열어보다가, 좀 이상한 걸 발견했어요.

Jira 취약점 공격이 잡혀 있더라고요.
※ Jira : 회사에서 프로젝트나 업무를 관리할 때 쓰는 협업 도구예요. 제 서버엔 이런 거 없어요. 워드프레스 블로그 하나 돌리는 게 전부거든요.
없는 문을 두드린 거예요.
독일이랑 미국에서 온 IP가, 있지도 않은 Jira의 오래된 취약점을 찔러보고 갔어요. 8일 동안 이런 시도가 15번 있었고요.
처음엔 좀 당황했는데, 곱씹어보니 이게 더 무서운 얘기더라고요.
저를 노린 게 아니었어요.
공격자는 제 서버에 뭐가 깔려 있는지 알고 온 게 아니에요. 그냥 인터넷 전체에 그물을 던지듯 뿌리고 다니는 거예요. Jira 문 두드려보고, 워드프레스 문 두드려보고, SSH 문 두드려보고. 하나라도 열려 있으면 그때 들어가는 거죠.
그러니까 “내 블로그는 작아서 아무도 관심 없어”라는 말은 성립이 안 돼요.
애초에 관심 자체가 없거든요. 그냥 문이 열려 있냐 없냐만 보고 돌아다니는 거예요.
작든 크든 상관없이, 인터넷에 서버를 하나 세운 순간부터 문은 계속 두들겨 맞고 있어요.
구글봇이 왜 제 관리자 페이지를 뒤지고 있죠?
리포트 맨 아래에 경고가 하나 떠 있었어요.

구글봇이 우리 방범대한테 걸렸다는 거예요.
순간 심장이 철렁했어요.
블로그 하는 사람한테 이건 최악의 시나리오거든요. 구글봇을 막아버리면 구글이 제 사이트를 못 읽어요. 그러면 검색 결과에서 통째로 사라질 수도 있어요.
남의 땅 아니고 내 땅인데, 손님이 아예 못 찾아오게 되는 거죠.
그래서 바로 그 IP를 뒤져봤어요.
근데 이상하더라고요.
얘가 한 짓이 워드프레스 스캔이랑 관리자 페이지 훑기였어요.
구글이 왜 제 관리자 로그인 페이지를 찾아다니죠?
그래서 신원을 확인해봤어요.
※ 역방향 DNS : IP 주소를 거꾸로 조회해서 “이 주소 주인이 누구냐”를 확인하는 거예요. 명함 받고 나서 거기 적힌 회사에 직접 전화해서 “이 사람 진짜 여기 직원 맞아요?” 물어보는 거랑 같아요.
진짜 구글봇은 조회하면 주소 주인이 googlebot.com으로 나와요.
근데 얘는 아무것도 안 나왔어요.
주소지는 독일이었고, 조회해보니 구글이랑 아무 상관 없는 호스팅 업체 대역이더라고요.
구글봇이 아니었어요. 구글봇인 척한 거예요.
자기소개서에 “저 구글에서 왔습니다”라고 써 붙이고, 우리 집 뒷문을 뒤지고 있던 거죠.
※ User-Agent : 접속할 때 “나는 이런 프로그램입니다” 하고 스스로 밝히는 자기소개예요. 문제는 이게 자기가 적는 거라, 얼마든지 거짓말할 수 있어요.
그리고 여기서 제일 중요한 부분이에요.
우리 방범대는 안 속았어요.
CrowdSec은 자기소개서를 안 믿거든요. 역방향 DNS로 신원을 직접 확인해서, 진짜 구글이어야만 통과시켜요. 얘는 그 확인에서 걸렸고, 그대로 차단당했어요.
※ 화이트리스트 : “얘는 무조건 통과” 명단이에요. 구글봇, 네이버봇 같은 검색엔진 크롤러가 여기 들어가요. 다만 이름만 대면 넣어주는 게 아니라, 신원 확인을 통과해야 들어가요.
속은 건 저였어요.
정확히는 제가 만든 리포트요.
제 리포트는 자기소개서에 “Googlebot”이라고 적혀 있으면 그냥 “어, 착한 봇을 잡았나 본데?” 하고 경고를 띄우게 짜여 있었거든요. 명함만 보고 믿은 거예요.
방범대는 전화까지 걸어서 확인하는데, 제가 만든 보고서는 명함 글자만 읽고 있었던 거죠.
도구가 저보다 똑똑했어요.
이게 좀 웃기면서도 배운 게 있어요. 저는 CrowdSec이 착한 봇을 잡을까 봐 걱정했는데, 정작 허술했던 건 그걸 감시하겠다고 제가 만든 쪽이었어요.
실제 성적표
말로만 하면 와닿지 않으니, 실제 숫자를 보여드릴게요.
하루치를 지도 위에 얹어봤어요.

불가리아 한 곳에서만 49건. 그 뒤로 프랑스, 미국, 베트남, 이란이 줄줄이 붙어 있어요.
제가 이 나라들에 뭘 잘못한 게 아니에요. 앞에서 말씀드렸듯이, 그냥 인터넷 전체에 그물을 던지는 중인 거죠.
여기까지가 8일 치 성적이에요.
- 방범대원 1호(뒷문)가 버린 패킷: 28,990개
- 방범대원 2호(정문)가 쫓아낸 요청: 1,900건 (전체 52,110건 중)
- 최근 24시간 탐지: 약 50건
정문에서도 하루가 멀다 하고 누가 쫓겨나고 있었어요. 2호가 일 안 하고 노는 줄 알았는데, 조용히 1,900번을 돌려보냈더라고요.
그런데 진짜 숫자는 따로 있어요.
제 서버가 스스로 잡아낸 나쁜 IP는 4개예요.
근데 지금 제 방범대가 들고 있는 차단 명단에는 30,920개가 올라와 있어요.
- 웹 스캔: 20,876개
- SSH 무차별 대입: 9,412개
- 알려진 취약점 공격: 596개
나머지 3만 개는 전부 다른 집에서 걸린 놈들이에요. 전 세계 CrowdSec 사용자들이 잡아서 올린 명단을, 제가 공짜로 받아쓰고 있는 거죠.
4명 잡고 3만 명 명단을 받았어요.
이게 “집단 지성으로 지키는 동네 방범대”라는 말의 진짜 의미인 것 같아요.
혼자 지키는 게 아니라, 전 세계가 같이 명단을 돌려보는 거니까요.
방범대원 한 명 세웠더니, 전국 방범대 명단이 따라온 셈이에요.
비서실장한테 일을 하나 더 줬어요
CCTV를 달아놔도 화면을 안 보면 의미가 없잖아요.
명단을 보려면 서버에 접속해서 명령어를 쳐야 하는데, 이건 오래 못 가요. 며칠 하다 안 보게 될 게 뻔하거든요.
그래서 비서실장을 불렀어요.
2편에서 소개했던 n8n이요. 매일 아침 8시 30분에 경제지표 배달 셔틀을 굴리는 그 친구예요.
어차피 아침마다 보고 한 번 올리는 김에, 방범대 명단도 훑어서 같이 가져오라고 했어요. 위에서 보신 그 리포트가 그렇게 나온 거예요.
재밌는 건 이 친구한테 명단 열람증을 발급해줬다는 거예요. 방범대원들은 명단을 받아서 문을 잠그는데, 비서실장은 읽기만 해요. 아무도 못 쫓아내고 보고만 올리죠.
물론 명함 글자만 읽고 구글봇이라고 믿었던 게 이 친구예요.
일은 잘하는데, 사람 보는 눈은 재교육이 좀 필요해요.
마무리
여기까지가 제 땅 이야기예요.
1편에서 월 1,313원짜리 땅을 샀고, 사옥을 올리고, 직원을 뽑고, 당직을 세우고, 관제팀을 꾸리고, 위성까지 띄웠어요. 중간에 셋은 정리해고했고요.
그리고 마지막으로 방범대를 세웠습니다. 열 편 만에요.
돌아보면 제일 크게 배운 건 이거예요.
작아서 안전한 건 없어요.
방문자 몇 명 안 되는 블로그인데도, 8일 동안 문은 3만 번 두들겨 맞았어요. 저를 노려서가 아니라, 그냥 인터넷에 서 있다는 이유만으로요.
그래도 이제는 자면서도 좀 덜 불안해요. 정문에 경비가 있고, 집 안에 방범대가 있고, 아침마다 비서실장이 보고를 올리니까요.
남의 땅 말고 내 땅. 그 땅을, 이제 지킬 줄도 알게 됐어요.
다음부터는 좀 다른 이야기를 해보려고 해요.
지금까지가 서버 안에서 굴리는 이야기였다면, 이번엔 제 책상 위에 실제로 올라와 있는 것들이요. 교대근무 6년 차가 현장에서, 그리고 집에서 진짜로 써본 물건들 얘기를 해볼게요.
써보지도 않고 좋다고 하는 글은 안 쓸 거예요. 직접 쓴 것만, 단점까지요.
AI에게 뺏기지 말고, AI를 부려먹는 사람이 됩시다.
IT 전공했지만 그 길을 떠난 지 10년, 지금은 현장에서 6년째 일하고 있어요. 개발자는 아니에요. AI한테 밀려나지 않으려고, 남의 땅 말고 내 땅에 서버 하나 직접 굴리면서 배운 걸 기록합니다. 소개 →













