주:

Let's Encrypt Certificates로 OCI Network Firewall 및 OCI WAF Regional을 사용하여 애플리케이션 보호

소개

광범위한 디지털 혁신에 의해 형성된 환경에서 애플리케이션을 보호하는 것은 더 이상 선택 사항이 아닙니다. 이는 중요한 우선순위입니다. 조직이 워크로드를 Oracle Cloud Infrastructure(OCI)로 전환함에 따라 사이버 위협에 대한 강력한 방어를 구현하는 것이 필수적입니다. OCI는 애플리케이션을 강화할 수 있는 다양한 툴을 제공하며, 본 사용지침서에서는 OCI Network Firewall 및 OCI Web Application Firewall(WAF) 지역/지역을 사용하여 디지털 자산을 보호하는 방법을 안내합니다.

템플리트

이 튜토리얼이 필수적인 이유는 무엇입니까?

애플리케이션이 외부 세계와 통신함에 따라 사이버 보안 위협의 끊임없는 도전에 직면하게 됩니다. 이 사용지침서에서는 OCI Network Firewall 및 OCI WAF 리전의 성능을 활용하여 다계층 방어를 구축하고 알려진 위협과 새로운 위협으로부터 애플리케이션을 보호할 수 있습니다. 다중 도메인 지원 및 표준 도구를 사용하여 X.509 인증서 생성 또는 갱신을 포함한 중요한 개념을 살펴볼 것입니다. 또한 널리 알려진 무료 서비스 Let's Encrypt의 사용에 대해 자세히 살펴볼 것입니다. 이를 통해 애플리케이션 보안을 위한 필수 사례를 포괄적으로 이해할 수 있습니다.

이 튜토리얼은 누구를 위한 것입니까?

이 사용지침서는 OCI 보안 기능에 대한 포괄적인 이해를 원하는 클라우드 설계자, 보안 전문가 및 개발자를 위해 마련되었습니다. 노련한 클라우드 실무자이든 클라우드 보안으로의 여정을 시작하든 관계없이 이 자습서에서는 애플리케이션을 강력하게 방어할 수 있는 기술을 갖추게 됩니다.

OCI Network Firewall이란?

Oracle Cloud Infrastructure Network Firewall은 Palo Alto Networks를 사용하여 구축된 최첨단 관리형 방화벽 서비스를 나타냅니다. 차세대 방화벽 기술(NGFW) OCI 워크로드를 보호하기 위한 머신 러닝 기반 방화벽 기능을 제공하며 OCI에서 사용하기 쉽습니다. OCI 네이티브 서비스형 방화벽인 OCI Network Firewall을 사용하면 추가적인 보안 인프라를 구성 및 관리할 필요 없이 방화벽 기능을 활용할 수 있습니다. OCI 네트워크 방화벽 인스턴스는 내장된 고가용성으로 확장성이 뛰어나며, 사용자가 선택한 VCN(가상 클라우드 네트워크) 및 서브넷에 생성할 수 있습니다.

OCI 네트워크 방화벽 서비스는 클라우드 환경에 들어오는 데이터의 흐름에 대한 심층적인 인사이트를 제공하여 수신 및 서브넷 간 또는 VCN 간 통신을 모두 처리합니다. 본질적으로, 그것은 남북 네트워크 트래픽과 동서 네트워크 트래픽에 대한 가시성을 제공합니다. 자세한 내용은 OCI Network Firewall을 참조하십시오.

OCI Web Application Firewall Regional/Local이란?

OCI WAF(Web Application Firewall)는 SQL 삽입, XSS(교차 사이트 스크립팅) 및 분산 서비스 거부(DDoS)와 같은 일반적인 보안 위협 및 공격으로부터 웹 애플리케이션을 보호하는 데 도움이 되는 클라우드 기반 보안 서비스입니다. OCI WAF 리전은 일반적으로 리전 레벨에 배포되며 OCI 로드 밸런서와 통합되어 유연하고 확장 가능한 방어 메커니즘을 제공하는 최신 버전의 WAF입니다. 자세한 내용은 OCI 웹 애플리케이션 방화벽을 참조하십시오.

구조

구조

이 제안된 아키텍처에는 다음 구성 요소를 사용하여 테넌시 워크로드에 대한 총 보호가 포함됩니다.

데이터 흐름 다이어그램

네트워크 데이터 플로우는 다음 네트워크 다이어그램, 녹색 점선으로 들어오는 요청, 빨간색 점선으로 된 응답에서 쉽게 볼 수 있습니다.

구조

이 다이어그램은 남북 트래픽을 위해 OCI Network Firewall을 배포하기 위한 모범 사례를 준수합니다. 초기 단계에서는 수신 트래픽(녹색으로 표시되고 계층 7에서 작동)이 인터넷 게이트웨이를 통해 지정됩니다. 인터넷 게이트웨이에는 로드 밸런서 서브넷(192.168.6.0/24)을 대상으로 하는 모든 트래픽을 NGFW 전용 IP로 전환하기 위한 연관된 라우팅 테이블이 있습니다. 이렇게 하면 수신 트래픽이 검사를 위해 NGFW를 통과하게 됩니다.

네트워크 흐름에 따라 트래픽은 인터넷 게이트웨이에서 OCI 네트워크 방화벽 또는 차세대 방화벽(NGFW)으로 진행됩니다. OCI 네트워크 방화벽은 TLS/SSL 연결을 종료하지 않고 트래픽을 원활하게 수신합니다. OCI 네트워크 방화벽은 해독 프로파일을 적용하여 TLS 트래픽을 해독하므로 심층적인 패킷 검사를 수행할 수 있습니다. 자세한 내용은 SSL 암호 해독을 위한 OCI 네트워크 방화벽 사용을 참고하세요.

OCI 네트워크 방화벽이 트래픽을 철저히 검사하면 먼저 TLS/SSL 연결을 종료하는 OCI 로드 밸런서로 진행됩니다. 그런 다음 연결된 WAF는 해독된 트래픽에 대해 심층적인 패킷 검사를 수행하여 백엔드 서버로 전달하기 전에 해당 트래픽이 깨끗한지 확인합니다. 그런 다음 로드 밸런서가 로드 밸런싱 경로 지정을 실행하고 선택한 백엔드 서버에 대한 보조 접속을 시작합니다.

백엔드 서버의 반환 트래픽의 경우 백엔드 서버는 처음에 OCI 로드 밸런서에 응답합니다(빨간색으로 표시되고 계층 7에서 작동). 로드 밸런서에 도달하면 연결된 WAF는 먼저 반환된 트래픽을 검사하여 보안 표준을 충족하는지 확인합니다. WAF 검사 후 로드 밸런서는 OCI Network Firewall이 응답에 대한 추가 보안 검사를 수행하는 전용 IP로 다시 트래픽의 경로를 지정합니다. 방화벽에서 검사한 후에는 NGFW 서브넷과 연관된 경로 지정 테이블을 기반으로 트래픽이 인터넷 게이트웨이로 경로 지정됩니다. IGW에서 반환된 트래픽은 인터넷을 통해 원래 클라이언트로 전달됩니다.

목표

이 튜토리얼의 주요 목표는 OCI Network Firewall과 함께 OCI WAF를 지역별로 효과적으로 설정함으로써 사용자가 클라우드 워크로드를 강화할 수 있도록 지원하는 것입니다. Let's Encrypt의 서명된 X.509 인증서를 OCI 로드 밸런서 프론트엔드에 통합함으로써 사용자는 안전하고 검증된 연결을 보장할 수 있습니다. 이 사용지침서에서는 사용자가 남북 트래픽에 대한 OCI 네트워크 방화벽 모범 사례를 구현하여 OCI 로드 밸런서를 애플리케이션 배포하도록 안내합니다. 특히 이 구성은 자체 서명되지 않은 인증서를 사용하여 OCI 로드 밸런서를 단독 구성 요소로 전략적으로 지정합니다. Let's Encrypt 인증서는 TLS(Transport Layer Security)를 사용하는 다른 요소는 관리하기 쉬운 번거롭지 않은 자체 서명 인증서를 사용합니다.

필요 조건

작업 1: OCI Web Application Firewall 로컬 배치

배포하려는 첫 번째 구성요소는 로컬 WAF입니다.

  1. OCI 콘솔에 로그인하고 웹 애플리케이션 방화벽을 누릅니다.

    WAF 메뉴 1

  2. 정책에서 WAF 정책 생성을 누르고 다음 정보를 입력합니다. 다음을 누릅니다.

    WAF 메뉴 1

  3. 액세스 제어 정책에서 액세스 제어가 필요한 경우 액세스 제어 사용을 선택합니다. 자세한 내용은 웹 애플리케이션 방화벽 정책에 대한 액세스 제어를 참조하십시오.

    WAF 메뉴 1

  4. 비율 제한 정책에서 비율 제한이 필요한 경우 비율 제한 규칙을 구성하려면 사용으로 설정을 선택합니다. 자세한 내용은 웹 응용 프로그램 방화벽의 비율 제한을 참조하십시오.

    WAF 메뉴 1

  5. 보호 구성이 필요한 경우 보호 규칙을 구성하려면 사용으로 설정을 선택합니다. 자세한 내용은 웹 응용 프로그램 방화벽 보호를 참조하십시오.

    WAF 메뉴 1

  6. 집행 지점 선택에서 이 메뉴의 목적은 새로 생성된 WAF 정책을 기존 로드 밸런서에 첨부하는 것입니다. 로드 밸런서가 생성되지 않았거나 현재 사용 가능한 로드 밸런서가 없는 경우 이 단계를 건너뛰고 로드 밸런서를 생성할 때 정책을 연결할 수 있습니다.

    WAF 메뉴 1

작업 2: Let's Encrypt로 서버 인증서 서명

이 자습서에서는 Let's Encrypt라는 무료 공용 CA 서비스를 사용하여 서버 인증서에 서명합니다. 따라서 체인 인증서는 다음과 같이 표시됩니다.

1.-End-user Certificate - Issued to: *.example.com; Issued By: Let’s Encrypt R3
2.-Intermediate Certificate 1 - Issued to: Let’s Encrypt R3 (RSA 2048, O = Let's Encrypt, CN = R3); Issued By: Signed by ISRG Root X1:ISRG Root X1 (RSA 4096, O = Internet Security Research Group, CN = ISRG Root X1)
3.-Root certificate - Issued by and to: ISRG Root X1 (RSA 4096, O = Internet Security Research Group, CN = ISRG Root X1) , Selfsigned

In PEM format:

-----BEGIN CERTIFICATE-----
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yNDAxMTUxNjAyMTNaFw0yNDA0MTQxNjAyMTJaMBgxFjAUBgNVBAMM
DSouZnd0ZXN0LnNpdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1
3NkuEB3r0m/cIWjYBvXEg8QAcib3QjkGO2YwDRu9IwjyxTYTqiWp0F8ZYh2hM1zP
...xxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
oIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
sxPnHKzhm+/b5Dt....XXXX
-----BEGIN CERTIFICATE-----
oOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5
bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y
sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ
Xmidf3LWicUGQSk+WT7dJvUsWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4
FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc
SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql
PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOd....xxx
-----END CERTIFICATE-----

따라서 Let 's Encrypt를 사용하기 전에 Let 's Encrypt 인증서를 만들거나 서명 할 CSR에 서명하는 데 도움이되는 특정 소프트웨어를 설치해야합니다. 자세한 내용은 Let's Encrypt를 참조하십시오.

서명을 위해 Let's Encrypt에서 certbot을 사용합니다. 설정 지침에 대한 자세한 내용은 Set up Instructions을 참조하십시오. Oracle Linux에 설치하려면 Let's Encrypt - Free Certificates on Oracle Linux (CertBot)를 참조하십시오.

certbot을 설치한 후에는 다음 명령을 실행하여 서명된 x.509 인증서를 쉽게 만들 수 있습니다.

sudo certbot certonly --manual --preferred-challenges=dns --email YOUR EMAIL ADDRESS --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.example.com --key-type rsa

와일드카드 도메인(_.example.com)을 사용하므로 certbot은 _.example.com의 소유권을 확인하기 위해 확인 시도가 필요합니다. DNS 챌린지는 –preferred-challenges=dns 옵션을 사용하여 선택합니다. 다음 그림과 같이 certbot을 실행하는 동안 DNS 챌린지에 대한 메시지가 표시됩니다.

Certbot DNS 챌린지

OCI DNS 서비스를 사용 중이므로 example.com 영역에 txt 레코드만 생성합니다.

OCI DNS TXT 챌린지

이제 certbot은 전체 CA 체인 및 해당 개인 키와 함께 최종 사용자 인증서를 얻을 수 있도록 프로세스를 완료해야 합니다. 이 자습서 뒷부분에서 로드 밸런서 HTTPS 리스너에 대해 이 최종 사용자 인증서(전체 체인 포함)를 사용합니다.

작업 3: OCI 로드 밸런서 구성

OCI WAF 로컬 설정을 완료한 다음 목표는 OCI Flexible Load Balancer를 Layer 4에서 7(OCI Flexible Load Balancer라고도 함)로 배포하여 WAF 로컬이 연결된 공용 서비스로 제공하는 것입니다.

  1. OCI 콘솔을 열고 네트워킹로드 밸런서를 누릅니다.

    Load Balancer 1

  2. 로드 밸런서 생성을 누르고 다음 정보를 입력하고 다음을 누릅니다.

    • 로드 밸런서 이름: 로드 밸런서의 이름을 입력합니다.

    • 표시 여부 유형 선택: 공용 로드 밸런서를 선택합니다.

    • 대역폭: 로드 밸런서 구성 및 기타 구성 세부정보를 선택합니다.

    • 네트워킹 선택: 퍼블릭 서브넷이 두 개 이상인 VCN(OCI 로드 밸런서용 및 OCI 네트워크 방화벽용)을 선택합니다.

      Load Balancer 주 메뉴

    • 고급 옵션 표시: 웹 애플리케이션 방화벽 정책을 사용하여 Layer 7 공격으로부터 보호를 선택하고 이전에 생성된 로컬 WAF를 선택합니다.

      로드 밸런서 기본 메뉴/고급 옵션

  3. 로드 밸런서가 생성되면 나중에 백엔드 서버가 추가되므로 백엔드 선택 섹션을 건너뛰고 다음을 누릅니다.

  4. 리스너 구성에 다음 정보를 입력하고 다음을 누릅니다.

    Load Balancer Listener 메뉴

    수신 요청 로드 밸런서 리스너(기본적으로 외부로부터 모든 연결을 수신하는 로드 밸런서의 기본 시작점)를 구성합니다. 기본 포트 443에서 보안 HTTP에 대해 HTTPS를 설정해야 합니다. 이 경우 필연적으로 X.509 인증서(SSL 인증서)를 사용해야 합니다. HTTPS를 사용하면 모든 연결이 안전하게 암호화됩니다.

    공용 로드 밸런서가 인터넷의 일반 사용자에 대한 기본 시작점 역할을 하는 일반적인 시나리오에서는 Digicert, Global Sign, Let's Encrypt 등과 같이 평판이 좋은 CA(인증 기관)가 서명한 SSL 인증서를 업로드해야 합니다. 또한 인터넷에 노출된 이러한 인증서는 만료 날짜 근처에 갱신하여 고객이 Your connection is not private!!와 같은 불필요한 메시지를 받지 않도록 해야 합니다. ERR_CERT_DATE_INVALID.

    즉, 만든 Let's Encrypt 인증서의 공개 및 개인 정보를 모두 업로드해야 합니다. 보안 연결을 용이하게 하기 위해 두 구성 요소가 모두 올바르게 업로드되었는지 확인합니다. 공용 파트에서 전체 체인 인증서(중간 및/또는 루트 CA 포함)를 업로드해야 합니다.

  5. 로깅 관리는 이 자습서의 범위가 아닌 선택적 구성입니다. 제출을 누릅니다.

  6. 잠시 후 로드 밸런서가 생성됩니다. 이제 백엔드 서버를 구성해야 합니다. SSL이 백엔드 서버에 사용되므로 먼저 백엔드 서버에 대한 SSL 접속을 설정하는 데 사용할 인증서를 로드 밸런서의 인증서 섹션에 하나 이상 생성해야 합니다. 위에서 설명한 대로 이 인증서 번들은 타사 툴을 사용하여 수동으로 생성하거나 OCI 인증서 관리 서비스를 사용할 수 있습니다. 이 자습서에서는 XCA 도구를 사용합니다.

    Networking, Load balancers, Load balancer, Load balancer detailsCertificates로 이동합니다.

  7. 인증서 섹션에서 인증서 리소스로드 밸런서 인증서 관리로 선택하고 인증서 추가를 누릅니다.

    로드 밸런서 인증서 소스

    백엔드 서버의 SSL 인증서 서명에 사용한 퍼블릭 CA 루트 또는 중간 CA 인증서를 추가합니다. 미리 알림으로, 우리는 어떤 공통 이름 및 SAN, 그리고 만료 날짜없이 자체 서명 인증서를 활용하고있다. 로드 밸런서는 백엔드 서버 인증서 검증에만 루트 CA를 사용하므로 여기에 서버 인증서를 설치할 필요가 없습니다.

    로드 밸런서 인증서 추가 중

  8. 백엔드 서버를 생성하려면 백엔드 집합을 선택하고 백엔드 집합 생성을 누릅니다.

    로드 밸런서 백엔드 집합 1

  9. 백엔드 집합 생성에 다음 정보를 입력합니다.

    • 백엔드 집합 이름: 백엔드 집합 이름을 입력합니다.
    • SSL을 선택합니다.
    • 로드 밸런서 인증서 관리를 선택합니다.
    • 7단계에서 생성한 인증서를 추가합니다. 로드 밸런서가 수신된 SSL 인증서 서명을 확인하도록 하려면 피어 인증서 확인을 누릅니다.
    • 건전성 검사:
      • 프로토콜: HTTP을 선택합니다.
      • 포트: 443 포트를 선택합니다.
      • 간격 및 시간 초과: 기본 간격 및 시간 초과(10000 및 3000밀리초)를 유지합니다.
      • 건강 검진의 건강 반응에 대해 200을 선택합니다.
      • URL 경로(URI): 웹 서버에 있는 URL의 리소스를 추가합니다. 예: index.html, mainpage.html 등.

    로드 밸런서 백엔드 집합 1

작업 4: OCI 네트워크 방화벽 구성

OCI 로드 밸런서가 설정된 후 목표는 남북 트래픽을 보호하기 위해 OCI 네트워크 방화벽을 구성하는 것입니다. 방화벽은 새로 구성된 로드 밸런서와 인터넷 게이트웨이 사이에 배치됩니다. OCI 네트워크 방화벽 설정을 계속하려면 암호화 해제 규칙을 사용한 SSL 전달 프록시 및 인바운드 검사에 OCI 네트워크 방화벽 사용을 참조하여 다음을 완료합니다.

작업 5: OCI 경로 지정 구성

OCI 네트워크 방화벽이 배치되었습니다. 남북 트래픽이 양방향으로 통과하는지 확인해야 합니다. 먼저 OCI 네트워크 방화벽이 있는 VCN과 연관된 인터넷 게이트웨이에 대한 전용 라우팅 테이블을 생성해야 합니다.

  1. VCN에 경로 지정 테이블을 생성하고 대상 유형 항목을 private IP으로, 대상을 CIDR 블록으로 추가하고, 이 자습서 192.168.6.0/24대상에 대해 로드 밸런서 서브넷 CIDR 블록을 도입하여 작업 6에 배치된 OCI 네트워크 방화벽에 지정된 프라이빗 IP로 추가합니다.

    인터넷 GW 경로 테이블

  2. 경로 지정 테이블을 인터넷 게이트웨이에 연관시키고, 점 3개와 경로 테이블 연관을 누른 후 경로 지정 테이블을 선택합니다.

    인터넷 GW 경로 테이블

  3. 이 라우팅 테이블이 인터넷 게이트웨이와 연관되면 퍼블릭 로드 밸런서 192.168.6.0/24로 향하는 모든 트래픽이 처음에 OCI 네트워크 방화벽이 상주하는 프라이빗 IP 192.168.5.78로 재지정됩니다.

    OCI 네트워크 방화벽 전용 IP 192.168.5.78에서 OCI 네트워크 방화벽의 패킷 검사 후 패킷은 OCI 로드 밸런서로의 여정을 계속합니다. 여기에서 로드 밸런서의 경로 지정 구성에 따라 선택된 백엔드 서버 사이의 최종 대상으로 지정됩니다.

    이제 인터넷 사용자에게 반환되는 패킷이 동일한 경로를 역순으로 따르도록 하고 OCI 네트워크 방화벽을 통과하여 응답 검사도 수행해야 합니다. 다음 이미지와 같이 백엔드 서버의 응답을 OCI 네트워크 방화벽 프라이빗 IP 192.168.5.78을 통해 경로 지정하려면 로드 밸런서 퍼블릭 서브넷에 대한 경로 지정 테이블을 생성해야 합니다.

    로드 밸런서 경로 테이블

OCI 네트워크 방화벽 서브넷에서 인터넷 게이트웨이에 0.0.0.0/0 경로를 추가하여 응답이 인터넷 게이트웨이로 경로 지정되는지 확인해야 합니다.

네트워크 방화벽 경로 테이블

인터넷 게이트웨이에 도달하면 패키지가 소스로 다시 경로 지정됩니다. 테스트로 https://www.test.com로 이동합니다.

인터넷 GW 경로 테이블

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.