해외 IP 공격 완벽 방어: Fail2Ban과 xmlrpc.php 차단 설정법

해외 IP 공격 완벽 방어: Fail2Ban과 xmlrpc.php 차단 설정법

워드프레스 블로그에 ‘발행’ 버튼을 누르자마자 해외 IP로부터 갑작스러운 공격이 쏟아지는 것을 느껴본 적 있으신가요? 대체 해커들은 어떻게 알고 이렇게 빨리 찾아오는 걸까요? 오늘은 봇과 해커들의 IP 공격 경로를 추적하고, 이를 실시간으로 감시하며 차단하는 실전 보안 방법을 준비했습니다.

1. Fail2Ban: 실시간 IP 공격 검거 현황판

Fail2Ban은 서버의 든든한 보안관입니다. 로그인 페이지를 억지로 열려고 시도하는 무차별 대입 공격(Brute Force)을 감지하여 해당 IP를 즉시 ‘감옥’으로 보냅니다.

내 새 글 소문을 듣고 찾아왔다가 바로 차단당한 공격자들의 명단을 확인해 봅시다.

tail -f /var/log/fail2ban.log
  • 해커의 심리: “오! 방금 새 글이 올라왔네. 자동 공격 스크립트 가동!”
  • 서버의 응답:[wordpress-auth] Ban 123.456.78.9 (용의자 검거 완료)

이 로그는 단순한 기록이 아니라, 내 서버가 어떻게 공격받았고 위협이 어떻게 제거되었는지를 보여주는 핵심 증거입니다.

워드프레스 보안 모니터링

무차별 대입 공격(Brute Force Attack)이란?

  • 무차별 대입 공격은 해커가 자동화된 프로그램을 사용해 로그인 페이지에서 수많은 아이디와 비밀번호 조합을 무작위로 대입하며 정답이 맞을 때까지 계속 시도하는 공격 방식입니다.

2. 공격의 시작점: 실시간 “xmlrpc.php” 생중계

Fail2Ban이 사후 처리를 보여준다면, 웹 서버 접속 로그는 공격이 시작되는 찰나를 보여줍니다. 특히 xmlrpc.php는 해커들이 가장 좋아하는 침투 경로입니다.

아래 명령어를 사용해 서버 정문 주변을 기웃거리는 세력들을 실시간으로 중계해 보세요.

sudo tail -f /var/log/nginx/access.log | grep "xmlrpc.php"

글을 올리자마자 낯선 IP가 이 경로를 건드린다면 99% 봇입니다. 지금 차단 상태를 확인해 보세요.

sudo fail2ban-client status wordpress-auth

‘Banned IP’ 숫자가 올라갔나요? 방금 보안 시스템이 한 놈을 완벽하게 낚아챘다는 뜻입니다.

3. 해커들은 어떻게 내 글을 그렇게 빨리 알까? (RSS)

참 신기하죠? 홍보도 안 했는데 어떻게 알까요? 첫 번째 경로는 바로 RSS 피드입니다.

해커들은 구글 뉴스나 RSS 수집기를 이용해 ‘WordPress’라는 키워드가 포함된 최신 글을 자동으로 ‘낚시’합니다.

curl -s "https://news.google.com/rss/search?q=wordpress&hl=ko&gl=KR&ceid=KR:ko" | grep -i "link" | head -n 10

하지만 RSS보다 훨씬 빠르고 강력한 채널이 따로 있습니다.

4. 해커들의 잠복 장소: PubSubHubbub (PuSH)

진짜 주범은 PubSubHubbub (PuSH)이라는 기술입니다. 블로그의 업데이트 소식을 실시간으로 전 세계에 퍼뜨리는 ‘확성기’라고 생각하면 됩니다.

  1. 블로그의 동작: 글을 쓰면 “저 방금 글 올렸어요!”라고 ‘허브(Hub)’에 신호를 보냅니다.
  2. 해커의 전략: 검색 엔진이 내 글을 긁어갈 때까지 기다리지 않고, 이 허브에 직접 ‘빨대’를 꽂아둡니다.
  3. 결과: 0.1초 만에 전 세계에서 올라오는 새 글의 URL을 가로챕니다.

이것이 당신이 ‘발행’ 버튼을 누르는 순간 공격 봇이 방문하는 진짜 이유입니다.

5. “websocat”으로 해커의 시선 따라가기

해커들이 보고 있는 그 채널을 우리도 직접 들여다볼 수 있습니다. websocat이라는 도구를 사용해 실시간 허브에 접속해 봅시다.

1분 설치 및 실행 방법

# 1. 실행 파일 다운로드
wget https://github.com/vi/websocat/releases/latest/download/websocat.x86_64-unknown-linux-musl -O websocat

2. 실행 권한 부여
chmod +x websocat

3. 워드프레스 실시간 허브 접속
./websocat wss://public-api.wordpress.com/pinghub/wpcom/me/newest-posts

커서가 깜빡인다면 접속 성공입니다. 전 세계 어디서든 누군가 포스팅을 하는 순간, JSON 형태의 블로그 정보가 폭포수처럼 화면에 쏟아질 것입니다.

보안 설정을 미루지 말아야 하는 이유

방금 접속한 실시간 채널을 딱 1분만 켜놓고 지켜보세요. 초당 수십 개씩 쏟아지는 주소들을 보면 해커들의 스크립트가 얼마나 활발하게 움직이는지 체감하게 됩니다.

  • 발행 직후의 공격은 우연이 아닙니다.
  • xmlrpc.php 차단과 Fail2Ban 설정은 선택이 아닌 필수입니다.
  • 서버 로그를 확인하는 습관이 당신의 소중한 디지털 자산을 지킵니다.

보안은 어렵고 번거로워 보일 수 있지만, 한 번 구축해두면 24시간 블로그를 지켜주는 든든한 성벽이 됩니다. 오늘 알려드린 명령어들로 지금 직접 서버를 점검해 보세요!

댓글 남기기