C.W.K.
Stream
Lesson 03 of 05 · published

Hard Lockout 너머 — Backoff, Jitter, Honeypot

~15 min · backoff, honeypot, jitter

Level 0Greenhorn
0 XP0/53 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

Hard lockout-after-N 이 가장 단순한 방어. threat model 이 더 정교함 보장할 때 알 가치 있는 세 기법 더.

1. Exponential backoff — 늦추기, lockout 아님

"5번 strike, 아웃" 대신 각 successive 실패가 더 많은 시간 비용. 사용자는 거의 못 알아채고; 공격자는 벽에 부딪혀.

2. Jitter — timing side channel 격퇴

0.5초 constant-time 지연 (Track 5) 이 *응답 시간* 으로 정보 누출 방지. 랜덤 jitter (예: 정확히 0.5s 대신 0.4–0.6s) 추가가 timing 의 통계적 공격 더 흐려.

3. Honeypot 엔드포인트 — 정찰 발견

/wp-admin 이나 /.env 같은 가짜 엔드포인트 추가 — 항상 404 반환하지만 "scanner detected" 이벤트 로그하고 (선택) source IP blacklist.

하지 말 것

  • 다른 에러 반환 X "PIN 틀림" 과 "사용자 없음" — user enumeration 누출. 항상 같은 응답.
  • Username 만 lockout X 다중 사용자 시스템에서 — 공격자가 한 사용자한테 틀린 PIN spam 해서 DOS. Per-IP lockout 이 정답.
  • Attempt counter 공개 X ("3 시도 남음") — 공격자한테 공짜 정보. "Invalid PIN" 만 보여.

Code

Exponential backoff·python
# delay = 2 ** (fail_count - 1) 초
# 실패 1: 1s, 실패 2: 2s, 실패 3: 4s, 실패 4: 8s, 실패 5: 16s, ...
delay = min(60, 2 ** (attempt_count(ip)))
await asyncio.sleep(delay)
Jitter·python
import random
await asyncio.sleep(0.4 + random.random() * 0.2)   # 0.4 – 0.6 sec
Honeypot middleware — 스캐너 자동 blacklist·python
HONEYPOTS = ("/wp-admin", "/wp-login.php", "/.env", "/.git/config",
             "/admin.php", "/phpmyadmin")

@app.middleware("http")
async def honeypot(request, call_next):
    if request.url.path in HONEYPOTS:
        ip = client_ip(request)
        log_scanner_hit(ip, request.url.path)
        blacklist(ip, "honeypot_" + request.url.path)
        return Response("Not Found", status_code=404)
    return await call_next(request)

External links

Exercise

앱에 honeypot middleware 추가. 다른 머신에서 (또는 그냥 curl) /wp-admin 쳐봐. 확인: (1) 응답이 404, (2) source IP 가 reason 이 honeypot_ 로 시작하는 채로 security_blacklist 에 나타남, (3) 그 IP 의 후속 요청이 middleware 에서 403. 이제 proactive 스캐너 차단 가짐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.