반응형

소개

 Virtual Private Network, 또는 VPN은 우리를 안전하게 트래픽을 암호화 시켜줍니다. 그것이 신뢰되지않은(untrusted) 네트워크를 통과할 때 말이죠. (신뢰되지 않은 네트워크는 공항, 회의실, 커피샵에서의 공용 네트워크를 말합니다)

 

IKEv2, 또는 Internet Key E

 

 

전제조건

이것을 설치하기 위해서, Ubuntu 18.04가 필요합니다.

 

STEP 1. Installing StrongSwan

$ sudo apt update

$ sudo apt install strongswan strongswan-pki

 

지금 모든것이 설치되면 우리의 인증서를 만드는 단계로 이동하면 됩니다

 

STEP 2. Creating a Certificate Authority

인증 기관 생성

인증 기관 = Certificate Authrotiy

 

$ mkdir -p ~/pki/{cacerts,certs,private}

$ chmod 700 ~/pki

 

지금 우린 모든것을 저장하기 위해 디렉토리 구조를 가졌습니다. 우린 ROOT key를 만들 수 있습니다. 이것은 4096-bit RSA key입니다. 그 키는 우리의 ROOT 인증 기관에 서명(확인)하기 위해 사용됩니다.

 

key를 생성하기위 아래의 커맨드를 실행합니다.

$ ipsec pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem

 

이제 우리는 키를 가졌습니다. 우리는 그다음으로 우리의 ROOT 인증 기관 생성 단계로 갈 수 있습니다.  (인증서에 서명하는 키를 사용하여)

 

$ ipsec pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \

$    --type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem

 

원하는 경우 고유 이름(distinguished name, DN)값을 다른 것으로 변경할 수 있습니다. 보통 이름은 단지 지시자, 그래서 그것은 가질 수 없습니다. 어떤 것과 맞는 너의 내부구조와.

 

이제 루트 인증 기관을 설정하고 실행 했으므로 VPN 서버에서 사용할 인증서를 만들 수 있습니다.

 

STEP 3. Generating a Certificate for the VPN Server

VPN서버를 위한 만듬 인증서를 

 

 우리는 이제 VPN서버를 위한 인증서와 키를 만들겁니다. 이 인증서는 클라이언트가 우리가 만든 CA 인증서를 사용함으로써 우리가 접속할 서버인지를 (서버가 진짜인지를) 검증합니다.

 

첫째로 아래의 커맨드를 이용하여 VPN 서버를 위한 개인키(Private Key)를 만듭니다.

$ ipsec pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem

 

이제 이전 단계에서 만든 인증 기관의 키로 VPN 서버 인증서를 만들고 서명합니다. 아래의 커맨드를 실행합니다. 하지만 Common Name (CN) 그리고 Subject Alternate Name(SAN) 필드를 당신의 VPN 서버의 DNS name 또는 IP 주소로 바꾸십시오

 

(Shell Command)
ipsec pki --pub --in ~/pki/private/server-key.pem --type rsa \
    | ipsec pki --issue --lifetime 1825 \
        --cacert ~/pki/cacerts/ca-cert.pem \
        --cakey ~/pki/private/ca-key.pem \
        --dn "CN=server_domain_or_IP" --san "server_domain_or_IP" \
        --flag serverAuth --flag ikeIntermediate --outform pem \
    >  ~/pki/certs/server-cert.pem

 

이제 우리는 만들었습니다. TLS/SSL파일의 모든 것을 StrongSwan이 필요한.

우리는 파일을 움지깅ㄹ 수 있습니다. 곳 안으로, /etc/ipsec.d 디렉터리 안으로, 타이핑 쳐가지고.

 

$ sudo cp -r ~/pki/* /etc/ipsec.d/

 

인증 페어를 만들었음.

이 스텝에서, 우리는 인증 페어를 만들었습니다. 그 인증 페어는 클라이언트와 서버 사이의 통신을 보호하는 데 사용됩니다. 우리는 또한 서명했습니다. 이증서를, CA key를 가지고, 그래서 클라이언트는 검증할 수 있습니다. 확실성을 VPN 서버의 사용함으로써 CA 인증서를. 이제 모든 인증서가 준비되었습니다. 우리는 소프트웨어를 구성하는 단계로 갈수 있습니다.

 

STEP 4. Configuing StrongSwan

StrongSwan 디폴트 환경설정(Configuration)파일을 가집니다. 몇가지 예제를 가지고,

하지만 우리는 환경설정의 대부분을 해야합니다. 우리 자신들자체로.

처음부터 시작하기 전에 참조할 파일들을 백업해보겠습니다.

 

$ sudo mv /etc/ipsec.conf{,.original}

 

만들고 여십시오 새로운 빈 환경설정파일을 다음을 타이핑해서

 

$ sudo nano /etc/ipsec.conf

 

먼저 StrongSwan에 디버깅을 위해 데몬 상태를 기록하고 중복 연결을 허용하도록 지시합니다. 파일에 다음 행을 추가하십시오.

 

// /etc/ipsec.conf
config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

 

그리고나서 우리의 VPN을 위해 환경설정 섹션을 만들어야합니다. 우리는 또한 StrongSwan이 IKEv2 VPN Tunnel들을 만들 수 있도록 지시합니다. 그리고 자동적으로 이 환경설정 섹션을 로드할 수 있도록 지시합니다. StrongSwan이 시작할 때 말이죠. 아래의 라인을 파일에 추가합니다.

 

// /etc/ipsec.conf
. . .
conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes

 

우리는 또한 Dead-Peer detection (데드-피어 감지)를 구성할 수 있습니다. 목적은 클라이언트가 예상치못한 연결이 끊키는 상황에서 어떤 "dangling(결과가 없고 매달려있는)" 연결을 없애기 위함입니다.

 

 

// /etc/ipsec.conf
. . .
conn ikev2-vpn
    . . .
    dpdaction=clear
    dpddelay=300s
    rekey=no

 

그런 다음 서버 (왼쪽) 측 IPSec 매개 변수를 구성합니다. 다음을 파일에 추가하십시오.

// /etc/ipsec.conf
. . .
conn ikev2-vpn
    . . .
    left=%any
    leftid=@server_domain_or_IP
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0

 

주의사항: 

 

www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-18-04-2

반응형