WireGuard · 2026-03-01

WireGuard와 LDAP/RADIUS 인증 서버 연동 방법

WireGuard를 LDAP 및 RADIUS와 연동해 중앙 인증을 구축하는 개념, 구성 요소별 역할, FreeRADIUS·LDAP 설정 포인트, 인증 키 발급 스크립트 예제와 운영상 주의사항을 정리한 연동

작성일 : 2026-03-01 ㆍ 작성자 : 관리자
post
목차

개요

목적

WireGuard는 경량의 암호화된 터널을 제공하지만 기본적으로 사용자 인증 체계를 내장하지 않는다. LDAP 또는 RADIUS로 인증을 통합하면 중앙 사용자 관리와 계정 회수, 그룹 기반 접근 제어가 가능해진다. 이 글은 WireGuard LDAP 통합과 WireGuard Radius 인증을 구현하는 전체 흐름을 설명한다.

어떤 경우에 유리한가

기업이나 교육기관처럼 계정 중앙 관리가 필요한 곳에서 유리하다. 사용자가 퇴사하거나 권한이 변경될 때 중앙 인증에서 일괄 적용이 가능하다. 특히 여러 서버에 분산된 키 관리를 줄이고, 인증 로그를 RADIUS로 통합할 수 있다.

기본 아키텍처

구성 요소

  • WireGuard 서버: 실제 터널 엔드포인트 및 키 관리 지점
  • 인증 브릿지(간단한 API/스크립트): 사용자 인증을 RADIUS/LDAP에 질의하고, 승인 시 WireGuard에 피어를 동적 등록
  • FreeRADIUS: RADIUS 방식 인증 제공 및 LDAP 연동으로 사용자 정보 조회
  • LDAP 디렉토리: 계정, 그룹, 속성 저장

흐름 요약

  • 클라이언트는 사용자 인증 정보(예: 사용자명/비밀번호) 제출
  • 인증 브릿지가 RADIUS(또는 LDAP)로 인증 요청
  • 인증 성공 시 브릿지가 WireGuard 키를 생성하고 서버에 등록
  • 클라이언트는 서버로부터 발급된 키와 IP를 받아 연결

사전 준비

요구사항

  • WireGuard (커널 모듈 또는 wireguard-go)
  • FreeRADIUS 3.x와 LDAP 모듈
  • 서버에서 실행되는 인증 브릿지(간단한 쉘/파이썬 스크립트 가능)

정책 설계

사용자당 고정 IP 할당 방식 또는 동적 할당 방식을 결정한다. 그룹별 접근 제어가 필요하면 LDAP 그룹을 기준으로 정책을 만든다. 키 수명(일회용 vs 장기)을 정의하면 자동 갱신 로직을 설계하기 쉽다.

FreeRADIUS와 LDAP 통합 예제

간단한 FreeRADIUS 사용자 정의 (예시)

테스트 환경에서는 users 파일에 기본 계정을 추가해 동작을 확인한다. 운영 환경에서는 LDAP 모듈을 활성화해 중앙 디렉토리를 조회하도록 설정한다.

# /etc/freeradius/3.0/mods-enabled/ldap
# LDAP 모듈은 서버 환경에 맞게 설정 필요
# users 파일 예시 (테스트 용)
username Cleartext-Password := "password"
    Reply-Message = "Auth OK"

RADIUS로 인증 요청하는 브릿지 예제

아래 스크립트는 radclient를 사용해 RADIUS 인증을 요청하고, 성공 시 WireGuard 키를 생성해 서버에 동적으로 등록하는 예시이다. 실제 환경에서는 예외 처리와 로깅, 입력 검증이 필요하다.

# auth-and-register.sh (간단 예시)
#!/bin/bash
USER="$1"
PASS="$2"
RADIUS_SERVER="127.0.0.1:1812"
RADIUS_SECRET="testing123"

# RADIUS 인증 (radclient 필요)
REPLY=$(printf "User-Name=%s,User-Password=%s\n" "$USER" "$PASS" | radclient $RADIUS_SERVER auth $RADIUS_SECRET 2>/dev/null)
if echo "$REPLY" | grep -q "Access-Accept"; then
  # 키 생성
  PRIV=$(wg genkey)
  PUB=$(echo "$PRIV" | wg pubkey)
  CLIENT_IP="10.10.0.$((100 + RANDOM % 50))/32"
  # WireGuard에 피어 추가 (root 권한 필요)
  wg set wg0 peer $PUB allowed-ips $CLIENT_IP
  # 클라이언트용 구성 출력
  echo "[Interface]"
  echo "PrivateKey: (client side private key shown to user)"
  echo "[Peer]"
  echo "PublicKey: $(cat /etc/wireguard/server.pub)"
  echo "Endpoint: vpn.example.com:51820"
  echo "AllowedIPs: 0.0.0.0/0"
else
  echo "Authentication failed"
  exit 1
fi

WireGuard 서버 설정 핵심

서버 구성 포인트

  • 서버의 키는 안전한 위치에 보관
  • 동적 피어 추가 시 구성파일 백업과 일관성 유지
  • 피어 삭제/만료 로직을 명확히 하여 계정 회수 보장

보안 고려사항

인증 브릿지와 RADIUS 통신은 암호화(예: TLS) 또는 안전한 내부망을 사용한다. 사용자 비밀번호 노출을 예방하고, 로그에는 민감 정보를 남기지 않도록 주의한다. 또한 키 교체 주기를 미리 계획하면 만료된 키로 인한 보안 사고를 줄일 수 있다.

운영 팁과 주의사항

  • 테스트 환경에서 먼저 전체 흐름을 검증한 뒤 운영에 반영
  • 장애 복구 절차 마련: RADIUS 장애 시 임시 접근 방안과 알림 체계
  • 로그 중앙화: 인증 성공/실패를 RADIUS 로그로 수집해 모니터링
  • 권한 변경 시 자동으로 WireGuard 피어를 제거하는 자동화 적용

결론

WireGuard 인증 서버 연동은 직접적인 사용자 인증 기능이 부족한 WireGuard의 한계를 보완한다. FreeRADIUS와 LDAP를 조합하면 중앙화된 사용자 관리, 그룹 기반 정책, 감사 로그 통합이 가능하다. 핵심은 인증 브릿지의 견고한 구현과 키 수명 관리, 그리고 RADIUS-LDAP 설정의 정확성이다. 단계별로 테스트하며 접근 제어 규칙과 자동화 로직을 단계적으로 도입하면 안정적인 운영이 가능하다.

WireGuard LDAP 통합 WireGuard Radius 인증 WireGuard 인증 서버 연동 FreeRADIUS LDAP 인증 WireGuard 설정 VPN 인증 통합 WireGuard 자동 키 발급