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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
wolfGuard — FIPS 140-3 규격을 준수하는 VPN 커널 모듈 및 사용자 도구로, AES-256-GCM, SHA2-256 및 SECP256R1 암호화를 사용하여 안전한 터널링을 제공하는 WireGuard의 드롭인 대체품입니다. | Kitploit
도구/GitHubGitHub/wolfssl/wolfguard
Encryption/Decryption ToolsNetwork SecurityCryptographyAuthentication
GitHubwolfssl/wolfguard

wolfGuard

FIPS 140-3 규격을 준수하는 VPN 커널 모듈 및 사용자 도구로, AES-256-GCM, SHA2-256 및 SECP256R1 암호화를 사용하여 안전한 터널링을 제공하는 WireGuard의 드롭인 대체품입니다.

저장소 보기
124187일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

FIPS 140-3 암호화를 사용하는 WolfGuard VPN

WolfGuard는 원래 Jason Donenfeld가 설계하고 작성한 Linux 커널 기반 WireGuard의 wolfSSL FIPS 규격 리팩터입니다. 사용법은 본질적으로 동일합니다. WolfGuard에는 두 가지 주요 구성 요소가 있습니다: wolfguard.ko 커널 모듈과 wg-fips 구성 도구입니다. wolfguard.ko는 libwolfssl.ko 커널 모듈에 의존하고, wg-fips는 libwolfssl.so 라이브러리에 의존합니다 — 이러한 의존성은 동일한 wolfSSL 소스에서 커널 모듈과 사용자 라이브러리 구성으로 각각 빌드됩니다. wg-fips-quick 스크립트는 WireGuard의 wg-quick과 정확히 동일하게 작동하지만, SECP256R1 공개 키와 개인 키를 포함하는 /etc/wolfguard의 구성 스크립트를 사용합니다.

WireGuard의 투명한 드롭인 교체를 위해 설치 bin 디렉터리에 wg에서 wg-fips로, wg-quick에서 wg-fips-quick으로의 심볼릭 링크가 설치됩니다. 설치 중에 WireGuard 실행 파일이 발견되면 wg-wireguard 및 wg-wireguard-quick으로 이름이 변경되며, wg-wireguard-quick은 wg-wireguard를 호출하도록 수정되고 안전을 위해 wg-wireguard-quick.unpatched에 복사본이 남겨집니다.

WolfGuard는 WireGuard의 암호화를 다음과 같이 다시 매핑합니다:

WolfGuard와 WireGuard는 동일한 시스템에 공존할 수 있으며, WolfGuard와 WireGuard 터널을 동시에 설정할 수 있습니다.

libwolfssl.ko를 --enable-intelasm으로 구성하면 AES-256-GCM 및 SHA2-256 연산의 CPU 가속 덕분에 WolfGuard의 성능이 CPU 가속 WireGuard와 동일하거나 더 뛰어납니다. --enable-intelasm 없이도 WolfGuard는 CPU 가속 WireGuard보다 약간 느리지만, 최신 CPU에서 기가비트 이더넷을 포화시킬 수 있는 성능을 제공합니다.

빌드 및 설치

아래는 두 가지 지침 세트입니다. 첫 번째는 비FIPS 소스에서 빌드하는 방법이고, 두 번째는 FIPS 인증 소스에서 빌드하는 방법입니다. 두 경우 모두 WolfGuard 사용자 도구와 스크립트는 wg-fips 및 wg-fips-quick으로 이름이 지정되며, FIPS 인증 상태와 관계없이 FIPS 승인 알고리즘을 사용함을 반영합니다. FIPS 인증 및 비인증 WolfGuard 빌드는 서로 완전히 상호 운용 가능하지만 WireGuard와는 상호 운용할 수 없습니다.

--enable-intelasm 옵션은 x86 CPU 대상에서만 사용해야 하며, FIPS의 경우 이를 지원하는 FIPS 소스에서만 사용해야 합니다. 자세한 내용은 [email protected]으로 문의하십시오.

--enable-wolfguard 옵션은 WolfGuard에 필요한 최소 라이브러리/모듈 기능 세트를 활성화합니다. 보다 포괄적인 기능 세트를 원하면 --enable-all-crypto를 사용하십시오.

$가 접두사로 붙은 명령은 일반 사용자가 실행해야 하며, #가 접두사로 붙은 명령은 루트 권한으로 실행해야 합니다. 단, 동일한 작업 디렉터리 컨텍스트에서 실행합니다.

git 소스 대신 wolfSSL 릴리스 아카이브를 사용하는 경우 릴리스 버전이 5.8.4 이상이어야 합니다.

비FIPS git 소스 빌드 및 설치

(1) 소스를 위한 최상위 디렉터리를 만들고 채웁니다:

root@kitploit:~
$ mkdir wolf-sources
$ cd wolf-sources
$ git clone https://github.com/wolfssl/wolfssl --branch nightly-snapshot
$ git clone https://github.com/wolfssl/wolfguard
$ (cd wolfssl && ./autogen.sh)

(2) libwolfssl 사용자 라이브러리를 빌드하고 설치합니다:

참고: 이 단계는 Linux에서 선택 사항입니다. 기본적으로 wg-fips는 키 생성 및 변환 작업을 내부적으로 수행하지 않고 커널 모듈로 오프로드합니다.

root@kitploit:~
$ cd wolfssl
$ ./configure --quiet --enable-wolfguard --enable-all-asm
$ make -j
$ ./wolfcrypt/test/testwolfcrypt
# make install
$ cd ..

(3) wg-fips 사용자 도구를 빌드하고 설치합니다 -- 참고: 설치 시 대상 디렉터리에 기존 WireGuard wg 및 wg-quick 실행 파일과 매뉴얼 페이지가 있으면 각각 wg-wireguard 및 wg-wireguard-quick으로 이동시키고, WolfGuard 버전을 가리키는 wg 및 wg-quick 심볼릭 링크를 설치합니다.

root@kitploit:~
$ cd wolfguard/user-src
$ make -j
# make install
$ cd ../..

Linux에서 기본 커널 모듈 오프로드 대신 내부 키 연산을 강제로 사용하려면 make -j를 make -j NO_IPC_LLCRYPTO=1로 바꾸십시오.

압축 공개 키(압축된 base64 내보내기 길이가 WireGuard Curve25519 공개 키와 동일)를 지원합니다. 다음을 대체하여 활성화할 수 있습니다:

root@kitploit:~
$ make -j EXTRA_CFLAGS=-DWG_USE_PUBLIC_KEY_COMPRESSION

위에서 make -j 대신 사용합니다. 단, WG_USE_PUBLIC_KEY_COMPRESSION이 설정된 WolfGuard는 기본 WolfGuard 설정과 호환되지 않습니다. 설정된 경우 로컬 구성 및 네트워크 협상 모두에서 압축 공개 키가 제공되고 예상됩니다.

(4) libwolfssl 커널 모듈을 빌드하고 설치합니다. /usr/src/linux를 실제 대상 커널 소스 트리의 경로로 바꾸십시오. 해당 커널은 완전히 구성되고 빌드되어야 하며 대상 시스템에서 부팅할 커널과 정확히 일치해야 합니다. 마지막의 modprobe는 기본 실행 중인 시스템을 대상으로 한다고 가정합니다.

root@kitploit:~
$ cd wolfssl
$ ./configure --quiet --enable-wolfguard --enable-cryptonly --enable-intelasm \
   --enable-linuxkm --with-linux-source=/usr/src/linux \
   --prefix=$(pwd)/linuxkm/build
$ make -j module
# make install
# modprobe libwolfssl

libwolfssl 커널 모듈을 프로덕션에 배치하기 전에 확장 자체 테스트를 활성화하여 빌드하고 로드해야 합니다. 위의 ./configure 레시피를 다음으로 바꾸십시오:

root@kitploit:~
$ ./configure --quiet --enable-wolfguard --enable-cryptonly --enable-intelasm \
   --enable-linuxkm --with-linux-source=/usr/src/linux \
   --prefix=$(pwd)/linuxkm/build --enable-crypttests \
   CFLAGS=-DWOLFSSL_LINUXKM_VERBOSE_DEBUG

추가 옵션은 프로덕션에 적합하지 않지만, 해당 옵션으로 구성된 모듈을 대표적인 런타임 환경에서 로드하여 모든 알고리즘이 올바르게 작동하는지 확인해야 합니다.

(5) WolfGuard 커널 모듈을 빌드하고 설치합니다. 다시 한 번 /usr/src/linux를 실제 대상 커널 소스 트리의 경로로 바꾸고, 6.16.5-gentoo를 대상 시스템에서 uname -r이 반환한 실제 값으로 바꾸십시오. 또한 빌드 후의 modprobe는 기본 실행 중인 시스템을 대상으로 한다고 가정합니다.

root@kitploit:~
$ cd ../wolfguard/kernel-src
$ make -j KERNELDIR=/usr/src/linux KERNELRELEASE=6.16.5-gentoo
# make install
# modprobe wolfguard
$ ../user-src/wg-fips genkey | ../user-src/wg-fips pubkey

KERNELRELEASE 값은 효과적으로 대상 커널의 모듈이 설치된 /lib/modules/ 아래 디렉터리의 정확한 이름입니다.

마지막 줄의 genkey 및 pubkey 연산은 기본 기능 테스트입니다. 모든 것이 정상이면 성공하고 무작위 공개 키를 출력합니다.

위의 wg-fips 빌드와 마찬가지로, 압축 공개 키 지원은 위의 make 레시피에 EXTRA_CFLAGS=-DWG_USE_PUBLIC_KEY_COMPRESSION을 추가하여 활성화할 수 있습니다. WG_USE_PUBLIC_KEY_COMPRESSION 설정은 전체 생태계에서 일치해야 합니다.

위의 모든 작업이 성공하면 이제 WolfGuard 터널을 시작할 준비가 된 것입니다. 기존의 WireGuard 플레이북과 스크립팅은 /etc/wireguard를 /etc/wolfguard로 대체하고 WolfGuard wg-fips 도구(wg는 이 시점에서 wg-fips에 대한 링크가 됩니다)를 사용하여 모든 키를 생성하면 직접 사용할 수 있습니다.

FIPS 소스 빌드 및 설치

FIPS 인증 버전의 wolfssl 소스 아카이브는 별도로 제공됩니다. [email protected]으로 문의하십시오.

(1) 소스를 위한 최상위 디렉터리를 만들고 채웁니다. 이 절차는 7z 형식의 wolfssl 아카이브를 가정합니다. 아카이브가 .tar.gz인 경우 tar -xf로 대체하십시오. 두 경우 모두 ln -s 레시피를 조정하여 wolfssl이 추출된 wolfssl 디렉터리에 대한 심볼릭 링크가 되도록 하십시오. 또한 FIPS 커널 모듈 아카이브는 비커널 아카이브와 다르지만, 아래와 같이 FIPS 사용자 라이브러리 빌드에 사용해도 안전합니다.

root@kitploit:~
$ mkdir wolf-sources
$ cd wolf-sources
$ 7z x ~/Downloads/wolfssl-X-fips-linuxvX-kernel.7z
$ ln -s wolfssl-X-fips-linuxvX-kernel wolfssl
$ git clone https://github.com/wolfssl/wolfguard

(2) libwolfssl 사용자 라이브러리를 빌드하고 설치합니다.

참고: 이 단계는 Linux에서 선택 사항입니다. 기본적으로 wg-fips는 키 생성 및 변환 작업을 내부적으로 수행하지 않고 커널 모듈로 오프로드합니다.

root@kitploit:~
$ cd wolfssl
$ ./configure --quiet --enable-fips=vX --enable-wolfguard
$ make -j
$ ./fips-hash.sh
$ make -j
$ ./wolfcrypt/test/testwolfcrypt
# make install
$ cd ..

참고: --enable-fips에 전달하는 인자는 아카이브의 FIPS 종류와 일치해야 합니다. 현재 WolfGuard 사용에 가장 적합한 인자는 v5.2.4와 v6입니다.

(3) wg-fips 사용자 도구를 빌드하고 설치합니다 -- 참고: 설치 시 대상 디렉터리에 기존 WireGuard wg 및 wg-quick 실행 파일과 매뉴얼 페이지가 있으면 각각 wg-wireguard 및 wg-wireguard-quick으로 이동시키고, WolfGuard 버전을 가리키는 wg 및 wg-quick 심볼릭 링크를 설치합니다.

root@kitploit:~
$ cd wolfguard/user-src
$ make -j
# make install
$ cd ../..

Linux에서 기본 커널 모듈 오프로드 대신 내부 키 연산을 강제로 사용하려면 make -j를 make -j NO_IPC_LLCRYPTO=1로 바꾸십시오.

(4) libwolfssl 커널 모듈을 빌드하고 설치합니다. /usr/src/linux를 실제 대상 커널 소스 트리의 경로로 바꾸십시오. 해당 커널은 완전히 구성되고 빌드되어야 하며 대상 시스템에서 부팅할 커널과 정확히 일치해야 합니다.

이것은 2단계 프로세스입니다. 먼저 잘못된 무결성 해시로 모듈을 빌드하고 설치합니다. 그런 다음 로드하여 올바른 해시를 캡처합니다. 이 과정에서 예상되는 'Operation canceled' 오류가 발생하며 조기에 종료됩니다. 그런 다음 올바른 해시로 모듈을 다시 빌드하고 로드합니다. 이 지침은 기본 시스템을 대상으로 한다고 가정합니다. 또한 Linux 커널 모드와 호환되는 가장 낮은 libwolfssl FIPS 버전은 v5.2.4입니다.

root@kitploit:~
$ cd wolfssl
$ ./configure --quiet --enable-fips=vX --enable-wolfguard --enable-cryptonly \
   --enable-linuxkm --with-linux-source=/usr/src/linux \
   --prefix=$(pwd)/linuxkm/build
$ make -j module
# make install
# modprobe libwolfssl

(위의 modprobe는 'Operation canceled' 메시지와 함께 조기에 종료될 것으로 예상됩니다.)

root@kitploit:~
$ NEWHASH=$(dmesg | awk '{if (match($0, " new hash \"([^\"]+)\" ", hash_a)) { hash = hash_a[1]; }} END {print hash}')
$ sed --in-place=.bak "s/^\".*\";/\"${NEWHASH}\";/" wolfcrypt/src/fips_test.c
$ make -j module
# make install
# modprobe libwolfssl

두 번째 modprobe가 첫 번째와 같이 실패하고 커널 로그에 'Update verifyCore[] in fips_test.c with new hash ...' 메시지가 다시 나타나면, 툴체인 및/또는 대상 커널 구성이 재현 가능 빌드를 방해하고 있는 것입니다. 이 경우 위의 NEWHASH= 명령 이후 단계를 대체하는 다음 대체 전략을 사용해야 합니다:

root@kitploit:~
$ make module-update-fips-hash FIPS_HASH="$NEWHASH"
# make install
# modprobe libwolfssl

libwolfssl 커널 모듈을 프로덕션에 배치하기 전에 확장 자체 테스트를 활성화하여 빌드하고 로드해야 합니다. 이를 위해 위의 ./configure 레시피를 다음으로 바꾸십시오:

root@kitploit:~
$ ./configure --quiet --enable-fips=vX --enable-wolfguard --enable-cryptonly \
   --enable-linuxkm --with-linux-source=/usr/src/linux \
   --prefix=$(pwd)/linuxkm/build --enable-crypttests \
   CFLAGS=-DWOLFSSL_LINUXKM_VERBOSE_DEBUG

추가 옵션은 프로덕션에 적합하지 않지만, 해당 옵션으로 구성된 모듈을 대표적인 런타임 환경에서 로드하여 모든 알고리즘이 올바르게 작동하는지 확인해야 합니다.

(5) WolfGuard 커널 모듈을 빌드하고 설치합니다. 다시 한 번 /usr/src/linux를 실제 대상 커널 소스 트리의 경로로 바꾸고, 6.16.5-gentoo를 대상 시스템에서 uname -r이 반환한 실제 값으로 바꾸십시오.

root@kitploit:~
$ cd ../wolfguard/kernel-src
$ make -j KERNELDIR=/usr/src/linux KERNELRELEASE=6.16.5-gentoo
# make install
# modprobe wolfguard
$ ../user-src/wg-fips genkey | ../user-src/wg-fips pubkey

마지막 줄의 genkey 및 pubkey 연산은 기본 기능 테스트입니다. 모든 것이 정상이면 성공하고 무작위 공개 키를 출력합니다.

비FIPS 인증 절차와 마찬가지로 위의 모든 작업이 성공하면 이제 WolfGuard 터널을 시작할 준비가 된 것입니다. 기존의 WireGuard 플레이북과 스크립팅은 /etc/wireguard를 /etc/wolfguard로 대체하고 WolfGuard wg-fips 도구(wg는 이 시점에서 wg-fips에 대한 링크가 됩니다)를 사용하여 모든 키를 생성하면 직접 사용할 수 있습니다. 단, 일부 WireGuard 클라이언트 애플리케이션 및 자동화 프레임워크는 WireGuard 공개 키가 정확히 44자의 base64로 내보내지기를 기대합니다. WolfGuard 공개 키는 WG_USE_PUBLIC_KEY_COMPRESSION으로 빌드되지 않은 경우 대략 그 두 배 길이입니다. WG_USE_PUBLIC_KEY_COMPRESSION은 현재 FIPS v5에서 지원되지 않지만 FIPS v6 이상에서 지원됩니다.

도구 다운로드
알고리즘 범주WireGuardWolfGuard
ECDHCurve25519SECP256R1
AEADXChaCha20-Poly1305AES-256-GCM
digestBlake2sSHA2-256
authenticating digestBlake2s-HMACSHA2-256-HMAC
internal hashSipHashSHA2-256
DRBGChaCha20 DRBGSHA2-256 Hash-DRBG