
연합 학습(Federated Learning) 모델을 기반으로 네트워크 플로우의 이상을 탐지하는 네트워크 침입 탐지 시스템(NIDS) 구현 프레임워크.
머신러닝 모델을 사용하여 네트워크 흐름의 이상 징후를 식별하는 침입 탐지 시스템(NIDS) 구현을 위한 프레임워크입니다.
실험 환경을 생성하려면 다음 명령어를 실행하세요:
python -m venv .env
참고: 가상 환경의 이름은 반드시 이 이름이어야 합니다. 스크립트가 필요한 라이브러리를 로드할 때 이 이름을 사용하기 때문입니다. fl-unsup-nids/blob/anomaly-flow-baseline/utils/load_data.py 가상 환경을 생성한 후, 다음 명령어를 사용하여 필요한 파이썬 패키지를 설치하세요:
pip install -r requirements.txt
로컬 실험을 실행하려면 다음 명령어를 사용하세요:
source experiments.sh
연합 학습 실험을 실행하려면 다음 명령어를 사용하세요:
source run.sh
실험을 실행하려면 프로젝트 루트에 datasets라는 폴더 안에 CIC-IDS2018, BoT-IoT 및 ToN-IoT 데이터셋이 있어야 합니다. 예:
|- anomaly-flow
|- datasets
|- NF-CSE-CIC-IDS2018-v2-DDoS.csv.gz
|- NF-BoT-IoT-v2-DDoS.csv.gz
|- NF-ToN-IoT-v2-DDoS.csv.gz
본 연구에서는 원본 데이터셋에서 정상 및 DDoS 샘플만 필터링한 파생 데이터셋을 사용했습니다.
특정 데이터셋에 대한 합성 데이터를 생성하려면 main.ipynb 스크립트를 사용하세요.
외부 및 간단 모델 스크립트를 실행하려면 EFC 알고리즘용 커스텀 pip 패키지를 설치하세요:
chmod +x ./auxiliary_scripts/install-efc.sh
./auxiliary_scripts/install-efc.sh
연합 학습을 사용한 다중 도메인 DDoS 탐지를 위한 베이스라인은 여기에서 확인할 수 있습니다:
실험 수행에 사용된 데이터는 다음에서 얻을 수 있습니다:
Machine Learning-Based NIDS Datasets (Netflow V2 Datasets)
이 연구의 준비를 위해 다음 프로젝트를 참고했습니다:
@ARTICLE{anomalyflow,
author={De Melo, Leonardo Henrique and Bertoli, Gustavo de Carvalho and Nogueira, Michele and Dos Santos, Aldri Luiz and Pereira, Lourenço Alves},
journal={IEEE Network},
title={Anomaly-Flow: A Multi-domain Federated Generative Adversarial Network for Distributed Denial-of-Service Detection},
year={2025},
volume={},
number={},
pages={1-1},
doi={10.1109/MNET.2025.3567251}
}