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이 포함되어 있습니다.

프로세스

  1. Libreswan이 아직 설치되지 않은 경우 다음 단계를 수행합니다.

    1. libreswan 패키지를 설치합니다.

      # dnf install libreswan
      Copy to Clipboard Toggle word wrap
    2. NSS(Network Security Services) 데이터베이스를 초기화합니다.

      # ipsec initnss
      Copy to Clipboard Toggle word wrap

      이 명령은 /var/lib/ipsec/nss/ 디렉터리에 데이터베이스를 생성합니다.

    3. ipsec 서비스를 활성화하고 시작합니다.

      # systemctl enable --now ipsec
      Copy to Clipboard Toggle word wrap
    4. 방화벽에서 IPsec 포트 및 프로토콜을 엽니다.

      # firewall-cmd --permanent --add-service="ipsec"
      # firewall-cmd --reload
      Copy to Clipboard Toggle word wrap
  2. PKCS #12 파일을 NSS 데이터베이스로 가져옵니다.

    # ipsec import <file>.p12
    Enter password for PKCS12 file: <password>
    pk12util: PKCS12 IMPORT SUCCESSFUL
    correcting trust bits for Example-CA
    Copy to Clipboard Toggle word wrap
  3. 서버 및 CA 인증서의 닉네임을 표시합니다.

    # certutil -L -d /var/lib/ipsec/nss/
    Certificate Nickname     Trust Attributes
                             SSL,S/MIME,JAR/XPI
    
    server1                  u,u,u
    Example-CA               CT,,
    ...
    Copy to Clipboard Toggle word wrap

    구성 파일에 이 정보가 필요합니다.

  4. /etc/ipsec.d/ 디렉터리에 연결에 대한 .conf 파일을 만듭니다. 예를 들어 다음 설정을 사용하여 /etc/ipsec.d/mesh.conf 파일을 만듭니다.

    1. CRL 검사를 활성화하려면 config setup 섹션을 추가합니다.

      config setup
          crl-strict=yes
          crlcheckinterval=1h
      Copy to Clipboard Toggle word wrap

      예제에 지정된 설정은 다음과 같습니다.

      crl-strict=yes
      CRL 검사를 활성화합니다. NSS 데이터베이스에서 CRL을 사용할 수 없는 경우 피어 인증이 거부됩니다.
      crlcheckinterval=1h
      지정된 기간 후에 서버의 인증서에 지정된 URL에서 CRL을 다시 가져옵니다.
    2. 메시의 멤버 간에 트래픽을 적용하는 섹션을 추가합니다.

      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
      Copy to Clipboard Toggle word wrap

      예제에 지정된 설정은 다음과 같습니다.

      left=%defaultroute
      ipsec 서비스가 시작될 때 기본 경로 인터페이스의 IP 주소를 동적으로 설정합니다. 또는 왼쪽 매개 변수를 호스트의 IP 주소 또는 FQDN으로 설정할 수 있습니다.
      leftid=%fromcertrightid=%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) 도움말 페이지를 참조하십시오.

  5. CIDR(Classless inter-domain routing) 형식으로 피어 또는 서브넷을 지정하는 /etc/ipsec.d/policies/server-mesh 정책 파일을 만듭니다.

    192.0.2.0/24
    198.51.100.0/24
    Copy to Clipboard Toggle word wrap

    이러한 설정을 사용하면 ipsec 서비스가 이러한 서브넷의 호스트 간 트래픽을 암호화합니다. 호스트가 IPsec 메시의 멤버로 구성되지 않으면 이 호스트와 메시 멤버 간의 통신이 실패합니다.

  6. ipsec 서비스를 다시 시작하십시오.

    # systemctl restart ipsec
    Copy to Clipboard Toggle word wrap
  7. 정책 파일에 지정한 서브넷의 모든 호스트에서 절차를 반복합니다.

검증

  1. 메시의 호스트로 트래픽을 전송하여 터널을 설정합니다. 예를 들어 호스트를 ping합니다.

    # ping -c3 <peer_in_mesh>
    Copy to Clipboard Toggle word wrap
  2. IPsec 상태를 표시합니다.

    # ipsec status
    Copy to Clipboard Toggle word wrap

    연결이 성공적으로 설정된 경우 출력에는 피어에 대한 다음과 같은 행이 포함됩니다.

    • 인터넷 키 교환 버전 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;
      Copy to Clipboard Toggle word wrap

      보안 연계(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;
      Copy to Clipboard Toggle word wrap

      데이터 트래픽이 통과하는 실제 터널입니다.

  3. 서비스가 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'
    Copy to Clipboard Toggle word wrap

다음 단계

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat