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이 포함되어 있습니다.
-
EKU(Extended Key Usage)는
- VPN 클라이언트 트래픽의 반환 경로는 VPN 게이트웨이를 가리키는 내부 네트워크에 구성됩니다.
프로세스
Libreswan이 아직 설치되지 않은 경우:
libreswan
패키지를 설치합니다.dnf install libreswan
# dnf install libreswan
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NSS(Network Security Services) 데이터베이스를 초기화합니다.
ipsec initnss
# ipsec initnss
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은
/var/lib/ipsec/nss/
디렉터리에 데이터베이스를 생성합니다.ipsec
서비스를 활성화하고 시작합니다.systemctl enable --now ipsec
# systemctl enable --now ipsec
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 방화벽에서 IPsec 포트 및 프로토콜을 엽니다.
firewall-cmd --permanent --add-service="ipsec" firewall-cmd --reload
# firewall-cmd --permanent --add-service="ipsec" # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
PKCS #12 파일을 NSS 데이터베이스로 가져옵니다.
ipsec import ~/file.p12
# ipsec import ~/file.p12 Enter password for PKCS12 file: <password> pk12util: PKCS12 IMPORT SUCCESSFUL correcting trust bits for Example-CA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 서버 및 CA 인증서의 닉네임을 표시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성 파일에 이 정보가 필요합니다.
/etc/ipsec.d/
디렉터리에 연결에 대한.conf
파일을 만듭니다. 예를 들어 다음 설정을 사용하여/etc/ipsec.d/host-to-site.conf
파일을 만듭니다.CRL 검사를 활성화하려면
config setup
섹션을 추가합니다.config setup crl-strict=yes crlcheckinterval=1h
config setup crl-strict=yes crlcheckinterval=1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제에 지정된 설정은 다음과 같습니다.
crl-strict=yes
- CRL 검사를 활성화합니다. NSS 데이터베이스에서 CRL을 사용할 수 없는 경우 클라이언트 인증이 거부됩니다.
crlcheckinterval=1h
- 지정된 기간 후에 서버의 인증서에 지정된 URL에서 CRL을 다시 가져옵니다.
게이트웨이 섹션을 추가합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제에 지정된 설정은 다음과 같습니다.
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.conf
# 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 Copied! Toggle word wrap Toggle overflow ipsec
서비스를 다시 시작하십시오.systemctl restart ipsec
# systemctl restart ipsec
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성 파일에서
auto=start
를 사용하면 연결이 자동으로 활성화됩니다. 다른 방법을 사용하면 연결을 활성화하려면 추가 단계가 필요합니다. 자세한 내용은 시스템의ipsec.conf(5)
도움말 페이지를 참조하십시오.
검증
- 클라이언트를 구성하고 VPN 게이트웨이에 연결합니다.
서비스가 CRL을 로드했는지 확인하고 해당 항목을 NSS 데이터베이스에 추가했는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 단계:
- 클라이언트가 필수 리소스와만 통신할 수 있도록 방화벽 규칙을 구성합니다. 방화벽에 대한 자세한 내용은 방화벽 및 패킷 필터 구성을 참조하십시오.
6.5.2. GNOME 설정을 사용하여 IPsec VPN 게이트웨이에 연결하도록 클라이언트 구성 링크 복사링크가 클립보드에 복사되었습니다!
원격 사설 네트워크의 리소스에 액세스하려면 먼저 IPsec VPN 연결을 구성해야 합니다. GNOME 설정 애플리케이션은 NetworkManager에서 IPsec VPN 연결 프로필을 생성하고 터널을 설정하는 그래픽 솔루션을 제공합니다.
사전 요구 사항
- IPsec VPN 게이트웨이를 구성했습니다.
-
NetworkManager-libreswan-gnome
패키지가 설치되어 있습니다. PKCS #12 파일
~/file.p12
는 다음 콘텐츠가 있는 클라이언트에 있습니다.- 사용자의 개인 키
- 사용자 인증서
- CA 인증서
- 필요한 경우 중간 인증서
개인 키 및 CSR(인증서 서명 요청) 생성 및 CA에서 인증서를 요청하는 방법에 대한 자세한 내용은 CA 설명서를 참조하십시오.
-
인증서의 확장 키 사용량(EKU)은
TLS 웹 클라이언트 인증으로 설정됩니다
.
프로세스
NSS(Network Security Services) 데이터베이스를 초기화합니다.
ipsec initnss
# ipsec initnss
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은
/var/lib/ipsec/nss/
디렉터리에 데이터베이스를 생성합니다.PKCS #12 파일을 NSS 데이터베이스로 가져옵니다.
ipsec import ~/file.p12
# ipsec import ~/file.p12 Enter password for PKCS12 file: <password> pk12util: PKCS12 IMPORT SUCCESSFUL correcting trust bits for Example-CA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자 및 CA 인증서의 닉네임을 표시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성 파일에 이 정보가 필요합니다.
- Super 키를 누른 상태에서 Settings 를 입력하고 Enter 를 눌러 GNOME 설정 애플리케이션을 엽니다.
- VPN 항목 옆에 있는 버튼을 클릭합니다.
- 목록에서 IPsec 기반 VPN 을 선택합니다.
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
- 고급 을 클릭합니다.
고급 속성 창에서 다음과 같이 연결 탭의 필드를 작성합니다.
Expand 표 6.2. 연결 탭 설정 필드 이름 현재의 해당 ipsec.conf
매개변수원격 네트워크
192.0.2.0/24
rightsubnet
축소
선택됨
축소
MOBIKE 활성화
제공됨
Mobike
delay
30
dpddelay
Timeout
120
dpdtimeout
동작
삭제
dpdaction
- 클릭하여 연결 설정으로 돌아갑니다.
- 클릭하여 연결을 저장합니다.
- 설정 애플리케이션의 네트워크 탭에서 VPN 프로필 옆에 있는 스위치를 전환하여 연결을 활성화합니다.
검증
- 원격 네트워크에서 호스트에 대한 연결을 설정하거나 ping합니다.
다음 단계
- DHCP 또는 SLAAC(상태 비저장 주소 자동 구성)가 있는 네트워크에서 이 호스트를 사용하는 경우 연결이 리디렉션될 수 있습니다. 자세한 내용 및 완화 단계는 연결이 터널을 우회하지 못하도록 전용 라우팅 테이블에 VPN 연결 할당을 참조하십시오.