WAF를 사용하여 애플리케이션 보안

WAF(Web Application Firewall) 을 통해 애플리케이션의 경로가 지정되고 나면 WAF에서 제공하는 다양한 보안 기능을 사용하여 애플리케이션의 보안을 유지하십시오.

다음 방법으로 애플리케이션을 보호할 수 있습니다.

  • 보호 규칙 구성
  • 봇 관리 사용
  • 액세스 규칙 추가

보호 규칙 구성

XSS(교차 사이트 스크립팅) 및 SQLi(SQL 삽입) 공격을 차단하는 규칙이 포함된 응용 프로그램에 보안을 설정할 수 있습니다.

보호 규칙을 구성하려면 다음을 수행합니다.
  1. Oracle Cloud Infrastructure 콘솔에 사인인합니다.
  2. 탐색 메뉴를 엽니다. Governance and Administration 에서 Security 로 이동하고 WAF Policies 를 누릅니다.
  3. 보호 규칙 을 누릅니다.
    미리 정의된 보호 규칙이 포함된 테이블이 표시됩니다.
  4. RULE ID 필터를 사용하고 941140981300 규칙을 선택합니다.
    규칙 세부정보가 오른쪽에 표시됩니다.
  5. 각 규칙을 선택하고 작업 드롭다운 메뉴에서 블록 을 누릅니다.
  6. 모두 게시 를 누릅니다.
    WAF 정책에 대한 변경사항을 게시하는 데 몇 분 정도 걸릴 수 있습니다.

보호 규칙 확인

보호 규칙이 작동하는지 여부를 확인하려면 다음과 같이 하십시오.
  1. 브라우저의 [개발자 도구 ] 페이지에서 [네트워크 ] 탭을 엽니다.
  2. 브라우저에서 샘플 직원 응용 프로그램 http://employee.<example.com>/public/에 액세스합니다.
  3. 새 직원 을 누르고 양식에 샘플 정보를 입력합니다.
  4. 이름 필드에 다음 SQL 삽입을 입력합니다.
    SomeUser; DROP TABLE users
  5. 브라우저의 Network 탭을 열고 New Employee 폼에서 Save를 누릅니다.
    POST - /employees403 Forbidden로 차단됩니다.
  6. 다음 cURL 명령을 실행합니다.
    curl -X POST http://${WAF_TARGET}/employees \ 
    -H 'host: employee.example.com' \ 
    -d '{"firstName":"Name; DROP TABLE users"}'
    이 명령은 403 오류를 반환합니다.
  7. 브라우저 주소 표시줄의 질의 매개변수에서 XSS(교차 사이트 스크립팅) 를 시도하여 GET 요청을 실행합니다.
    http://employee.<example.com>/employees/?id=%3Cscript%3Ealert(%27bad%27)%3C/script%3Ein

    브라우저에서 다음을 반환합니다.


    다음은 waf-forbidden.png에 대한 설명입니다.
    그림 waf-forbidden.png에 대한 설명

앞의 단계는 WAF Block 작업을 여러 번 트리거합니다. 이제 Oracle Cloud Infrastructure 콘솔의 WAF 정책 세부정보로 돌아가서 로그를 검사합니다.
  1. 사원 데모 정책을 엽니다.
  2. 로그 를 누릅니다.
  3. SQLi 및 XSS 공격을 시도할 때 시간에 걸쳐 있는 날짜/시간 범위를 선택합니다.
  4. Action: Block가 있는 항목을 식별하고 차단된 요청에 대한 행 세부정보를 확장한 다음 JSON 보기 를 누릅니다.
  5. protectionRuleDetections 및 기타 요청 세부정보로 나열된 메시지를 봅니다.

봇 관리 사용

Oracle Cloud Infrastructure WAF(Web Application Firewall) 서비스의 다른 기능은 봇 관리 기능입니다.

대부분의 경우 비사용자 트래픽은 사이트에 대한 최대 트래픽 백분율을 구성합니다. "적합한" 봇을 선호할 수도 있지만 다른 "불량" 봇은 내용 스크래핑, 스팸 메일, 무상 공격 또는 응용 프로그램 계층 DDoS 공격을 시도할 수 있습니다.

예를 들어 SEO(Search Engine Optimization) 및 콘텐츠 순위를 지정하기 위해 잘 알려진 일부 봇을 허용 목록에 지정할 수 있지만 특정 상호 작용을 위해 사용자 확인을 제한할 수 있습니다. 이 유형의 시나리오는 WAF 정책 봇 관리 설정을 사용하여 쉽게 달성할 수 있습니다.

CAPTCHA 시도 응답 인증 추가

봇 관리의 가장 가까운 기능 중 하나는 CAPTCHA입니다. CAPTCHA를 사용하면 기본 응용 프로그램을 변경하지 않고도 사용자 상호 작용을 보장하는 간단한 방법으로 사용자 확인을 제공할 수 있습니다.

CAPTCHA 시도를 추가하려면 다음과 같이 하십시오.
  1. Oracle Cloud Infrastructure 콘솔입니다.
  2. 탐색 메뉴를 엽니다. Governance and Administration 에서 Security 로 이동하고 WAF Policies 를 누릅니다.
  3. 직원 데모 정책을 열고 봇 관리 를 누릅니다.
  4. CAPTCHA 시도 탭을 누른 다음 CAPTCHA 시도 추가 를 누릅니다.
  5. CAPTCHA URL 경로 필드에 값으로 /public/index.html를 입력합니다.
  6. 나머지 필드에 있는 기본값은 그대로 둡니다.
  7. 추가 를 누른 다음 모두 게시 를 누릅니다.
  8. 변경사항이 게시되고 WAF 정책이 ACTIVE 상태에서 재개된 후 브라우저에서 http://employee.<example.com>/public/index.html 페이지를 로드합니다.
    브라우저에는 다음 CAPTCHA 시도가 표시됩니다.

올바른 코드를 입력한 후 시도 구성의 Session Duration 값에 해당하는 기간에 대한 추가 시도 없이 웹 사이트를 입력합니다.

액세스 제어 규칙 추가

WAF 액세스 제어는 애플리케이션 내에서 제공되는 데이터 및 서비스에 대한 액세스를 제한하거나 차단하여 추가 보안 계층을 제공합니다.

액세스 제어를 사용하여 다음과 같은 요청 조건을 기반으로 규칙을 정의할 수 있습니다.
  • HTTP 헤더
  • URL 패턴
  • IP 주소
  • 지리적 위치

샘플 직원 애플리케이션에서 데이터베이스에서 직원 세부정보를 삭제할 수 있습니다. 보안을 위해 Delete 기능의 사용을 제한해야 할 수도 있습니다. 삭제 요청을 차단하는 액세스 규칙을 생성 및 적용할 수 있습니다.

액세스 제어 규칙을 추가하려면 다음을 수행합니다.
  1. Oracle Cloud Infrastructure 콘솔입니다.
  2. 탐색 메뉴를 엽니다. Governance and Administration 에서 Security 로 이동하고 WAF Policies 를 누릅니다.
  3. 사원 데모 정책을 열고 액세스 제어 를 누릅니다.
  4. 액세스 규칙 추가 를 누릅니다.
  5. 규칙 이름(예: Prevent Delete) 을 입력합니다.
  6. 다음 규칙 조건을 추가합니다.
    • HTTP 메소드: DELETE
    • URL 시작:/직원
  7. 블록 규칙 작업을 선택한 다음 403금지됨(기본 옵션) 을 응답 코드 설정(블록 작업) 으로 선택합니다.
  8. 액세스 규칙 추가 를 눌러 규칙을 생성한 다음 모두 게시 를 누릅니다.

변경사항이 게시되고 WAF 정책이 ACTIVE 상태에서 재개됩니다.

  1. 브라우저의 [개발자 도구 ] 페이지에서 [네트워크 ] 탭을 엽니다.
  2. 브라우저에서 샘플 직원 응용 프로그램 http://employee.<example.com>/public/에 액세스합니다.
  3. 직원 레코드를 선택한 다음 삭제 버튼을 누릅니다.

Broswer Developer Tools 섹션의 Network(네트워크) 탭에서 WAF가 이 요청을 가로채고 403 Forbidden 응답으로 차단했음을 알 수 있습니다.

이 솔루션에서 설명하는 Oracle Cloud Infrastructure WAF의 기능은 기본 예제 응용 프로그램 보안에 초점을 맞춘 것입니다. 사용 시나리오는 각 애플리케이션에 대해 고유하며 그에 따라 WAF를 구성할 수 있습니다.