How to Set up an IKEv2 VPN Server with StrongSwan on Ubuntu 18.04
2021. 4. 2. 00:56소개
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
주의사항:
'해킹보안' 카테고리의 다른 글
[Strongswan] Strongswan이란? Strongswan 개요. (0) | 2021.10.29 |
---|---|
[암호학] 디피-헬먼 키 교환 (Diffie-Hellman key exchange) (0) | 2021.05.11 |
[스터디] Strongswan ePDG WiKi, (0) | 2021.04.01 |
IKE protocol (0) | 2021.01.25 |
[네트워크용어]PDN (0) | 2020.12.01 |