OpenConnect VPN 서버 설정 방법

가상 사설망(VPN)을 가지고 있는 것은 기술의 시대에서 필수입니다. VPN은 개인 사용뿐만 아니라 기업과 기업에게 점차적으로 중요해졌습니다. 아직 VPN 솔루션을 선택 중이라면 오픈커넥트 VPN을 고려해 보는 것이 어떨까요?

오픈커넥트 VPN은 엔터프라이즈급 성능과 기능을 갖춘 무료 VPN 솔루션입니다. 이 튜토리얼에서는 오픈커넥트 VPN 서버(ocserv)를 설정하고 연결하는 방법을 배우게 됩니다.

계속 읽어보고 네트워크에서 악의적인 개체를 멀리하십시오!

전제 조건

이 튜토리얼은 실습을 포함하고 있습니다. 따라오려면 다음 사항이 갖춰져 있어야 합니다:

  • A Linux server running Debian- This tutorial uses a Debian 11 Bullseye with hostname ocserv-debian.
  • 관리자 권한을 가진 사용자 또는 sudo/root 권한을 가진 비 관리자 사용자.
  • A domain name pointed to your Linux server IP address – This tutorial uses a domain name vpn.atadomain.io.
  • A client machine like Windows 10 or Linux Desktop – This tutorial uses a Windows 10 machine.

오픈커넥트 VPN 서버 설치

오픈커넥트 VPN 서버는 Linux용 오픈 소스 SSL 기반 VPN 서버로, Debian, Ubuntu, RHEL/CentOS, Fedora 등 대부분의 Linux 배포판에서 사용할 수 있습니다.

오픈커넥트 VPN 서버는 데스크톱/컴퓨터부터 모바일(Android 및 iOS)까지 대부분의 클라이언트를 지원합니다. 마찬가지로, 오픈커넥트 VPN 서버는 Radius, OpenID, Kerberos, 스마트 카드와 같은 다양한 인증 백엔드를 지원합니다.

하지만 이러한 기능을 활용하기 전에 먼저 오픈커넥트 VPN 서버를 설치해야 합니다.

1. 서버에 SSH로 연결하고 다음 apt update 명령을 실행하여 패키지 인덱스를 업데이트하고 새로 고칩니다. 이 명령은 최신 패키지 정보를 보장합니다.

sudo apt update
Updating the package repository

2. 다음으로 다음 apt install 명령을 실행하여 ocserv 패키지를 설치합니다.

sudo apt install ocserv -y

설치가 완료되면 새로운 systemd 서비스인 ocserv가 실행됩니다.

Installing the OpenConnect VPN Server

3. 이제 ocserv 서비스가 실행 중인지 확인하려면 다음 systemctl 명령을 실행하세요.

# ocserv 서비스가 활성화되어 있는지 확인
sudo systemctl is-enabled ocserv
# ocserv 서비스가 실행 중인지 확인
sudo systemctl status ocserv

출력에서 볼 수 있듯이 ocserv 서비스 상태가 활성화되어 있고 실행 중입니다.

Verifying the ocserv service is enabled and running

SSL/TLS 인증서 생성

OpenConnect VPN 서버를 설치한 후 다음 단계는 CertbotLetsEncrypt를 통해 SSL/TLS 인증서를 안전하게 생성하는 것입니다.

하지만 인증서를 생성하기 전에, LetsEncrypt에 등록할 이메일 주소와 도메인 이름이 Debian 서버 IP 주소로 지정되어 있는지 확인하십시오.

SSL/TLS 인증서를 생성하려면 다음 단계를 따르십시오:

1. Linux 서버에 certbot을 설치하려면 아래 명령을 실행하십시오.

sudo apt install certbot -y
Installing Certbot

2. 다음으로, 아래 certbot 명령을 실행하여 SSL/TLS 인증서를 생성하십시오. 이메일 주소 ([email protected])와 도메인 이름 (vpn.atadomain.io)을 적절히 변경하십시오.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --no-eff --email [email protected] -d vpn.atadomain.io
Generating SSL/TLS certificates from LetsEncrypt

3. 마지막으로, 다음 명령을 실행하여 생성된 SSL/TLS 인증서가 도메인 디렉토리에 있는지 확인하십시오.

ls /etc/letsencrypt/live/vpn.atadomain.io

성공하면 아래와 같이 공개 키 (fullchain.pem)와 개인 키 (privkey.pem)가 표시됩니다.

Verifying the SSL/TLS certificates exist

OpenConnect VPN 서버 구성

SSL/TSL 인증서가 있어도 OpenConnect VPN 서버를 구성하지 않으면 아무런 작업도 수행되지 않습니다. 다음과 같이 기본 OpenConnect VPN 서버 구성 (/etc/ocserv/ocserv.conf)을 수정하십시오:

  • 기본 인증 방법 변경.
  • OpenConnect VPN 서버에서 UDP 비활성화.
  • 기본 SSL/TLS 인증서 변경.
  • 클라이언트를 위해 도메인 이름과 내부 네트워크 또는 IP 주소 설정.

OpenConnect VPN 서버를 구성하려면 다음 단계를 따르십시오:

1. 첫째로, 아래의 cp 명령을 실행하여 기본 OpenConnect VPN 서버 구성 파일(ocserv.conf)을 /etc/ocserv 디렉토리에 저장된 ocserv.conf.orig로 백업합니다.

sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.orig

2. 그 다음으로, 원하는 편집기를 사용하여 OpenConnect VPN 서버 구성 파일(/etc/ocserv/ocserv.conf)을 엽니다.

3. 아래에 표시된대로 auth 매개변수 값을 plain[passwd=/etc/ocserv/ocpasswd]로 변경합니다. 이렇게 하면 기본 Pluggable Authentication Modules (PAM) 인증이 비밀번호 파일로 대체됩니다.

auth = "plain[passwd=/etc/ocserv/ocpasswd]"
Changing the default authentication to a password file

4. 이제, 기본 UDP 연결을 비활성화하기 위해 udp-port 매개변수 앞에 #을 넣습니다.

OpenConnect VPN을 TCP 전용 모드로 사용하게 되며, 이를 통해 커널 매개변수를 통해 속도를 높일 수 있습니다.

tcp-port = 443
#udp-port = 443
Disabling the UDP support

5. server-cert 매개변수의 인증서 파일 경로를 공개 키로, server-key 매개변수의 경로를 개인 키로 바꿉니다.

server-cert = /etc/letsencrypt/live/vpn.atadomain.io/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.atadomain.io/privkey.pem
Changing the SSL/TLS certificate files path

6. try-mtu-discovery 매개변수 값을 true로 변경하여 MTU 발견을 활성화합니다. 이렇게 하면 OpenConnect VPN 서버의 속도와 성능이 향상됩니다.

try-mtu-discovery = true
Enabling MTU discovery

7. 다음으로, OpenConnect VPN 서버의 도메인 이름을 default-domain 매개변수에 입력하고, ipv4-network 매개변수에서 기본 내부 IP 주소를 변경하십시오.

이 예에서 VPN 클라이언트는 내부 네트워크 10.11.0.0/24를 사용합니다.

default-domain = vpn.atadomain.io
ipv4-network = 10.11.0.0
Setting up the default domain and internal network for VPN clients

8. 기본 route 매개변수를 주석 처리하여 기본 경로 게이트웨이를 비활성화하려면 각 줄의 시작에 # 문자를 추가하십시오. 작업을 완료하면 파일을 저장하고 편집기를 종료하십시오.

#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default
Disabling the default route gateway

9. 이제 다음 명령을 실행하여 ocserv 서비스를 재시작하고 변경 사항을 적용하고 시스템에서 모든 열린 포트(ss)를 나열하십시오.

# ocserv 서비스 재시작 및 변경 사항 적용
sudo systemctl restart ocserv
# 모든 열린 포트 나열
ss -tulpn | grep ocserv

OpenConnect VPN 서버가 실행 중인 경우 아래와 같이 포트 443LISTEN 상태로 표시되며 ocserv 서비스에 의해 사용됩니다.

Checking the ocserv port

OpenConnect VPN 서버에 사용자 추가

OpenConnect VPN 서버가 구성된 후, 연결하려면 VPN 사용자를 만들고 OpenConnect VPN 서버에 추가해야 합니다.

OpenConnect VPN 서버에 사용자를 추가하려면 다음과 같이 VPN 사용자를 만들고 ocpasswd 유틸리티를 사용하여 암호 파일을 생성합니다:

ocpasswd 명령을 실행하여 새 사용자를 만듭니다. 사용자의 새 암호를 입력하고 반복하여 입력하십시오. 이 튜토리얼에서는 사용자 이름으로 atauser를 선택했지만 사용자 지정할 수 있습니다.

사용자가 생성되면 암호 파일(/etc/ocserv/ocpasswd)도 생성됩니다.

sudo ocpasswd -c /etc/ocserv/ocpasswd atauser
Creating an OpenConnect user

이제 다음과 같은 cat 명령을 실행하여 암호 파일의 세부 정보를 확인합니다(/etc/ocserv/ocpasswd).

cat /etc/ocserv/ocpasswd
Checking the password file’s details

Open Crucial Ports에 UFW 방화벽 규칙 추가하기

Debian 시스템에서는 기본 방화벽이 네트워킹에 대한 심층적인 이해가 필요한 IPTables입니다. 왜냐하면 프로세스를 단순화하지 않을까요? 이 튜토리얼에서는 UFW를 기본 방화벽으로 설치하고 구성합니다.

1. 아래 명령을 실행하여 UFW를 설치하고 모든 프롬프트를 자동으로 수락합니다 (-y)

sudo apt install ufw -y
Installing UFW

2. UFW가 설치되면 OpenConnect VPN 서버가 올바르게 작동하도록 중요 포트를 열기 위해 다음 ufw 명령을 실행합니다.

# 포트 22에서 실행되는 OpenSSH 서비스 추가합니다.
sudo ufw allow OpenSSH
# LetsEncrypt 인증서 갱신을 위해 포트 80을 추가합니다.
# OpenConnect VPN 서버에서 사용할 포트 443을 추가합니다.
sudo ufw allow 80,443/tcp
# UFW를 시작하고 활성화합니다.
sudo ufw enable

요청 시, 아래와 같이 작업을 계속하기 위해 Y를 입력하고 Enter를 누르세요.

Adding firewall rules to open ports

마지막으로, UFW 상태를 확인하고 UFW가 실행 중인지 확인하려면 다음 명령을 실행하세요.

sudo ufw status

아래 출력에서는 활성 UFW 상태와 추가된 방화벽 규칙이 표시됩니다.

Checking the UFW status and listing all firewall rules

포트 포워딩 활성화

VPN 서버가 실행 중인 경우 외부에서 서버로의 트래픽을 포트 포워딩을 통해 유도해야 합니다. 데비안 서버에서 커널 매개변수를 통해 포트 포워딩을 허용합니다.

포트 포워딩을 활성화하려면 다음 단계를 따르세요:

터미널에 출력을 생성하지 않지만 /etc/sysctl.d/60-ocserv.conf라는 새 파일을 만드는 다음 명령을 실행하세요. 이 파일에는 시스템에서 포트 포워딩을 활성화하는 커널 매개변수가 포함되어 있습니다.

cat > /etc/sysctl.d/60-ocserv.conf << EOF
net.ipv4.ip_forward = 1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

새로운 커널 매개변수를 적용하고 포트 포워딩을 활성화하려면 아래 sysctl 명령을 실행하세요.

sudo sysctl -p /etc/sysctl.d/60-ocserv.conf
Enabling port forwarding

UFW와 NAT 설정하기

포트 포워딩을 활성화하는 것은 처음 몇 단계 중 하나에 불과합니다. 이번에는 OpenConnect VPN 서버를 통해 VPN 클라이언트가 인터넷이나 특정 네트워크에 연결할 수 있도록 NAT를 설정해야 합니다.

OpenConnect VPN 서버에 NAT를 UFW와 함께 설정하려면 다음 단계를 따르세요:

1. 시스템에서 인터페이스 목록을 확인하려면 다음 명령을 실행합니다.

ip a

이 예에서는 eth1 인터페이스가 VPN 클라이언트의 NAT 게이트웨이가 됩니다.

Checking available interfaces

2. 다음으로 선호하는 편집기를 사용하여 UFW 구성(/etc/ufw/before.rules)을 열고 다음 줄을 *filter 옵션 앞에 추가합니다. 이러한 구성은 VPN 사용자 (나가는 인터페이스 지정) 또는 내부 네트워크를 eth1 인터페이스로 NAT합니다.

VPN 클라이언트 네트워크의 서브넷(10.11.0.0/24)와 인터페이스(eth1)를 귀사의 네트워크 인터페이스로 변경해야 합니다.

# OpenConnect VPN 서버용 NAT
# 클라이언트 네트워크 10.11.0.0/24와 함께
# eth1 인터페이스로
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.11.0.0/24 -o eth1 -j MASQUERADE
COMMIT
Configuring NAT via UFW

3. ufw-before-forward 옵션의 ok icmp code for FORWARD 섹션 아래에 다음 줄을 추가하고 파일을 저장한 후 편집기를 종료합니다.

이러한 구성은 VPN 클라이언트 네트워크의 전송을 허용합니다(출발지 및 목적지).

# VPN 클라이언트 네트워크 전송 허용
-A ufw-before-forward -s 10.11.0.0/24 -j ACCEPT
-A ufw-before-forward -d 10.11.0.0/24 -j ACCEPT
Enabling forwarding for VPN client network

4. 저장한 후 다음 명령을 실행하여 UFW 규칙을 다시로드하고 UFW 서비스를 다시 시작합니다. 이렇게 하면 NAT 구성이 시스템에 적용됩니다.

sudo ufw reload
sudo systemctl restart ufw

5. 마지막으로 UFW의 NAT 상태를 확인하기 위해 다음 iptables 명령을 실행합니다.

sudo iptables -t nat -L POSTROUTING

성공하면 아래와 같은 출력을 받게 됩니다.

OpenConnect-GUI를 통해 OpenConnect VPN 서버에 연결 중

다음은 지침을 따라 완전히 기능하는 OpenConnect VPN 서버가 실행 중인지 확인해야 할 때입니다.

OpenConnect VPN 서버는 실행 중일 수 있지만 확인하는 유일한 최상의 방법이 있습니다 — OpenConnect VPN 서버에 연결합니다.

OpenConnect VPN 서버에 연결하려면 OpenConnect-GUI 애플리케이션을 설치해야 합니다:

1. 좋아하는 웹 브라우저를 열고 OpenConnect-GUI GitHub 페이지를 방문하세요.

2. 다음으로 Windows용 OpenConnect VPN 애플리케이션을 다운로드하고 설치하세요.

Downloading the OpenConnect VPN application for Windows

3. OpenConnect-GUI VPN 클라이언트를 열고 File 메뉴 → ProfilesNew profile (advanced) (또는 Ctrl+Shift+N을 누르세요)를 클릭합니다. 여기에서 새 프로필 세부 정보를 입력할 수 있는 작은 창이 나타납니다 (단계 네).

Creating a new VPN profile

4. 이제 다음과 같이 VPN 프로필 정보를 입력하세요:

  • Name – 연결 이름을 제공하세요 (예: testvpn).
  • Gateway – OpenConnect VPN 서버의 도메인 이름을 지정하세요 (예: https://vpn.atadomain.io).
  • Username – OpenConnect VPN 서버에 추가된 사용자 (예: atauser)입니다.

입력이 완료되면 정보를 저장하고 VPN 프로필을 생성하려면 저장을 클릭하세요.

Configuring the new VPN profile

5. 다음으로, 새로 생성한 VPN 프로필 (testvpn)을 서버로 설정하고, OpenConnect VPN 서버에 연결하려면 연결을 클릭하세요.

Connecting to the OpenConnect VPN Server

6. 프롬프트가 표시되면 VPN 사용자의 비밀번호를 입력하고 확인을 클릭하세요.

Authenticating the connection to the OpenConnect VPN Server

7. 연결되면, 자물쇠의 색이 아래와 같이 녹색으로 변경됩니다.

Confirming successful connection to the OpenConnect VPN Server

8. 마지막으로, VPN 정보 탭을 클릭하여 자세한 연결 상태를 확인하세요. VPN 서버에서 받은 내부 IP 주소, DNS 서버 및 사용하는 TLS 버전이 표시됩니다.

Checking the VPN connection details

결론

이 튜토리얼을 통해 OpenConnect VPN 서버를 설정하는 방법을 배웠습니다. 동시에 SSL/TSL 인증서를 사용하고 방화벽 규칙을 추가하여 OpenConnect VPN 서버에 안전한 연결을 설정하는 방법도 배웠습니다.

이 새로운 지식을 활용하여 왜 OpenConnect VPN 서버를 RadiusOpenID와 같은 다중 인증 백엔드와 통합하지 않으며 클라이언트 인증의 보안 계층을 이중 인증으로 추가하지 않을까요?

Source:
https://adamtheautomator.com/openconnect-vpn/