6.5. 인증서 기반 인증을 사용하여 IPsec 호스트 간 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이 포함되어 있습니다.
  • VPN 클라이언트 트래픽의 반환 경로는 VPN 게이트웨이를 가리키는 내부 네트워크에 구성됩니다.

프로세스

  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
    
    vpn-gateway              u,u,u
    Example-CA               CT,,
    ...
    Copy to Clipboard Toggle word wrap

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

  4. /etc/ipsec.d/ 디렉터리에 연결에 대한 .conf 파일을 만듭니다. 예를 들어 다음 설정을 사용하여 /etc/ipsec.d/host-to-site.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=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
      Copy to Clipboard Toggle word wrap

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

      ikev2=insist
      IKEv2 프로토콜을 IKEv1에 대체하지 않고 허용된 유일한 프로토콜로 정의합니다.
      left=%defaultroute
      ipsec 서비스가 시작될 때 기본 경로 인터페이스의 IP 주소를 동적으로 설정합니다. 또는 왼쪽 매개 변수를 호스트의 IP 주소 또는 FQDN으로 설정할 수 있습니다.
      leftid=%fromcertrightid=%fromcert
      인증서의 고유 이름(DN) 필드에서 ID를 검색하도록 Libreswan을 구성합니다.
      leftcert="<server_certificate_nickname>"
      NSS 데이터베이스에 사용된 서버 인증서의 닉네임을 설정합니다.
      leftrsasigkey=%certrightrsasigkey=%cert
      인증서에 포함된 RSA 공개 키를 사용하도록 Libreswan을 구성합니다.
      leftsendcert=always
      클라이언트가 CA 인증서에 대해 유효성을 검사할 수 있도록 게이트웨이에 항상 인증서를 전송하도록 지시합니다.
      leftsubnet=<subnets>
      클라이언트가 터널을 통해 액세스할 수 있도록 게이트웨이에 연결된 서브넷을 지정합니다.
      mobike=yes
      클라이언트가 네트워크 간에 원활하게 회전할 수 있도록 합니다.
      rightaddresspool=<ip_range>
      게이트웨이에서 클라이언트에 IP 주소를 할당할 수 있는 범위를 지정합니다.
      modecfgclient=yes
      클라이언트가 modecfgdns 매개변수에 설정된 DNS 서버 IP 및 modecfgdomains 에 설정된 DNS 검색 도메인을 수신할 수 있습니다.

    예제에 사용된 모든 매개변수에 대한 자세한 내용은 시스템의 ipsec.conf(5) 도움말 페이지를 참조하십시오.

  5. 패킷 전달을 활성화합니다.

    # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
    # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
    Copy to Clipboard Toggle word wrap
  6. ipsec 서비스를 다시 시작하십시오.

    # systemctl restart ipsec
    Copy to Clipboard Toggle word wrap

    구성 파일에서 auto=start 를 사용하면 연결이 자동으로 활성화됩니다. 다른 방법을 사용하면 연결을 활성화하려면 추가 단계가 필요합니다. 자세한 내용은 시스템의 ipsec.conf(5) 도움말 페이지를 참조하십시오.

검증

  1. 클라이언트를 구성하고 VPN 게이트웨이에 연결합니다.
  2. 서비스가 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

다음 단계:

  • 클라이언트가 필수 리소스와만 통신할 수 있도록 방화벽 규칙을 구성합니다. 방화벽에 대한 자세한 내용은 방화벽 및 패킷 필터 구성을 참조하십시오.

원격 사설 네트워크의 리소스에 액세스하려면 먼저 IPsec VPN 연결을 구성해야 합니다. GNOME 설정 애플리케이션은 NetworkManager에서 IPsec VPN 연결 프로필을 생성하고 터널을 설정하는 그래픽 솔루션을 제공합니다.

사전 요구 사항

  • IPsec VPN 게이트웨이를 구성했습니다.
  • NetworkManager-libreswan-gnome 패키지가 설치되어 있습니다.
  • PKCS #12 파일 ~/file.p12 는 다음 콘텐츠가 있는 클라이언트에 있습니다.

    • 사용자의 개인 키
    • 사용자 인증서
    • CA 인증서
    • 필요한 경우 중간 인증서

    개인 키 및 CSR(인증서 서명 요청) 생성 및 CA에서 인증서를 요청하는 방법에 대한 자세한 내용은 CA 설명서를 참조하십시오.

  • 인증서의 확장 키 사용량(EKU)은 TLS 웹 클라이언트 인증으로 설정됩니다.

프로세스

  1. NSS(Network Security Services) 데이터베이스를 초기화합니다.

    # ipsec initnss
    Copy to Clipboard Toggle word wrap

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

  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
    
    user                     u,u,u
    Example-CA               CT,,
    ...
    Copy to Clipboard Toggle word wrap

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

  4. Super 키를 누른 상태에서 Settings 를 입력하고 Enter 를 눌러 GNOME 설정 애플리케이션을 엽니다.
  5. VPN 항목 옆에 있는 + 버튼을 클릭합니다.
  6. 목록에서 IPsec 기반 VPN 을 선택합니다.
  7. Identity 탭에서 다음과 같이 필드를 작성합니다.

    Expand
    표 6.1. ID 탭 설정
    필드 이름현재의해당 ipsec.conf 매개변수

    이름

    <networkmanager_profile_name>

    해당 없음

    게이트웨이

    <ip_address_or_fqdn_of_the_gateway>

    right

    유형

    IKEv2 (인증서)

    authby

    그룹 이름

    %fromcert

    leftid

    인증서 이름

    <user_certificate_nickname>

    leftcert

    원격 ID

    %fromcert

    rightid

  8. 고급 을 클릭합니다.
  9. 고급 속성 창에서 다음과 같이 연결 탭의 필드를 작성합니다.

    Expand
    표 6.2. 연결 탭 설정
    필드 이름현재의해당 ipsec.conf 매개변수

    원격 네트워크

    192.0.2.0/24

    rightsubnet

    축소

    선택됨

    축소

    MOBIKE 활성화

    제공됨

    Mobike

    delay

    30

    dpddelay

    Timeout

    120

    dpdtimeout

    동작

    삭제

    dpdaction

  10. 적용을 클릭하여 연결 설정으로 돌아갑니다.
  11. 적용을 클릭하여 연결을 저장합니다.
  12. 설정 애플리케이션의 네트워크 탭에서 VPN 프로필 옆에 있는 스위치를 전환하여 연결을 활성화합니다.

검증

  • 원격 네트워크에서 호스트에 대한 연결을 설정하거나 ping합니다.

다음 단계

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat