다음 항목에서는 ONTAP용 FSx 파일 시스템과 Libreswan IPsec을 실행하는 클라이언트에서 인증서 인증을 사용하여 IPsec 암호화를 구성하는 방법에 대해 설명합니다. 이 솔루션은 AWS Certificate Manager 및 AWS Private Certificate Authority를 사용하여 프라이빗 인증 기관을 생성하고 인증서를 생성합니다.
ONTAP용 FSx 파일 시스템 및 연결된 클라이언트에 대해 인증서 인증을 사용하여 IPsec 암호화를 구성하는 높은 수준의 단계는 다음과 같습니다.
인증서 발급을 위한 인증 기관 준비
파일 시스템 및 클라이언트용 CA 인증서 생성 및 내보내기
클라이언트 인스턴스에 인증서 설치 및 IPsec 구성
파일 시스템에 인증서 설치 및 IPsec 구성
보안 정책 데이터베이스(SPD) 정의
다중 클라이언트 액세스를 위한 IPsec 구성
CA 인증서 생성 및 설치
인증서 인증의 경우 FSx for ONTAP 파일 시스템과, 파일 시스템의 데이터에 액세스할 클라이언트에서 인증 기관의 인증서를 생성하고 설치해야 합니다. 다음 예제에서는 AWS Private Certificate Authority를 사용하여 프라이빗 인증 기관을 설정하고 파일 시스템 및 클라이언트에 설치할 인증서를 생성합니다. AWS Private Certificate Authority를 사용하면 조직 내부에서 사용할 루트 및 하위 CA(인증 기관)의 전체 AWS 호스팅 계층 구조를 생성할 수 있습니다. 이 프로세스에는 다음의 다섯 단계가 있습니다.
AWS Private CA를 사용하여 프라이빗 인증 기관(CA) 생성
프라이빗 CA에 루트 인증서 발급 및 설치
파일 시스템 및 클라이언트용 AWS Certificate Manager에서 프라이빗 인증서 요청
파일 시스템 및 클라이언트용 인증서를 내보냅니다.
자세한 내용은 AWS Private Certificate Authority 사용 설명서의 프라이빗 CA 관리를 참조하세요.
루트 프라이빗 CA 생성
CA를 생성할 때 제공하는 파일에 CA 구성을 지정해야 합니다. 다음 명령은 Nano 텍스트 편집기를 사용하여 다음 정보를 지정하는
ca_config.txt
파일을 생성합니다.알고리즘의 이름
CA가 서명하는 데 사용하는 서명 알고리즘
X.500 주체 정보
$ >
nano ca_config.txt
텍스트 편집기가 표시됩니다.
CA 사양으로 파일을 편집합니다.
{ "KeyAlgorithm":"RSA_2048", "SigningAlgorithm":"SHA256WITHRSA", "Subject":{ "Country":"US", "Organization":"Example Corp", "OrganizationalUnit":"Sales", "State":"WA", "Locality":"Seattle", "CommonName":"*.ec2.internal" } }
파일을 저장한 후 닫고 텍스트 편집기를 종료합니다. 자세한 내용은 AWS Private Certificate Authority 사용 설명서의 CA 생성 절차를 참조하세요.
create-certificate-authority AWS Private CA CLI 명령을 사용하여 프라이빗 CA를 생성합니다.
~/home >
aws acm-pca create-certificate-authority \ --certificate-authority-configuration file://ca_config.txt \ --certificate-authority-type "ROOT" \ --idempotency-token 01234567 --regionaws-region
이 명령이 제대로 실행되면 CA의 Amazon 리소스 이름(ARN)을 출력합니다.
{ "CertificateAuthorityArn": "arn:aws:acm-pca:
aws-region
:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012
" }
프라이빗 루트 CA에 대한 인증서 생성 및 설치(AWS CLI)
get-certificate-authority-csr
AWS CLI 명령을 사용하여 인증서 서명 요청(CSR)을 생성합니다.$
aws acm-pca get-certificate-authority-csr \ --certificate-authority-arn arn:aws:acm-pca:
aws-region
:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \ --output text \ --endpoint https://acm-pca.aws-region
.amazonaws.com \ --region eu-west-1 > ca.csrbase64 형식으로 인코딩된 PEM 파일인 결과 파일
ca.csr
은 다음과 같이 표시됩니다.-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE= -----END CERTIFICATE-----
자세한 내용은 AWS Private Certificate Authority 사용 설명서의 루트 CA 인증서 설치를 참조하세요.
issue-certificate
AWS CLI 명령을 사용하여 프라이빗 CA에 루트 인증서를 발급 및 설치합니다.$
aws acm-pca issue-certificate \ --certificate-authority-arn arn:aws:acm-pca:
aws-region
:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \ --csr file://ca.csr \ --signing-algorithm SHA256WITHRSA \ --template-arn arn:aws:acm-pca:::template/RootCACertificate/V1 \ --validity Value=3650,Type=DAYS --regionaws-region
-
get-certificate
AWS CLI 명령을 사용하여 루트 인증서를 다운로드합니다.$
aws acm-pca get-certificate \ --certificate-authority-arn arn:aws:acm-pca:aws-region
:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \ --certificate-arn arn:aws:acm-pca:aws-region
:486768734100:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/abcdef0123456789abcdef0123456789 \ --output text --regionaws-region
> rootCA.pem import-certificate-authority-certificate
AWS CLI 명령을 사용하여 프라이빗 CA에 루트 인증서를 설치합니다.$
aws acm-pca import-certificate-authority-certificate \ --certificate-authority-arn arn:aws:acm-pca:
aws-region
:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \ --certificate file://rootCA.pem --regionaws-region
파일 시스템 및 클라이언트 인증서 생성 및 내보내기
request-certificate
AWS CLI 명령을 사용하여 파일 시스템 및 클라이언트에서 사용할 AWS Certificate Manager 인증서를 요청합니다.$
aws acm request-certificate \ --domain-name *.ec2.internal \ --idempotency-token 12345 \ --region
aws-region
\ --certificate-authority-arn arn:aws:acm-pca:aws-region
:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012요청이 성공하면 발급한 인증서의 ARN이 반환됩니다.
-
보안을 위해 프라이빗 키를 내보낼 때 프라이빗 키에 암호를 할당해야 합니다. 암호를 생성하여
passphrase.txt
라는 이름의 파일에 저장 -
export-certificate
AWS CLI 명령을 사용하여 이전에 발급된 프라이빗 인증서를 내보냅니다. 내보낸 파일에는 인증서, 인증서 체인, 인증서에 내장된 퍼블릭 키와 관련된 암호화된 프라이빗 2048비트 RSA 키가 포함됩니다. 보안을 위해 프라이빗 키를 내보낼 때 프라이빗 키에 암호를 할당해야 합니다. 다음은 Linux EC2 인스턴스의 예제입니다.$
aws acm export-certificate \ --certificate-arn arn:aws:acm:
aws-region
:111122223333:certificate/12345678-1234-1234-1234-123456789012 \ --passphrase $(cat passphrase.txt | base64)) --regionaws-region
> exported_cert.json 다음
jq
명령을 사용하여 JSON 응답에서 프라이빗 키와 인증서를 추출합니다.$
cat exported_cert.json | jq -r .PrivateKey > prv.key cat exported_cert.json | jq -r .Certificate > cert.pem openssl rsa -in prv.key -passin pass:$passphrase -out decrypted.key
-
다음
openssl
명령을 사용하여 JSON 응답에서 프라이빗 키를 복호화합니다. 명령을 입력하고 나면 암호를 입력하라는 메시지가 표시됩니다.$
openssl rsa -in prv.key -passin pass:$passphrase -out decrypted.key
Amazon Linux 2 클라이언트에 Libreswan IPsec 설치 및 구성
다음 섹션에서는 Amazon Linux 2를 실행하는 Amazon EC2 인스턴스에서 Libreswan IPsec을 설치하고 구성하기 위한 지침을 제공합니다.
Libreswan 설치 및 구성
SSH를 사용하여 EC2 인스턴스에 연결합니다. 이 작업을 수행하는 방법에 대한 구체적인 지침은 Linux 인스턴스용 Amazon Elastic Compute Cloud 사용 설명서의 SSH 클라이언트를 사용하여 Linux 인스턴스에 연결을 참조하세요.
libreswan
을 설치하려면 다음 명령을 실행합니다.$
sudo yum install libreswan
(선택 사항) 이후 단계에서 IPsec을 확인할 때 이러한 설정이 없으면 이러한 속성에 플래그가 지정될 수 있습니다. 먼저 이러한 설정을 사용하지 않고 설정을 테스트해 보는 것이 좋습니다. 연결에 문제가 있는 경우 이 단계로 돌아가서 다음과 같이 변경합니다.
설치가 완료되면 선호하는 텍스트 편집기를 사용하여
/etc/sysctl.conf
파일에 다음 항목을 추가합니다.net.ipv4.ip_forward=1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.lo.send_redirects = 0 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.eth0.rp_filter = 0
파일을 저장하고 텍스트 편집기를 종료합니다.
변경 사항을 적용합니다.
$
sudo sysctl -p
IPsec 구성을 확인합니다.
$
sudo ipsec verify
설치한
Libreswan
버전이 실행 중인지 확인합니다.IPsec NSS 데이터베이스를 초기화합니다.
$
sudo ipsec checknss
클라이언트에 인증서 설치
클라이언트용으로 생성한 인증서를 EC2 인스턴스의 작업 디렉터리에 복사합니다. 사용자
이전에 생성한 인증서를
libreswan
과 호환 가능한 형식으로 내보냅니다.$
openssl pkcs12 -export -in cert.pem -inkey decrypted.key \ -certfile rootCA.pem -out certkey.p12 -name fsx
포맷이 변경된 키를 가져오고, 메시지가 표시되면 암호를 입력합니다.
$
sudo ipsec import certkey.p12
선호하는 텍스트 편집기를 사용하여 IPsec 구성 파일을 생성합니다.
$
sudo cat /etc/ipsec.d/nfs.conf
다음 항목을 구성 파일에 추가합니다.
conn fsxn authby=rsasig left=172.31.77.6 right=198.19.254.13 auto=start type=transport ikev2=insist keyexchange=ike ike=aes256-sha2_384;dh20 esp=aes_gcm_c256 leftcert=fsx leftrsasigkey=%cert leftid=%fromcert rightid=%fromcert rightrsasigkey=%cert
파일 시스템에서 IPsec을 구성한 후 클라이언트에서 IPsec을 시작합니다.
파일 시스템에서 IPsec 구성
이 섹션에서는 FSx for ONTAP 파일 시스템에 인증서를 설치하고 IPsec을 구성하는 방법에 대한 지침을 제공합니다.
파일 시스템에 인증서 설치
루트 인증서(
rootCA.pem)
), 클라이언트 인증서(cert.pem
) 및 복호화된 키(decrypted.key
) 파일을 파일 시스템에 복사합니다. 인증서의 암호를 알아야 합니다.NetApp ONTAP CLI에 액세스하려면 다음 명령을 실행하여 Amazon FSx for NetApp ONTAP 파일 시스템의 관리 포트에 SSH 세션을 설정합니다.
를 파일 시스템의 관리 포트의 IP 주소로 바꿉니다.management_endpoint_ip
[~]$
ssh fsxadmin@
management_endpoint_ip
자세한 내용은 ONTAP CLI를 사용한 파일 시스템 관리 단원을 참조하십시오.
(파일 시스템이 아니라) 클라이언트에서 cat를 사용하여
rootCA.pem
,cert.pem
,decrypted.key
파일의 내용을 나열하여 다음 단계에서 메시지가 표시되면 각 파일의 출력을 복사하여 붙여넣을 수 있습니다.$ >
cat cert.pem
인증서 내용을 복사합니다.
(ONTAP 자체 서명 루트 CA의 경우처럼) ONTAP 측 CA 및 클라이언트 측 CA를 포함하여 상호 인증 중에 사용되는 모든 CA 인증서를 ONTAP 인증서 관리에 설치해야 합니다.
security certificate install
NetApp CLI 명령을 사용하여 다음과 같이 클라이언트 인증서를 설치합니다.FSxID123:: >
security certificate install -vserver
dr
-type client -cert-name ipsec-client-certPlease enter Certificate: Press <Enter> when done
이전에 복사한
cert.pem
파일의 내용을 붙여넣고 Enter 키를 누릅니다.Please enter Private Key: Press <Enter> when done
decrypted.key
파일의 내용을 붙여넣고 Enter 키를 누릅니다.Do you want to continue entering root and/or intermediate certificates {y|n}:
n
을 입력하여 클라이언트 인증서 입력을 완료합니다.SVM에서 사용할 인증서를 생성하고 설치합니다. 이 인증서의 발급자 CA가 이미 ONTAP에 설치되어 있고 IPsec에 추가되어 있어야 합니다.
다음 명령을 사용하여 루트 인증서를 설치합니다.
FSxID123:: >
security certificate install -vserver
dr
-type server-ca -cert-name ipsec-ca-certPlease enter Certificate: Press <Enter> when done
rootCA.pem
파일의 내용을 붙여넣고 Enter 키를 누릅니다.인증 중에 설치된 CA가 IPsec CA 검색 경로 내에 있는지 확인하려면 “security ipsec ca-certificate add” 명령을 사용하여 ONTAP 인증서 관리 CA를 IPsec 모듈에 추가합니다.
다음 명령을 입력하여 루트 인증서를 추가합니다.
FSxID123:: >
security ipsec ca-certificate add -vserver
dr
-ca-certs ipsec-ca-cert다음 명령을 입력하여 보안 정책 데이터베이스(SPD)에 필요한 IPsec 정책을 생성합니다.
security ipsec policy create -vserver
dr
-namepolicy-name
-local-ip-subnets198.19.254.13/32
-remote-ip-subnets172.31.0.0/16
-auth-method PKI -action ESP_TRA -cipher-suite SUITEB_GCM256 -cert-name ipsec-client-cert -local-identity "CN=*.ec2.internal" -remote-identity "CN=*.ec2.internal"다음 명령을 사용하여 확인할 파일 시스템에 대한 IPsec 정책을 표시합니다.
FSxID123:: >
security ipsec policy show -vserver
dr
-instanceVserver: dr Policy Name: promise Local IP Subnets: 198.19.254.13/32 Remote IP Subnets: 172.31.0.0/16 Local Ports: 0-0 Remote Ports: 0-0 Protocols: any Action: ESP_TRA Cipher Suite: SUITEB_GCM256 IKE Security Association Lifetime: 86400 IPsec Security Association Lifetime: 28800 IPsec Security Association Lifetime (bytes): 0 Is Policy Enabled: true Local Identity: CN=*.ec2.internal Remote Identity: CN=*.ec2.internal Authentication Method: PKI Certificate for Local Identity: ipsec-client-cert
클라이언트에서 IPsec 시작
이제 FSx for ONTAP 파일 시스템 및 클라이언트 모두에 IPsec이 구성되었으므로 클라이언트에서 IPsec을 시작할 수 있습니다.
SSH를 사용하여 클라이언트 시스템에 연결합니다.
IPsec을 시작합니다.
$
sudo ipsec start
IPsec의 상태를 확인합니다.
$
sudo ipsec status
파일 시스템에 볼륨을 마운트합니다.
$
sudo mount -t nfs
198.19.254.13:/benchmark
/home/ec2-user/acm/dr
FSx for ONTAP 파일 시스템에 암호화된 연결을 표시하여 IPsec 설정을 확인합니다.
FSxID123:: >
security ipsec show-ikesa -node FsxId
123
FsxId08ac16c7ec2781a58::> security ipsec show-ikesa -node FsxId08ac16c7ec2781a58-01 Policy Local Remote Vserver Name Address Address Initator-SPI State ----------- ------ --------------- --------------- ---------------- ----------- dr
policy-name
198.19.254.13 172.31.77.6 551c55de57fe8976 ESTABLISHED fsxpolicy-name
198.19.254.38 172.31.65.193 4fd3f22c993e60c5 ESTABLISHED 2 entries were displayed.
다중 클라이언트에 대한 IPsec 설정
소수의 클라이언트가 IPsec을 활용해야 하는 경우 각 클라이언트에 대해 단일 SPD 항목을 사용하는 것으로 충분합니다. 그러나 수백 또는 수천 개의 클라이언트가 IPsec을 활용해야 하는 경우에는 IPsec 다중 클라이언트 구성을 사용하는 것이 좋습니다.
FSx for ONTAP은 IPsec이 활성화된 상태에서 여러 네트워크의 여러 클라이언트를 단일 SVM IP 주소에 연결할 수 있도록 지원합니다. 다음 절차에 설명된 subnet
구성 또는 Allow all clients
구성을 사용하여 이 작업을 수행할 수 있습니다.
서브넷 구성을 사용하여 여러 클라이언트에 IPsec 구성
특정 서브넷(예: 192.168.134.0/24)의 모든 클라이언트가 단일 SPD 정책 항목을 사용하여 단일 SVM IP 주소에 연결할 수 있도록 하려면 remote-ip-subnets
를 서브넷 형식으로 지정해야 합니다. 또한 올바른 클라이언트측 자격 증명으로 remote-identity
필드를 지정해야 합니다.
중요
인증서 인증을 사용하는 경우 각 클라이언트는 고유한 인증서 또는 공유 인증서를 사용하여 인증할 수 있습니다. FSx for ONTAP IPsec은 로컬 신뢰 저장소에 설치된 CA를 기반으로 인증서의 유효성을 확인합니다. FSx for ONTAP에서는 인증서 취소 목록(CRL) 검사도 지원합니다.
NetApp ONTAP CLI에 액세스하려면 다음 명령을 실행하여 Amazon FSx for NetApp ONTAP 파일 시스템의 관리 포트에 SSH 세션을 설정합니다.
를 파일 시스템의 관리 포트의 IP 주소로 바꿉니다.management_endpoint_ip
[~]$
ssh fsxadmin@
management_endpoint_ip
자세한 내용은 ONTAP CLI를 사용한 파일 시스템 관리 단원을 참조하십시오.
다음과 같이
security ipsec policy create
NetApp ONTAP CLI 명령을 사용하여샘플
값을 특정 값으로 바꿉니다.FsxId123456::>
security ipsec policy create -vserver
svm_name
-namepolicy_name
\ -local-ip-subnets192.168.134.34/32
-remote-ip-subnets192.168.134.0/24
\ -local-ports2049
-protocolstcp
-auth-method PSK \ -cert-namemy_nfs_server_cert
-local-identityontap_side_identity
\ -remote-identityclient_side_identity
모든 클라이언트 구성 허용을 사용하여 여러 클라이언트에 IPsec 구성
소스 IP 주소와 관계없이 모든 클라이언트가 SVM IPsec 지원 IP 주소에 연결할 수 있도록 하려면 remote-ip-subnets
필드를 지정할 때 0.0.0.0/0
와일드카드를 사용합니다.
또한 올바른 클라이언트측 자격 증명으로 remote-identity
필드를 지정해야 합니다. 인증서 인증의 경우 ANYTHING
을 입력할 수 있습니다.
또한 0.0.0.0/0 와일드카드를 사용하는 경우 사용할 특정 로컬 또는 원격 포트 번호를 구성해야 합니다. NFS 포트 2049를 예로 들 수 있습니다.
NetApp ONTAP CLI에 액세스하려면 다음 명령을 실행하여 Amazon FSx for NetApp ONTAP 파일 시스템의 관리 포트에 SSH 세션을 설정합니다.
를 파일 시스템의 관리 포트의 IP 주소로 바꿉니다.management_endpoint_ip
[~]$
ssh fsxadmin@
management_endpoint_ip
자세한 내용은 ONTAP CLI를 사용한 파일 시스템 관리 단원을 참조하십시오.
다음과 같이
security ipsec policy create
NetApp ONTAP CLI 명령을 사용하여샘플
값을 특정 값으로 바꿉니다.FsxId123456::>
security ipsec policy create -vserver
svm_name
-namepolicy_name
\ -local-ip-subnets192.168.134.34/32
-remote-ip-subnets 0.0.0.0/0 \ -local-ports2049
-protocolstcp
-auth-method PSK \ -cert-namemy_nfs_server_cert
-local-identityontap_side_identity
\ -local-ports2049
-remote-identityclient_side_identity