
데브옵스
WireGuard로 멋진 VPN 서버 구축하기 - 2
두줄요약
WireGuard의 공개키 기반 연결에 Keycloak SSO와 키 활성화·만료 정책을 결합했습니다. tc eBPF 맵으로 패킷을 제어하고 만료 키 연결은 Slack으로 알림했습니다.
문제 상황
- WireGuard 공개키 인증만으로 키 유출 시 별도 인증 없이 사설망 접근 가능한 위험
- 키 만료 상태에서도 클라이언트 연결 화면만으로 정상 접근으로 오인 가능한 사용성 문제
해결 방법
- Keycloak SSO 기반 Web UI에서 디바이스별 키 활성화 및 일정 시간 후 만료 처리
- WireGuard 인터페이스의 tc-bpf direct-action으로 활성화 상태에 따른 패킷 허용·차단
- 만료 키 패킷 드롭 감지 후 Slack 알림 전송
구조와 흐름
- 고유 IP를 키로 사용하는 eBPF allow_map에서 활성 상태 1과 차단 상태 0 관리
- VPN 서버의 주기적 만료 확인과 eBPF 맵 값 갱신
- dropped_map의 드롭 패킷 수 감시와 사용자 알림
성능/운영 포인트
- XDP 대신 WireGuard 복호화 이후 Source IP 식별 가능한 tc 지점 선택
- 커널 공간 eBPF 실행과 JIT 기반 패킷 필터링
- 디바이스 삭제만으로 유출·분실 키 무효화


