ocservice: ocserv VPN 서버 자동화를 위한 CLI 도구
ocservice는 ocserv VPN 서버의 운영 관리를 위한 일련의 bash 스크립트입니다. 이 도구는 PKI 작업을 위해 easy-rsa와 통합되어 클라이언트 인증서 생성, 폐기 및 CRL 업데이트를 자동화합니다. Docker나 데이터베이스와 같은 추가 서비스 없이 cert, plain 및 both 인증 모드를 지원합니다.
스크립트는 명령줄에서 실행되며, 메인 메뉴가 호출될 때마다 서버 상태(가동 시간, 세션, 트래픽, 오류)를 표시합니다. 이로써 별도의 occtl 명령 없이도 모니터링이 간소화됩니다.
주요 기능
주 스크립트 ocservice는 현재 상태를 보여주는 메뉴를 제공합니다: 활성 세션, RX/TX 트래픽, 차단된 IP, 인증 오류.
클라이언트 인증서 생성
gen-client는 인증서를 가진 사용자를 생성합니다:
- 이름, 유효 기간, 연결 제한을 입력받습니다.
- easy-rsa를 통해 인증서를 생성합니다.
- 비밀번호와 함께 .p12로 내보냅니다.
- 클라이언트 전달을 위한 데이터를 기록합니다.
비밀번호 사용자
gen-login은 ocpasswd를 사용하여 plain 모드에서 계정을 생성합니다. 비밀번호 인증이 활성화된 경우에만 사용 가능합니다.
사용자 관리 센터
user-center는 표를 표시합니다:
| 사용자 | 온라인 | 인증서 만료 | 차단 점수 | 제한 |
|--------|--------|-------------|------------|-------|
각 사용자에 대해:
- 연결 세부 정보.
- 사용자별 설정 편집.
- 세션 강제 종료.
- 차단 점수 초기화.
- 인증서 폐기 및 CRL 업데이트와 함께 삭제.
설치 및 설정
저장소를 복제하고 설치 프로그램을 실행하세요:
git clone https://github.com/Ilyntiy/ocservice.git
cd ocservice
chmod +x install.sh
sudo ./install.sh
설치 프로그램은:
- ocserv.conf에서 경로(ocpasswd, config-per-user)를 파싱합니다.
- 위장 URL이 활성화된 경우 이를 식별합니다.
- 설치 접두사, 인증 모드, 서버 주소를 입력받습니다.
- ocservice.conf를 생성합니다.
- 스크립트를 ~/bin/에 복사합니다.
- occtl, ocpasswd, journalctl, systemctl에 대한 권한으로 /etc/sudoers.d/ocservice를 구성합니다.
기술적 구현
설정
단일 ocservice.conf가 각 실행 시 소스됩니다. 임의의 ocserv 경로(/opt, 홈 디렉토리)를 지원합니다.
권한
필요한 명령에 대해서만 최소한의 sudo 규칙을 적용하며, 전체 루트 액세스 없이 작동합니다.
위장
ocserv.conf에서 camouflage_secret을 자동으로 읽어 토큰이 포함된 URL을 생성합니다.
PKI 작업
- 인증서 폐기: easyrsa revoke.
- CRL 업데이트: easyrsa gen-crl.
- ocserv는 pki/에서 crl.pem을 직접 읽습니다.
시스템 요구사항
- 소스에서 설치한 ocserv.
- easy-rsa 3.x.
- openssl.
- ocserv.conf에서 use-occtl = true.
개발 계획
- 데이터베이스에서 이름 자동 생성.
- 설정, 인증서, 사용자 백업.
- 재생성 없이 인증서 갱신.
- 만료 알림.
- 관리를 위한 텔레그램 봇.
핵심 포인트
- easy-rsa와 완전 통합: 수동 명령 없이 .p12 생성, 폐기, CRL 관리.
- 추가 인프라 없이 세 가지 인증 모드 지원.
- 메뉴에 서버 상태 표시, 사용자 센터에서 작업(강제 종료, 설정 편집) 가능.
- 자동 sudo 설정과 함께 4개의 명령으로 설치.
- Docker/데이터베이스 없이 표준 도구만 사용.
— Editorial Team
아직 댓글이 없습니다.