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()
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()
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 등을 활용하여 보다 강력한 방어 체계를 구축하는 것이 중요하다.