Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
gatekeeper — 최초의 오픈소스 DDoS 보호 시스템 | Kitploit
도구/GitHubGitHub/altramayor/gatekeeper
Defensive ToolsVulnerability ScannersNetwork SecurityIntrusion Detection
GitHubaltramayor/gatekeeper

gatekeeper

최초의 오픈소스 DDoS 보호 시스템

저장소 보기웹사이트
1.6k2519개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Gatekeeper

Gatekeeper compilation status

Gatekeeper란 무엇인가?

Gatekeeper는 최초의 오픈 소스 DDoS 보호 시스템입니다. 모든 피크 대역폭으로 확장 가능하도록 설계되어 오늘날과 미래의 DDoS 공격을 견딜 수 있습니다. Gatekeeper는 지리적으로 분산된 아키텍처를 가지고 있지만, 들어오는 트래픽에 적용해야 하는 모든 결정을 설명하는 네트워크 정책은 중앙 집중식입니다. 이 중앙 집중식 정책을 통해 네트워크 운영자는 매우 높은 지연 시간(예: 분산 데이터베이스)에서 사용할 수 없는 분산 알고리즘을 활용하고 여러 개의 다중 벡터 DDoS 공격을 동시에 대응할 수 있습니다.

Gatekeeper의 대상 사용자는 기관, 서비스 및 콘텐츠 제공자, 엔터프라이즈 네트워크 등의 네트워크 운영자입니다. 개별 인터넷 사용자가 사용하도록 설계되지 않았습니다.

자세한 내용은 Gatekeeper 위키를 참조하세요.

설치 방법

Hugepages 구성

DPDK에서는 hugepages 사용이 필요합니다. hugepages 마운트 지침은 요구 사항 문서에서 확인할 수 있습니다. 많은 시스템에서 다음과 같은 hugepages 설정으로 충분합니다.

root@kitploit:~
$ echo 256 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

커널 모듈 vfio-pci 활성화

NIC를 DPDK/Gatekeeper에 바인딩하려면 Linux 커널 모듈 vfio-pci가 필요합니다. vfio-pci가 작동하려면 BIOS와 커널이 모두 이를 지원해야 합니다. BIOS에서 VT-d를 활성화해야 합니다. BIOS는 VT-d를 "Intel (R) VT for Directed I/O", "Intel (R) VT-d Feature", "Intel VT-d", "VT-d" 또는 이와 유사한 변형으로 식별할 수 있습니다. 더 많은 예를 보려면 Google 이미지에서 "BIOS VT-d"를 검색하세요. 일부 BIOS에서는 "Intel (R) Virtualization Technology"(또는 이 문자열의 변형)라는 옵션을 먼저 활성화해야 VT-d를 활성화할 수 있습니다.

BIOS에서 VT-d가 활성화되었는지 확인하려면 Linux 부팅 후 다음 명령을 실행하세요.

root@kitploit:~
$ dmesg | grep -e DMAR

위 명령이 몇 줄을 반환하면 VT-d가 활성화된 것입니다. 그렇지 않으면 BIOS로 돌아가서 활성화해야 합니다. BIOS에서 VT-d가 활성화되었는지 확인하는 방법에 대한 자세한 내용은 이 페이지에서 확인할 수 있습니다.

BIOS에서 VT-d를 활성화한 후에는 커널이 IOMMU를 지원하는지 확인해야 합니다. IOMMU를 지원하려면 커널 버전 3.6 이상이 필요합니다. 다음 명령으로 실행 중인 커널에 IOMMU가 기본적으로 활성화되어 있는지 확인할 수 있습니다.

root@kitploit:~
$ grep CONFIG_INTEL_IOMMU_DEFAULT_ON /boot/config-`uname -r`

대부분의 경우 위 명령은 # CONFIG_INTEL_IOMMU_DEFAULT_ON is not set을 출력합니다. 즉, 실행 중인 커널에 IOMMU가 기본적으로 활성화되어 있지 않습니다. 커널 빌드 옵션(예: CONFIG_INTEL_IOMMU_DEFAULT_ON)을 확인하는 다른 방법은 이 페이지에서 확인할 수 있습니다.

커널에 IOMMU가 기본적으로 활성화되어 있지 않은 경우 GRUB를 통해 커널 부팅 매개변수 intel_iommu=on을 전달해야 합니다. 부팅 매개변수 intel_iommu=on이 필요한 이유에 대한 자세한 내용은 이 페이지를 참조하세요. 다음 명령으로 실행 중인 커널이 이 매개변수를 수신했는지 확인할 수 있습니다.

root@kitploit:~
$ cat /proc/cmdline | grep intel_iommu=on

실행 중인 커널이 intel_iommu=on 매개변수를 수신하지 않은 경우 GRUB에 추가하고 머신을 재부팅하세요. GRUB에 부팅 매개변수를 추가하는 방법에 대한 정보는 여기에서 확인할 수 있습니다.

BIOS에서 VT-d를 활성화하고 커널이 IOMMU를 지원하면 다음 명령 중 하나로 모든 것이 설정되었는지 확인할 수 있습니다.

root@kitploit:~
$ ls /sys/kernel/iommu_groups

또는

root@kitploit:~
$ dmesg | grep -ie 'IOMMU\s\+enabled'

위 명령의 출력이 비어 있지 않으면 모든 것이 설정된 것입니다.

옵션 1: 패키지 다운로드

Gatekeeper Debian 패키지는 프로젝트의 Releases 페이지에서 Ubuntu 24.04 LTS용으로 제공됩니다.

설치

패키지를 다운로드한 후 다음 명령으로 설치할 수 있습니다.

root@kitploit:~
$ tar -zxvf gatekeeper-ubuntu-24.04-packages.tar.gz
$ cd gatekeeper-ubuntu-24.04-packages
$ sudo dpkg -i gatekeeper-bird_*_amd64.deb gatekeeper_*_amd64.deb

Gatekeeper 구성

Debian 패키지로 설치하면 Gatekeeper 구성 파일은 /etc/gatekeeper에 있습니다. 최소한 net.lua 파일을 편집하고 환경에 맞게 front_ports, front_ips, back_ports 및 back_ips 변수를 설정해야 합니다.

다른 Lua 파일은 다양한 Gatekeeper 기능 블록을 구성합니다. 설정에서 변경해야 하는지 여부에 대한 자세한 내용은 프로젝트의 위키를 참조하세요.

또한 /etc/gatekeeper/envvars 파일을 편집하고 GATEKEEPER_INTERFACES 변수를 DPDK에 바인딩할 네트워크 어댑터의 PCI 주소로 설정해야 합니다. 이는 lshw 명령으로 찾을 수 있습니다. 예:

root@kitploit:~
# lshw -c network -businfo
Bus info          Device     Class          Description
=======================================================
pci@0000:08:00.0  eth0       network        I350 Gigabit Network Connection
pci@0000:08:00.1  eth1       network        I350 Gigabit Network Connection
...

이 출력을 바탕으로 GATEKEEPER_INTERFACES를 다음과 같이 설정합니다.

root@kitploit:~
GATEKEEPER_INTERFACES="08:00.0 08:00.1"

같은 파일에서 선택적으로 DPDK_ARGS 변수에 Environmental Abstraction Layer 옵션을, GATEKEEPER_ARGS에 Gatekeeper 특정 옵션을 지정할 수 있습니다.

실행 방법

아래 명령을 실행하여 Gatekeeper를 시작하고 재부팅 시 자동으로 시작되도록 설정합니다.

root@kitploit:~
$ sudo systemctl start gatekeeper
$ sudo systemctl enable gatekeeper

옵션 2: 소스에서 빌드

종속성 설치

다음 소프트웨어 종속성을 설치합니다.

root@kitploit:~
$ sudo apt-get update
$ sudo apt-get -y -q install git clang devscripts doxygen libhugetlbfs-bin \
    build-essential gcc-multilib linux-headers-`uname -r` libmnl0 libmnl-dev \
    libkmod2 libkmod-dev libnuma-dev libelf1 libelf-dev libc6-dev-i386 \
    autoconf flex bison libncurses5-dev libreadline-dev python3 \
    python3-pyelftools libcap-dev libcap2 meson ninja-build pkg-config

참고: libmnl0와 libmnl-dev는 모두 gatekeeper를 컴파일하고 실행하는 데 필요하지만, 단순히 gatekeeper를 실행하려면 libmnl0만 필요합니다. libkmod2와 libkmod-dev는 모두 gatekeeper를 컴파일하고 실행하는 데 필요하지만, 단순히 gatekeeper를 실행하려면 libkmod2만 필요합니다. libnuma-dev는 최신 DPDK를 컴파일하고 NUMA 시스템을 지원하는 데 필요합니다. libelf-dev 패키지는 ELF 파일에서 BPF 프로그램을 읽을 수 있도록 DPDK를 컴파일하는 데 필요하지만, 실행에는 libelf1만 필요합니다. libc6-dev-i386 패키지는 bpf/ 폴더의 BPF 프로그램을 컴파일하는 데 필요합니다. , , , , 패키지는 BIRD용입니다. 패키지는 Gatekeeper Debian 패키지를 빌드하는 데 사용됩니다. 및 패키지는 DPDK를 빌드하고 와 같은 Python 스크립트를 실행하는 데 필요합니다. 는 Gatekeeper를 컴파일하는 데 필요하지만, 실행에는 만 필요합니다. 및 는 DPDK 빌드에 필요합니다. 는 Gatekeeper를 컴파일하는 데 필요합니다.

DPDK를 사용하려면 모든 환경 요구 사항을 충족하는지 확인하세요.

저장소 클론

Gatekeeper 종속성을 포함한 서브모듈과 함께 Gatekeeper 저장소를 클론합니다.

root@kitploit:~
$ git clone --recursive http://github.com/AltraMayor/gatekeeper.git

--recursive 클론 옵션을 사용하지 않은 경우 gatekeeper 디렉토리 내에서 종속성을 포함하는 서브모듈을 가져와야 합니다.

root@kitploit:~
$ git submodule init
$ git submodule update

컴파일

이 섹션에서는 Gatekeeper를 수동으로 빌드하는 방법을 설명합니다. Debian 패키지를 빌드하려면 패키지 빌드 방법 섹션을 참조하세요.

gatekeeper 디렉토리에서 설정 스크립트를 실행합니다.

root@kitploit:~
$ . setup.sh

이 스크립트는 DPDK, LuaJIT 및 BIRD를 컴파일하고 필요한 커널 모듈을 로드합니다. 또한 인터페이스 이름과 해당 PCI 주소를 lua/if_map.lua 파일에 저장하여 Gatekeeper 구성 파일에서 인터페이스 이름을 사용할 수 있도록 합니다.

DPDK와 LuaJIT가 컴파일되면 gatekeeper를 컴파일할 수 있습니다.

root@kitploit:~
$ make

네트워크 어댑터 구성

gatekeeper를 사용하기 전에 네트워크 어댑터를 DPDK에 바인딩해야 합니다. 이를 위해 dependencies/dpdk/usertools/dpdk-devbind.py 스크립트를 사용할 수 있습니다. 예:

root@kitploit:~
$ sudo dependencies/dpdk/usertools/dpdk-devbind.py --bind=vfio-pci enp131s0f0

이 명령은 인터페이스 enp131s0f0을 vfio-pci 드라이버에 바인딩하여 커널 대신 DPDK에 직접 프레임을 전달할 수 있도록 합니다. 이 바인딩은 위 단계에서 Gatekeeper 설정 후에 이루어져야 바인딩된 인터페이스가 lua/if_map.lua의 인터페이스 목록에 나타납니다.

실행 방법

gatekeeper가 컴파일되고 환경이 올바르게 구성되면 다음을 실행합니다.

root@kitploit:~
$ sudo build/gatekeeper [EAL OPTIONS] -- [GATEKEEPER OPTIONS]

여기서 [EAL OPTIONS]는 더블 대시 앞에 지정되며 DPDK의 Environmental Abstraction Layer 매개변수를 나타내고, [GATEKEEPER OPTIONS]는 더블 대시 뒤에 지정되며 Gatekeeper 특정 옵션을 나타냅니다.

시스템의 초기 구성(DPDK의 장치 및 메모리 구성 포함)은 stdout에 기록됩니다. Gatekeeper가 부팅되면 모든 정보는 Gatekeeper 로그로 출력됩니다.

패키지 빌드 방법

Gatekeeper Debian 패키지는 아래 명령으로 빌드할 수 있습니다. 이 명령은 저장소 루트에서 실행되며, git 서브모듈이 가져오고 위에서 설명한 대로 빌드 종속성이 설치된 것으로 가정합니다. 패키지 빌드 프로세스 중에 Gatekeeper와 서브모듈이 자동으로 컴파일됩니다.

root@kitploit:~
$ tar --exclude-vcs -Jcvf ../gatekeeper_1.2.0.orig.tar.xz -C .. gatekeeper
$ debuild -uc -us

Gatekeeper 패키지는 상위 디렉토리에서 사용할 수 있습니다.

도구 다운로드
autoconf
flex
bison
libncurses5-dev
libreadline-dev
devscripts
python3
python3-pyelftools
dpdk-devbind.py
libcap-dev
libcap2
meson
ninja-build
pkg-config