Gihak111 Navbar

DDoS 공격을 방어하거나 공격의 출처를 추적하는 방법에 대해 알아보자.

DDoS 공격 방어 방법

1. 요청 수 제한 (Rate Limiting)

from flask import Flask, request, abort
from collections import defaultdict
import time

app = Flask(__name__)

# 요청 수를 저장할 딕셔너리
request_count = defaultdict(list)

@app.route('/api', methods=['GET'])
def api():
    client_ip = request.remote_addr
    current_time = time.time()

    # 최근 1분 동안의 요청 수를 카운트
    request_count[client_ip] = [timestamp for timestamp in request_count[client_ip] if timestamp > current_time - 60]

    # 요청 수가 100을 초과하면 차단
    if len(request_count[client_ip]) > 100:
        abort(429)  # Too Many Requests

    # 요청 기록 추가
    request_count[client_ip].append(current_time)
    return "Request Successful"

if __name__ == '__main__':
    app.run()

2. IP 차단 (IP Blacklisting)

from flask import Flask, request, abort

app = Flask(__name__)

# 차단할 IP 주소 목록
blacklisted_ips = {"192.168.1.100", "10.0.0.5"}

@app.route('/api', methods=['GET'])
def api():
    client_ip = request.remote_addr

    # IP가 차단 목록에 있으면 요청 차단
    if client_ip in blacklisted_ips:
        abort(403)  # Forbidden

    return "Request Successful"

if __name__ == '__main__':
    app.run()

3. 패킷 필터링 (Packet Filtering)

4. 트래픽 분석 및 로그 모니터링

5. 역 추적 (Tracing)

import logging

# 로깅 설정
logging.basicConfig(filename='ddos_attack.log', level=logging.INFO)

@app.route('/api', methods=['GET'])
def api():
    client_ip = request.remote_addr

    # 요청을 로깅
    logging.info(f"Request from {client_ip}")

    # 요청 처리
    return "Request Successful"

결론

DDoS 공격 방어는 여러 기법을 통해 이루어지며, 위의 코드 예시들은 Flask 웹 프레임워크를 사용하여 간단한 방어 기법을 구현한 것이다.
실무에서는 이와 같은 기본적인 방어 기법을 조합하고, 고급 방화벽, IDS/IPS, CDN 등을 활용하여 보다 강력한 방어 체계를 구축하는 것이 중요하다.