6.6. 인증서 기반 인증을 사용하여 IPsec 메시 VPN을 수동으로 구성
IPsec 메시는 모든 서버가 다른 모든 서버와 안전하고 직접 통신할 수 있는 완전히 상호 연결된 네트워크를 생성합니다. 이는 여러 데이터 센터 또는 클라우드 공급자에 걸쳐 있는 분산 데이터베이스 클러스터 또는 고가용성 환경에 이상적입니다.
각 서버 쌍 간에 직접 암호화된 터널을 설정하면 중앙 병목 현상 없이 보안 통신을 수행할 수 있습니다. 인증의 경우 CA(인증 기관)에서 관리하는 디지털 인증서를 사용하면 안전하고 확장 가능한 솔루션이 제공됩니다. 메시의 각 호스트는 신뢰할 수 있는 CA에서 서명한 인증서를 제공합니다. 이 방법은 강력하고 검증 가능한 인증을 제공하고 사용자 관리를 단순화합니다. CA에서 액세스를 중앙에서 부여하거나 취소할 수 있으며 Libreswan은 인증서 해지 목록(CRL)에 대해 각 인증서를 확인하여 인증서가 목록에 표시되면 액세스를 거부하여 이를 시행합니다.
사전 요구 사항
공개 키 암호화 표준 #12 (PKCS #12) 파일은 다음 내용과 함께 메시의 각 피어에 있습니다.
- 서버의 개인 키
- 서버 인증서
- CA 인증서
- 필요한 경우 중간 인증서
개인 키 및 CSR(인증서 서명 요청) 생성 및 CA에서 인증서를 요청하는 방법에 대한 자세한 내용은 CA 설명서를 참조하십시오.
서버 인증서에는 다음 필드가 포함되어 있습니다.
-
EKU(Extended Key Usage)는
TLS 웹 서버 인증으로 설정됩니다. - CN(일반 이름) 또는 SAN(주체 대체 이름)은 호스트의 FQDN(정규화된 도메인 이름)으로 설정됩니다.
- X509v3 CRL 배포 지점에는 CRL(Certificate Revocation Lists)에 대한 URL이 포함되어 있습니다.
-
EKU(Extended Key Usage)는
프로세스
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 server1 u,u,u Example-CA CT,, ...구성 파일에 이 정보가 필요합니다.
/etc/ipsec.d/디렉터리에 연결에 대한.conf파일을 만듭니다. 예를 들어 다음 설정을 사용하여/etc/ipsec.d/mesh.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=ondemand authby=rsasig # Local settings settings left=%defaultroute leftid=%fromcert leftcert="<server_certificate_nickname>" leftrsasigkey=%cert leftsendcert=always failureshunt=drop type=transport # Settings related to other peers in the mesh right=%opportunisticgroup rightid=%fromcert예제에 지정된 설정은 다음과 같습니다.
left=%defaultroute-
ipsec서비스가 시작될 때 기본 경로 인터페이스의 IP 주소를 동적으로 설정합니다. 또는왼쪽매개 변수를 호스트의 IP 주소 또는 FQDN으로 설정할 수 있습니다. leftid=%fromcert및rightid=%fromcert- 인증서의 고유 이름(DN) 필드에서 ID를 검색하도록 Libreswan을 구성합니다.
leftcert="<server_certificate_nickname>"- NSS 데이터베이스에 사용된 서버 인증서의 닉네임을 설정합니다.
leftrsasigkey=%cert- 인증서에 포함된 RSA 공개 키를 사용하도록 Libreswan을 구성합니다.
leftsendcert=always- 피어가 CA 인증서에 대해 유효성을 검사할 수 있도록 항상 인증서를 전송하도록 지시합니다.
failureshunt=drop- IPsec 협상이 실패하면 암호화를 적용하고 트래픽을 삭제합니다. 이는 보안 메시에 중요합니다.
right=%opportunisticgroup- 정책 파일에 정의된 동적 원격 피어 그룹에 연결을 적용하도록 지정합니다. 이를 통해 Libreswan은 해당 그룹에 나열된 각 IP 또는 서브넷에 대해 운영적으로 IPsec 터널을 인스턴스화할 수 있습니다.
예제에 사용된 모든 매개변수에 대한 자세한 내용은 시스템의
ipsec.conf(5)도움말 페이지를 참조하십시오.CIDR(Classless inter-domain routing) 형식으로 피어 또는 서브넷을 지정하는
/etc/ipsec.d/policies/server-mesh정책 파일을 만듭니다.192.0.2.0/24 198.51.100.0/24이러한 설정을 사용하면
ipsec서비스가 이러한 서브넷의 호스트 간 트래픽을 암호화합니다. 호스트가 IPsec 메시의 멤버로 구성되지 않으면 이 호스트와 메시 멤버 간의 통신이 실패합니다.ipsec서비스를 다시 시작하십시오.# systemctl restart ipsec- 정책 파일에 지정한 서브넷의 모든 호스트에서 절차를 반복합니다.
검증
메시의 호스트로 트래픽을 전송하여 터널을 설정합니다. 예를 들어 호스트를 ping합니다.
# ping -c3 <peer_in_mesh>IPsec 상태를 표시합니다.
# ipsec status연결이 성공적으로 설정된 경우 출력에는 피어에 대한 다음과 같은 행이 포함됩니다.
인터넷 키 교환 버전 2(IKEv2) 협상의 1단계가 성공적으로 완료되었습니다.
#1: "<connection_name>#192.0.2.0/24"[1] ...192.0.2.2:500 ESTABLISHED_IKE_SA (established IKE SA); REKEY in 12822s; REPLACE in 13875s; newest; idle;보안 연계(SA)는 이제 자식 SA 또는 2단계 SA로 알려진 실제 데이터 암호화 터널을 협상할 준비가 되었습니다.
하위 SA가 설정되었습니다.
#2: "<connection_name>#192.0.2.0/24"[1] ...192.0.2.2:500 ESTABLISHED_CHILD_SA (established Child SA); REKEY in 13071s; REPLACE in 13875s; newest; eroute owner; IKE SA #1; idle;데이터 트래픽이 통과하는 실제 터널입니다.
서비스가 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'
다음 단계
- DHCP 또는 SLAAC(상태 비저장 주소 자동 구성)가 있는 네트워크에서 이 호스트를 사용하는 경우 연결이 리디렉션될 수 있습니다. 자세한 내용 및 완화 단계는 연결이 터널을 우회하지 못하도록 전용 라우팅 테이블에 VPN 연결 할당을 참조하십시오.