Azure 웹 애플리케이션 방화벽이란?
여기서는 Azure 웹 애플리케이션 방화벽의 기본 사항을 알아봅니다. 이 개요는 Azure Web Application Firewall이 Contoso의 전반적인 네트워크 보안 전략에 추가하는 데 유용한 도구인지 여부를 평가하는 데 도움이 됩니다.
Azure Web Application Firewall 개요
악의적인 사용자가 웹앱을 신경 쓰지 않을 수 있습니다. 그러나 테스트 결과 봇 또는 악의적인 행위자가 배포 후 몇 분 내에 새 웹앱에서 약점을 검색하는 것으로 나타났습니다. 웹에 앱을 배치하는 경우 위협 행위자가 거의 즉시 앱에서 취약성을 테스트한다고 가정합니다. 이러한 프로브가 앱의 수명 동안 계속된다고 가정할 수도 있습니다.
웹앱의 대부분의 악의적인 테스트는 하나 이상의 일반적인 취약성이 있는지 확인합니다. 발견되면 위협 행위자가 이러한 취약성을 사용하여 다음 악용과 같은 공격을 실행할 수 있습니다.
- SQL 삽입 공격
- 사이트 간 스크립팅
- 로컬 및 원격 파일 포함
- HTTP/HTTPS 트래픽 폭주
- 악성 봇 공격
웹앱 개발 주기의 일반적인 작업에는 가장 일반적인 보안 허점을 닫기 위한 코드 작성이 포함됩니다. 보안 코드를 작성하려면 시간, 전문 지식 및 테스트가 필요합니다.
Azure Web Application Firewall은 Azure 호스팅 웹앱의 중앙 집중식 보호를 제공하는 Azure 서비스입니다. Azure Web Application Firewall은 SQL 삽입 및 사이트 간 스크립팅과 같은 일반적인 위협으로부터 웹앱을 보호합니다.
몇 분 안에 Azure Web Application Firewall을 배포할 수 있습니다. 웹앱은 한 줄의 보안 코드를 작성하지 않고도 알려진 위협으로부터 즉시 강력한 보호를 받습니다.
Azure Web Application Firewall의 주요 기능
Azure Web Application Firewall을 평가하는 데 도움이 되는 몇 가지 중요한 기능은 다음과 같습니다.
관리되는 규칙: Microsoft의 보안 팀은 Azure Web Application Firewall이 일반적인 악용을 감지하고 방지하는 데 사용하는 규칙을 만들고 유지 관리하며 업데이트합니다. 규칙이 변경되거나 규칙 집합(다음 설명 참조)이 수정되면 Microsoft는 Azure 웹 애플리케이션 방화벽을 자동으로 원활하게 업데이트합니다.
비고
Azure Web Application Firewall에서 제공하는 관리되는 규칙을 수정하거나 삭제할 수 없습니다. 그러나 특정 규칙이 사용자 환경에 문제가 있는 경우(예: 웹앱에 대한 합법적인 트래픽 차단) 제외를 만들거나 규칙 또는 규칙 집합을 사용하지 않도록 설정할 수 있습니다. 기본 동작을 덮어쓰는 사용자 지정 규칙을 만들 수도 있습니다.
봇 규칙: 봇 규칙은 좋은 봇을 식별하고 잘못된 봇으로부터 보호합니다. Microsoft 위협 인텔리전스를 기반으로 잘못된 봇이 검색됩니다.
사용자 지정 규칙: Azure Web Application Firewall에서 제공하는 관리되는 규칙이 웹 애플리케이션에 대한 특정 위협을 다루지 않는 경우 사용자 지정 규칙을 만들 수 있습니다.
모드: Azure Web Application Firewall은 두 가지 모드 중 하나로 작동할 수 있습니다. 검색 모드는 규칙을 위반하는 요청만 기록하지만 방지 모드는 규칙을 위반하는 요청을 로그 및 차단합니다.
제외 목록: 요청을 확인할 때 특정 특성을 무시하도록 Azure Web Application Firewall을 구성할 수 있습니다.
정책: 관리되는 규칙, 사용자 지정 규칙, 제외 및 기타 Azure 웹 애플리케이션 방화벽 설정 집합을 Azure 웹 애플리케이션 방화벽 정책이라는 단일 요소로 결합할 수 있습니다. 그런 다음 간편한 관리 및 유지 관리를 위해 여러 웹앱에 해당 정책을 적용할 수 있습니다.
요청 크기 제한: 너무 작거나 너무 큰 요청에 플래그를 지정하도록 Azure Web Application Firewall을 구성할 수 있습니다.
경고: Azure Web Application Firewall이 Azure Monitor와 통합됩니다. 이 통합은 WAF(웹 애플리케이션 방화벽)가 위협을 감지할 때 거의 실시간으로 경고를 제공합니다.
Azure Web Application Firewall에서 방지되는 일반적인 공격
다음 표에서는 Azure Web Application Firewall이 보호하는 데 도움이 되는 가장 일반적인 유형의 악의적인 위협에 대해 설명합니다.
위협 | 설명 |
---|---|
사이트 간 스크립팅 | 위협 행위자가 웹 애플리케이션을 사용하여 다른 사용자의 웹 브라우저에 악성 코드를 보냅니다. 브라우저는 사용자의 세션 데이터, 쿠키 및 기타 중요한 정보에 대한 스크립트 액세스를 제공하는 코드를 실행합니다. |
로컬 파일 포함 | 공격자는 서버의 문 처리 include 에서 취약성을 악용하며, 가장 자주 PHP 스크립트에서 발생합니다. 스크립트의 include 문에 특별히 구성된 텍스트를 전달하면 공격자는 서버에 로컬로 있는 파일을 포함할 수 있습니다. 그러면 공격자가 중요한 정보에 액세스하고 서버 명령을 실행할 수 있습니다. |
PHP 주입 | 공격자는 서버를 속여 PHP 명령을 실행하도록 특별히 구성된 텍스트를 삽입합니다. 이러한 명령을 사용하면 공격자가 로컬 또는 원격 PHP 코드를 실행할 수 있습니다. 그러면 공격자가 중요한 데이터에 액세스하고 서버에서 명령을 실행할 수 있습니다. |
프로토콜 공격 | 공격자가 특별히 구성된 텍스트를 HTTP/HTTPS 요청 헤더에 삽입합니다. 헤더에 삽입된 특정 텍스트에 따라 공격자는 서버를 속여 중요한 데이터를 표시하거나 코드를 실행할 수 있습니다. |
원격 명령 실행 | 공격자는 서버를 속여 서버의 운영 체제와 연결된 명령을 실행합니다. 예를 들어 UNIX 시스템에서 공격자는 서버를 실행 ls 하여 디렉터리 목록을 가져올 수 있습니다. |
원격 파일 포함 | 공격자가 원격 파일( 즉, 공격자가 제어하는 원격 서버의 파일)을 스크립트의 include 문으로 전달하는 특수하게 구성된 텍스트를 서버에 보내는 것을 제외하고 로컬 파일 포함과 동일합니다. |
세션 고정 | 공격자는 공격자가 유효한 세션 ID를 얻을 수 있도록 하는 웹앱 취약성을 악용합니다. 공격자는 사용자를 속여 해당 ID로 새 세션을 인증합니다. 그런 다음 공격자가 이 사용자 유효성 검사 세션을 하이재킹합니다. |
SQL 삽입 공격 | 웹 양식 필드에서 공격자는 서버를 속여 SQL 명령을 실행하도록 특별히 구성된 텍스트를 삽입(또는 "삽입")합니다. 이러한 명령을 사용하면 공격자가 중요한 데이터에 액세스하거나, 데이터를 삽입, 업데이트 또는 삭제하거나, SQL 작업을 실행할 수 있습니다. |
이전 표에 나열된 모든 악용은 서버가 수신하는 입력을 신뢰하는 경우에만 가능합니다. 이러한 악용만 확인하고 삭제하는 코드를 작성하는 것은 어렵고 시간이 많이 걸립니다. 웹앱이 직면할 수 있는 가능한 악용의 일부만 이전 표에 표시됩니다. Azure Web Application Firewall은 이러한 공격 등을 방지하도록 설계되었습니다.
입력 삭제
최신 웹앱이 직면한 위협은 다양하고 정교합니다. 그러나 대부분의 경우 악용이 가능한 이유는 웹앱이 수신하는 입력을 암시적으로 신뢰하기 때문입니다.
예를 들어 권한 있는 웹앱 사용자가 사용자의 계정에 로그인할 수 있는 웹 양식을 고려합니다. 양식은 다음 세 가지 요소로 구성됩니다.
- 사용자 이름 텍스트 상자
- 암호 텍스트 상자
- 로그인 단추
권한이 있는 사용자가 양식을 채우고 로그인을 선택하면 웹앱 스크립트는 사용자 이름과 암호를 변수에 저장합니다. 변수들은 각각 userName
및 userPassword
로 명명된다고 가정해 보겠습니다. 그런 다음 스크립트는 다음 문을 실행합니다.
sql = "SELECT * FROM users WHERE username='" + userName + "' AND password='" + userPassword + "'"
예를 들어 사용자 이름이 support
암호이고 암호인 1234ABCD
sql
경우 변수의 값은 다음과 같습니다.
SELECT * FROM users WHERE username='support' AND password='1234ABCD'
웹앱은 이 SQL 문을 실행합니다. 쿼리에서 레코드가 반환되면 웹앱에서 사용자를 로그인합니다.
이제 공격자가 admin'--
필드에 를 입력하고 암호 필드를 비워 둔다고 가정해 보십시오. 이 경우 결과 SQL 문은 다음과 같습니다.
SELECT * FROM users WHERE username='admin'--' AND password=''
많은 SQL 시스템에서 이중 대시(--
)는 주석의 시작을 표시합니다. 이후 --
의 모든 항목은 무시되므로 이전 문은 다음 코드와 동일합니다.
SELECT * FROM users WHERE username='admin'
사용자 이름이 admin
인 사용자가 있다고 가정하면, 이 명령은 공격자를 관리자로 로그인시킵니다. 심각한 침해입니다.
앞의 예제는 SQL 삽입이라는 악용의 인스턴스입니다. 공격자는 모든 입력을 신뢰하는 웹앱에서 SQL 삽입 및 기타 악용을 활용할 수 있습니다.
Azure Web Application Firewall은 웹앱과 해당 사용자 입력 사이에 비독점 장벽을 만듭니다. Azure Web Application Firewall은 모든 입력이 잠재적으로 악의적이라고 가정하므로 해당 입력 을 삭제합니다 .
입력 정화는 문맥에 따라 다른 의미를 갖습니다. 예를 들어 입력을 삭제하면 SQL 주석 표시기처럼 명확하게 위험한 텍스트 요소를 제거할 수 있습니다. 그러나 정화가 이루어지면, 그 결과는 웹 앱이나 백엔드 데이터에 해를 끼치지 않을 수 있는 입력입니다.