0.관련 링크
DDoS Traffic Control Using Transfer Learning DQN With Structure Information
A DDoS attack is one of the most serious threats to the current Internet. The Router throttling is a popular method to response against DDoS attacks. Currently, coordinated team learning (CTL) has adopted tile coding for continuous state representation and
ieeexplore.ieee.org
프로젝트 github 링크 : ryujm1828/DDoS_Traffic_Control_RL
설명 youtube 링크 : (추가 예정)
1.서론
평소 보안과 AI 기술을 함께 공부하면서, 두 분야를 융합한 의미 있는 프로젝트를 진행하고 싶었다.
처음에는 AI를 이용해 피싱 메일이나 악성 코드를 식별하는 프로젝트를 고려했지만, 하지만 한정적인 데이터셋과 직접 데이터를 구하기 어려운 현실적인 문제 때문에 프로젝트의 깊이를 더하기 어렵다고 판단했다.
그러던 중, 강화학습을 이용해 DDoS 공격 트래픽을 제어할 수 있다는 논문을 발견했다.
특히 강화학습은 별도의 대규모 데이터셋 없이 시뮬레이션 환경을 통해 모델을 학습시킬 수 있다는 점에서 내가 유의미한 결과를 뽑아낼 수 있겠다는 생각이 들었다.
이 논문을 바탕으로 기본적인 아이디어를 구현하고, 더 나아가 나만의 아이디어를 추가하여 발전시켜 보기로 했다.
💡 참고: 이 글은 논문 자체를 상세히 분석하는 리뷰가 아니라, 해당 논문을 참고하여 직접 구현하고 발전시킨 프로젝트에 대한 기록이다.
2.간단한 논문 소개
논문에서 정의된 서버 구조부터 소개를 해보겠다.
서버 구조는 [서버 - 팀 리더 라우터 - 중간 라우터 - 쓰로틀링 라우터]로 나누어진다.
모든 라우터가 다 연결된 구조가 아닌, 트리형 구조를 사용하여 연결된다.
외부와 연결되는 곳은 맨 아래 층이 쓰로틀링 라우터로, 이 부분의 쓰로틀링양을 제어하는것이 우리의 목표이다.
이 프로젝트의 기반이 된 논문의 핵심 아이디어는 다음과 같다.
인터넷 환경을 공격자와 일반 사용자가 존재하는 터미널(Terminal), 그리고 이 터미널과 서버를 연결하는 다층(Multi-layer) 라우터 구조로 가정한다.
이때 각 라우터는 하나의 에이전트(Agent)가 되어, 현재 상태(State)를 바탕으로 쓰로틀링(Throttling), 즉 의도적으로 트래픽을 버리는 행위의 비율을 스스로 결정하게 된다.
- State (상태): 에이전트(라우터)가 관측하는 정보. 논문에서는 크게 세 가지 모델을 제시한다.
- DCTL (기본 모델): 자신이 속한 팀의 라우터들이 현재 받고 있는 트래픽의 양만 state에 추가
- DCTL-TS (구조 정보 추가): DCTL의 State에 네트워크 토폴로지 구조(각 계층별 라우터 개수) 정보를 추가
- PT DCTL-TS (전이학습 적용): 적은 수의 라우터 팀으로 학습한 모델을 점차 더 복잡한(팀이 더 많은) 환경에 적응시키는 방식
- Reward (보상): 에이전트의 행동에 대한 피드백이다.
- 팀 리더 라우터 트래픽이 해당 팀의 트래픽 할당량(US/팀 개수)을 초과하는가?
- 그리고 전체 서버 트래픽이 서버의 용량 상한(US)를 초과하는가? → 1과 2, 두 조건을 만족하면 -1
- 그외의 reward = 통과된 정상 트래픽/총 정상트래픽이다.
한 가지 아쉬웠던 점은, 논문의 시뮬레이션 환경에서는 공격자가 에피소드가 끝날 때까지 일정하고 고정된 강도로만 트래픽을 전송한다는 점이었다.
나는 이 부분을 실제 사이버 환경과 더 유사하게 바꿔도 강화학습 모델이 유의미한 성능을 보일지 궁금해졌다.
3.프로젝트 소개
나는 논문의 기본 모델에 현실성을 더하는 방향으로 프로젝트를 구체화했다.
핵심은 '터미널'의 행동 패턴을 다양화하는 것이었다.
새롭게 정의한 3가지 터미널 유형
- 일반 사용자 (Normal User): 평소에는 낮은 트래픽을 발생시키지만, 이미지 업로드와 같이 가끔씩 순간적으로 높은 트래픽을 요구하는 사용자이다.
- 영상 시청자 (Streaming User): 일반 사용자보다는 높고 꾸준한 트래픽을 지속적으로 발생시키는 사용자이다.
- 공격자 (Attacker): 매 스텝마다 매우 높은 트래픽을 꾸준히 보내는 터미널이다.
시뮬레이션 환경 설계
- 간헐적 공격: 공격이 끊임없이 지속되는 상황만 학습하면, 공격이 없는 평시 상황에 대한 대처 능력이 떨어질 것이라 생각했다. 따라서 시뮬레이션이 진행되는 동안 일정 확률로, 특정 시간 동안만 공격이 발생하도록 구현했다.
- 현실적인 서버 용량 설정: 평상시 평균적인 사용자 수를 기준으로 서버 용량을 설정하고, 여기에 약간의 여유분(delta)을 더했다. 그래야만 평온한 상태를 유지하던 서버에 예상치 못한 공격 트래픽이 추가되었을 때의 대응 전략을 효과적으로 학습할 수 있다고 판단했다. 이 부분은 논문에서처럼 총 터미널의 수 + delta값으로 설정한 동시에 delta값을 다소 높여서 평소에는 안정적인 상태를 유지하도록 했다.
4.프로젝트 결과
모든 실험은 기본적으로 논문의 DCTL-TS 모델을 기반으로 진행했다.
각 실험에서 에이전트(라우터)가 공격 발생 후 어떻게 쓰로틀링 비율을 조절하여 대처하는지를 중점적으로 관찰했다.
🔎 참고사항: 강화학습 에이전트는 A-1 스텝의 트래픽 처리 결과로 나타난 '상태'를 보고 A 스텝의 행동(쓰로틀링 비율)을 결정한다. 따라서 공격이 발생한 바로 그 시점(스텝)이 아닌, 공격을 받은 직후 스텝들에서 AI가 어떻게 반응하는지가 핵심 관찰 포인트이다.
4-1. 단일 라우터 집중 공격
하나의 라우터에만 공격 트래픽이 집중되는 상황을 시뮬레이션했다. (에피소드당 평균 2.5회 공격 발생)
※그래프 요소
핑크색 선 : 각 스텝의 reward
파란색 선 : 모든 쓰로틀링 라우터의 평균 throtling 비율
빨간색 점 : 공격당한 시점
x축 : 스텝
학습 전: 공격 여부와 관계없이 쓰로틀링 비율이 마구잡이로 변경되며, 보상(Reward) 역시 지속적으로 낮게 나타난다.
학습 후 (500 에피소드): 평소에 쓰로틀링 비율을 낮게 유지하는 것이 보상 획득에 유리하다는 것을 학습했다. 하지만 아직 공격을 받았을 때 쓰로틀링 비율을 높여 효과적으로 방어하지는 못한다.
학습 후 (10000 에피소드): 공격을 감지한 직후, 쓰로틀링 비율을 급격히 높여 서버를 보호하는 패턴을 명확하게 보여준다.
덕분에 학습 전보다 서버 용량이 초과되는 빈도가 눈에 띄게 줄었다.
학습이 진행될수록 평균 보상이 우상향하는 것을 볼 수 있다.
다만, 보상 그래프의 편차가 큰 이유는 에피소드마다 공격의 강도와 빈도를 무작위로 설정했기 때문이다다.
즉, 유독 공격을 많이 받은 에피소드는 보상이 낮고, 공격이 적었던 에피소드는 보상이 높게 나타나는 자연스러운 현상이다.
4-2.다중 라우터 공격
이번에는 여러 라우터에 동시에 공격이 가해지는, 더 까다로운 상황을 설정했다.
공격 빈도는 이전 실험보다 조금 낮췄다.
그 이유는, 공격 빈도가 너무 높으면 에이전트가 '일단 모든 라우터의 쓰로틀링 비율을 중간 정도로 유지하는' 소극적인 전략을 배우는 경향이 있었기 때문이다.
학습 전: 단일 라우터 공격 실험과 마찬가지로, 쓰로틀링 비율이 불규칙하고 보상도 낮다.
학습 후 (5000 에피소드): 공격 발생 시 쓰로틀링 비율을 급격히 높여 방어하면서도, 평시에는 낮은 쓰로틀링 비율을 유지하는 효율적인 전략을 성공적으로 학습했다.
4-3 다중 구조 환경 + 다중 라우터 공격
마지막으로, 라우터 계층의 구조가 동적으로 변하는 환경에서 다중 라우터 공격을 시뮬레이션했다.
서버가 견딜 수 있는 총 트래픽 양은 전체 라우터 개수에 비례하므로, 라우터가 많은 구조는 공격에 강하고 적은 구조는 취약하다.
강한 구조 (6-6-6-6): 라우터 수가 많아 방어에 유리한 이 구조에서는, 에이전트가 굳이 쓰로틀링을 하지 않아도 서버가 안정적이라는 것을 학습했다. 따라서 공격 여부와 무관하게 매우 낮은 쓰로틀링 비율을 유지했다.
평이한 구조 (5-2-3-3): 이전 라우터 구조와 동일한 평이한 구조에서의 실험이다.
이 실험에서 가장 아쉬운 결과가 나왔다. 에이전트가 공격에 효과적으로 대응하는 전략을 학습하지 못했다.
아마도 공격에 매우 강한 구조(6-6-6-6 등)와 함께 학습이 진행되었고, 전반적인 공격 빈도를 너무 낮게 설정한 것이 실패의 원인으로 보인다.
5.정리 및 결론
이번 프로젝트는 강화학습을 이용해 DDoS 공격을 방어하는 논문의 아이디어를 실제로 구현하고, 더 나아가 현실적인 시나리오를 적용하여 모델의 실효성을 검증하는 것을 목표로 했다.
주요 성과
- 강화학습 기반의 자율적 DDoS 방어 시스템 구현: 정적인 규칙 기반이 아닌, 강화학습 에이전트(라우터)가 스스로 상황을 판단하여 트래픽을 제어하는 모델을 성공적으로 구축했다.
- 동적 공격 환경에서의 방어 능력 검증: 논문의 고정적인 공격 모델에서 벗어나, 불규칙하고 간헐적인 공격 및 다양한 사용자 패턴이 혼재하는 더 현실적인 환경에서도 강화학습 모델이 효과적으로 방어 전략을 학습할 수 있음을 확인했다. 단일 및 다중 라우터 공격 시나리오 모두에서 공격을 감지하고 쓰로틀링 비율을 높여 서버를 보호하는 모습을 보여주었다.
- 네트워크 구조 변화에 대한 적응 가능성 확인: 라우터 수가 많아 방어에 유리한 환경에서는 쓰로틀링을 최소화하고, 공격에 직접 대응하는 등 환경에 맞는 전략을 일부 학습하는 모습을 보였다.
한계 및 아쉬운 점
가장 큰 아쉬움은 다양한 네트워크 구조가 혼재된 환경에서의 학습 실패이다. 방어에 유리한 구조와 불리한 구조가 함께 학습 데이터로 사용되고 공격 빈도가 낮다 보니, 에이전트가 '공격에 적극적으로 대응'하는 패턴을 학습할 동기가 부족했던 것으로 분석된다.
향후 과제
이번 프로젝트의 한계를 보완하고 더 발전시키기 위해 다음과 같은 방향을 고려할 수 있을 것이다.
- 전이학습 적용: 논문에서 처럼, 전이학습을 적용시켜서 학습시켜 볼 수 있다.
- 다양한 공격 시나리오 적용: 단순 트래픽 폭증 외에, 강화된 DDoS 공격 중 하나인 저속 공격(SR DDoS)이나 부정확한 주기로 트래픽을 폭증 시키는 공격 등 다양한 공격 패턴을 시뮬레이션에 추가하여 학습시켜 볼 수 있다.
결론적으로, 본 프로젝트는 강화학습이 복잡하고 동적인 네트워크 환경에서 DDoS 공격에 대한 지능적이고 자율적인 방어체계로서 충분한 잠재력을 가지고 있음을 보여주었다.
앞으로 더 정교한 모델과 학습 전략을 통해 실제 네트워크 환경에 적용할 수 있는 수준으로 발전시켜 나갈 수 있을 것이라 기대된다.
'인공지능 > 강화학습' 카테고리의 다른 글
HungryCat강화학습3 - BC + DQN 알고리즘 (with ML-Agent) (0) | 2023.08.05 |
---|---|
HungryCat 강화학습2 - DQN 알고리즘 (with ML-Agent) (0) | 2023.08.03 |
HungryCat 강화학습1 - A2C 알고리즘 (with ML-Agent) (0) | 2023.08.03 |
REINFORCE 알고리즘을 이용한 CartPole 강화학습 (0) | 2023.06.10 |
DQN을 이용한 CartPole 강화학습 (0) | 2023.06.07 |