소규모 DDoS 공격 기본 대응 방법을 실전에서 배운 것은 특정 검진 이벤트 예약 당일이었습니다. 사이트가 갑자기 응답을 멈췄고, 처음엔 트래픽이 몰린 줄 알았습니다. Nginx 로그를 보니 수십 개의 IP에서 동시에 대량 요청이 들어오는 전형적인 DDoS 패턴이었습니다. Cloudflare가 없는 상황에서 서버 자체적으로 버텨야 했고, Nginx의 rate limiting으로 어느 정도 완화할 수 있었습니다.
Nginx의 limit_req_zone과 limit_req 지시어로 IP당 요청 속도를 제한합니다.
# nginx.conf의 http 블록에 추가
http {
# 요청 제한 존 정의 (IP별로 초당 10회)
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
# 연결 수 제한
limit_conn_zone $binary_remote_addr zone=addr:10m;
}
# server 블록에서 적용
server {
location / {
limit_req zone=one burst=20 nodelay;
limit_conn addr 20;
# ...
}
}
rate=10r/s: IP당 초당 10회 요청 허용burst=20: 순간적으로 20회까지 허용 (급증 대비)nodelay: 허용 범위 초과 시 즉시 503 반환공격 중 특정 IP를 즉시 차단하는 방법입니다.
# UFW로 즉시 차단
sudo ufw deny from 공격IP
# Nginx에서 차단 (nginx.conf에 추가)
location / {
deny 공격IP;
allow all;
}
# 적용
sudo nginx -t
sudo systemctl reload nginx
로그에서 상위 공격 IP를 추출하는 명령:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
소규모 DDoS라도 서버만으로는 한계가 있습니다. Cloudflare 무료 플랜으로도 기본적인 DDoS 완화 기능이 제공됩니다.
Cloudflare 무료 플랜 주요 기능:
서버 앞에 Cloudflare를 두면 공격 트래픽이 서버에 직접 도달하지 않습니다. 실제 공격이 없더라도 병원 사이트에 Cloudflare 도입은 강력히 권장합니다. 속도 개선 효과도 함께 얻을 수 있습니다.
AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.
작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)