6.5. 인증서 기반 인증을 사용하여 IPsec 호스트 간 VPN 수동 구성
호스트 간 VPN은 개별 원격 컴퓨터와 개인 네트워크 간에 안전하고 암호화된 연결을 설정하여 인터넷과 같은 안전하지 않은 공용 네트워크에서 원활하게 연결할 수 있습니다.
호스트 간 VPN은 마치 사무실에 있는 것처럼 자신의 컴퓨터에서 내부 네트워크의 리소스에 액세스해야 하는 원격 직원에게 적합합니다.
인증의 경우 CA(인증 기관)에서 관리하는 디지털 인증서를 사용하면 안전하고 확장 가능한 솔루션이 제공됩니다. 각 연결 호스트와 게이트웨이는 신뢰할 수 있는 CA에서 서명한 인증서를 제공합니다. 이 방법은 강력하고 검증 가능한 인증을 제공하고 사용자 관리를 단순화합니다. CA에서 액세스를 중앙에서 부여하거나 취소할 수 있으며 Libreswan은 인증서 해지 목록(CRL)에 대해 각 인증서를 확인하여 인증서가 목록에 표시되면 액세스를 거부하여 이를 시행합니다.
6.5.1. 수동으로 IPsec 게이트웨이 설정 링크 복사링크가 클립보드에 복사되었습니다!
보안 원격 액세스를 활성화하려면 Libreswan IPsec 게이트웨이를 올바르게 구성해야 합니다. Libreswan은 NSS(Network Security Services) 데이터베이스에서 서버 인증서, 개인 키 및 CA 인증서를 읽습니다.
다음 예제에서는 인증된 클라이언트가 내부 192.0.2.0/24 서브넷에 액세스하고 가상 IP 풀의 IP 주소를 각 클라이언트에 동적으로 할당할 수 있도록 허용합니다. 보안을 유지하기 위해 게이트웨이는 동일한 신뢰할 수 있는 CA에서 클라이언트 인증서를 발급하고 인증서 취소 목록(CRL)을 자동으로 사용하여 취소된 인증서에 대한 액세스가 거부되도록 합니다.
사전 요구 사항
공개 키 암호화 표준 #12(PKCS #12) 파일
~/file.p12는 다음 내용이 있는 게이트웨이에 있습니다.- 서버의 개인 키
- 서버 인증서
- CA 인증서
- 필요한 경우 중간 인증서
개인 키 및 CSR(인증서 서명 요청) 생성 및 CA에서 인증서를 요청하는 방법에 대한 자세한 내용은 CA 설명서를 참조하십시오.
서버 인증서에는 다음 필드가 포함되어 있습니다.
-
EKU(Extended Key Usage)는
TLS 웹 서버 인증으로 설정됩니다. - CN(Common Name) 또는 SAN(주체 대체 이름)은 게이트웨이의 FQDN(정규화된 도메인 이름)으로 설정됩니다.
- X509v3 CRL 배포 지점에는 CRL(Certificate Revocation Lists)에 대한 URL이 포함되어 있습니다.
-
EKU(Extended Key Usage)는
- VPN 클라이언트 트래픽의 반환 경로는 VPN 게이트웨이를 가리키는 내부 네트워크에 구성됩니다.
프로세스
Libreswan이 아직 설치되지 않은 경우:
libreswan패키지를 설치합니다.# dnf install libreswanNSS(Network Security Services) 데이터베이스를 초기화합니다.
# ipsec initnss이 명령은
/var/lib/ipsec/nss/디렉터리에 데이터베이스를 생성합니다.ipsec서비스를 활성화하고 시작합니다.# systemctl enable --now ipsec방화벽에서 IPsec 포트 및 프로토콜을 엽니다.
# firewall-cmd --permanent --add-service="ipsec" # firewall-cmd --reload
PKCS #12 파일을 NSS 데이터베이스로 가져옵니다.
# ipsec import ~/file.p12 Enter password for PKCS12 file: <password> pk12util: PKCS12 IMPORT SUCCESSFUL correcting trust bits for Example-CA서버 및 CA 인증서의 닉네임을 표시합니다.
# certutil -L -d /var/lib/ipsec/nss/ Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI vpn-gateway u,u,u Example-CA CT,, ...구성 파일에 이 정보가 필요합니다.
/etc/ipsec.d/디렉터리에 연결에 대한.conf파일을 만듭니다. 예를 들어 다음 설정을 사용하여/etc/ipsec.d/host-to-site.conf파일을 만듭니다.CRL 검사를 활성화하려면
config setup섹션을 추가합니다.config setup crl-strict=yes crlcheckinterval=1h예제에 지정된 설정은 다음과 같습니다.
crl-strict=yes- CRL 검사를 활성화합니다. NSS 데이터베이스에서 CRL을 사용할 수 없는 경우 클라이언트 인증이 거부됩니다.
crlcheckinterval=1h- 지정된 기간 후에 서버의 인증서에 지정된 URL에서 CRL을 다시 가져옵니다.
게이트웨이 섹션을 추가합니다.
conn <connection_name> # General setup and authentication type auto=start ikev2=insist authby=rsasig # VPN gateway settings left=%defaultroute leftid=%fromcert leftcert="<server_certificate_nickname>" leftrsasigkey=%cert leftsendcert=always leftsubnet=192.0.2.0/24 rekey=no mobike=yes narrowing=yes # Client-related settings right=%any rightid=%fromcert rightrsasigkey=%cert rightaddresspool=198.51.100.129-198.51.100.254 rightmodecfgclient=yes modecfgclient=yes modecfgdns=192.0.2.5 modecfgdomains="example.com" # Dead Peer Detection dpddelay=30 dpdtimeout=120 dpdaction=clear예제에 지정된 설정은 다음과 같습니다.
ikev2=insist- IKEv2 프로토콜을 IKEv1에 대체하지 않고 허용된 유일한 프로토콜로 정의합니다.
left=%defaultroute-
ipsec서비스가 시작될 때 기본 경로 인터페이스의 IP 주소를 동적으로 설정합니다. 또는왼쪽매개 변수를 호스트의 IP 주소 또는 FQDN으로 설정할 수 있습니다. leftid=%fromcert및rightid=%fromcert- 인증서의 고유 이름(DN) 필드에서 ID를 검색하도록 Libreswan을 구성합니다.
leftcert="<server_certificate_nickname>"- NSS 데이터베이스에 사용된 서버 인증서의 닉네임을 설정합니다.
leftrsasigkey=%cert및rightrsasigkey=%cert- 인증서에 포함된 RSA 공개 키를 사용하도록 Libreswan을 구성합니다.
leftsendcert=always- 클라이언트가 CA 인증서에 대해 유효성을 검사할 수 있도록 게이트웨이에 항상 인증서를 전송하도록 지시합니다.
leftsubnet=<subnets>- 클라이언트가 터널을 통해 액세스할 수 있도록 게이트웨이에 연결된 서브넷을 지정합니다.
Mobike=yes- 클라이언트가 네트워크 간에 원활하게 회전할 수 있도록 합니다.
rightaddresspool=<ip_range>- 게이트웨이에서 클라이언트에 IP 주소를 할당할 수 있는 범위를 지정합니다.
modecfgclient=yes-
클라이언트가
modecfgdns매개변수에 설정된 DNS 서버 IP 및modecfgdomains에 설정된 DNS 검색 도메인을 수신할 수 있습니다.
예제에 사용된 모든 매개변수에 대한 자세한 내용은 시스템의
ipsec.conf(5)도움말 페이지를 참조하십시오.패킷 전달을 활성화합니다.
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.confipsec서비스를 다시 시작하십시오.# systemctl restart ipsec구성 파일에서
auto=start를 사용하면 연결이 자동으로 활성화됩니다. 다른 방법을 사용하면 연결을 활성화하려면 추가 단계가 필요합니다. 자세한 내용은 시스템의ipsec.conf(5)도움말 페이지를 참조하십시오.
검증
- 클라이언트를 구성하고 VPN 게이트웨이에 연결합니다.
서비스가 CRL을 로드했는지 확인하고 해당 항목을 NSS 데이터베이스에 추가했는지 확인합니다.
# ipsec listcrls List of CRLs: issuer: CN=Example-CA revoked certs: 1 updates: this Tue Jul 15 10:22:36 2025 next Sun Jan 11 10:22:36 2026 List of CRL fetch requests: Jul 15 15:13:56 2025, trials: 1 issuer: 'CN=Example-CA' distPts: 'https://ca.example.com/crl.pem'
다음 단계
- 클라이언트가 필수 리소스와만 통신할 수 있도록 방화벽 규칙을 구성합니다. 방화벽에 대한 자세한 내용은 방화벽 및 패킷 필터 구성을 참조하십시오.