공격 방지
목차
casso127kkr
목차
교차 사이트 스크립팅에 대해 웹 사이트 보호
일반적으로 post 데이터 또는 URL의 쿼리 매개 변수 데이터와 같이 브라우저에 입력한 텍스트가 문자(브라우저에 표시되면 유효한 실행 스크립트를 생성할 수 있음) 필터링 단계를 거치지 않고 응용 프로그램에 의해 표시되는 경우 CSS(교차 사이트 스크립팅) 공격이 발생할 수 있습니다.
아무 의심 없는 사용자에게 공격 URL이 제공될 수 있습니다. 사용자가 이 URL을 클릭하면 응용 프로그램에서 쿼리 문자열의 잘못된 매개 변수에 대한 오류 메시지와 입력 문자를 포함하는 화면 표시를 브라우저에 반환할 수 있습니다. 브라우저에 이러한 매개 변수가 표시되면 원하지 않는 스크립트가 브라우저에서 실행될 수 있습니다.
예를 들어 사용자가 검색 엔진 웹 페이지에 news를 입력하면 일반적으로 응용 프로그램에서 빈 필드 또는 다음과 같은 응답을 반환할 수 있습니다.
Your search for news returned the following:
공격 URL에 대해 브라우저는 다음과 같은 응답을 받을 수 있습니다.
news<script>BadProgram</script>
BadCSSChars 매개 변수는 ASCII 문자로 입력된 큰따옴표(")를 해석하지 않습니다. 큰따옴표를 잘못된 교차 사이트 스크립팅 문자로 포함하려면 ASCII 문자의 16진수 값, 즉 %22를 입력해야 합니다. 예를 들면 다음과 같습니다.
BadCSSChars="%22"
웹 에이전트 FCC 페이지에서 교차 사이트 스크립팅 공격 방지
웹 에이전트 FCC 페이지에 대해 교차 사이트 스크립팅 공격을 방지하려면 HTML 인코딩을 사용하여 FCC 변수 데이터가 올바르게 렌더링되도록 해야 합니다.
HTML 인코딩을 사용하면 문자가 HTML 구문이 아니라 리터럴 값으로 처리됩니다. 인코딩은 유해한 교차 사이트 스크립팅 구문이 표시되어야 할 때 이를 리터럴 텍스트로 렌더링하여 브라우저에서 HTML 양식을 렌더링하는 동안 코드가 실행되지 않도록 합니다. 공격에 악용될 수 있는 모든 구문을 인코딩할 수 있습니다.
fcchtmlencoding 매개 변수를 설정하면 에이전트는 다음과 같은 구문의 FCC 변수에 삽입된 모든 값에 HTML 인코딩 알고리즘을 적용하게 됩니다.
$$varname$$
일반적으로 차단되는 문자가 FCC 데이터에 필요한 경우에는 fcchtmlencoding 매개 변수를 사용하도록 설정하십시오.
- fcchtmlencoding웹 에이전트 FCC 페이지에 대해 교차 사이트 스크립팅 공격을 방지하기 위해 HTML 인코딩을 사용할지 여부를 지정합니다. 이 매개 변수는 문자를 차단하지 않습니다.값:Yes, No기본값:No
fcchtmlencoding 매개 변수는 모든 FCC 양식의 모든 변수 대체 항목에 적용됩니다. 이 매개 변수를 사용하는 에이전트는 하나 이상의 FCC 양식을 제공할 수 있습니다.
FCC 변수에 삽입되는 값의 특정 문자에 HTML 인코딩을 적용하려면 다음 매개 변수를 사용하십시오.
- fcchtmlencodingchars특정 문자 값을 가져와 HTML 인코딩을 적용한 후 실제 문자 값을 FCC 파일에서 인코딩된 값으로 대체합니다.
중요!
fcchtmlencodingchars 매개 변수를 사용하려면 fcchtmlencoding 매개 변수가 no로 설정되어야 합니다.FCC 파일의 특정 변수에 HTML 인코딩을 적용하려면 다음 함수를 사용하십시오.
- HTMLENCODE특정 변수 값을 가져와 HTML 인코딩을 적용한 후 실제 변수 값을 FCC 파일에서 인코딩된 값으로 대체합니다.
HTMLENCODE 함수의 구문은 다음과 같습니다.
$$htmlencode(varname)$$
교차 사이트 스크립팅을 확인하도록 웹 에이전트 구성
실행 스크립트에 포함될 수 있는 문자가 URL에 있는지 확인하도록 웹 에이전트에 지시하려면 다음과 같은 에이전트 구성 매개 변수를 Yes로 설정하십시오.
CSSChecking
웹 에이전트가 쿼리 문자열을 포함한 전체 URL을 검사하여 다음과 같은 기본 문자 집합의 이스케이프된 버전과 이스케이프되지 않은 버전이 있는지 확인하도록 하려면 이 매개 변수를 사용되도록 설정하십시오.
- 왼쪽 및 오른쪽 꺾쇠 괄호(< >)
- 작은따옴표(')
기본값
: Yes유효한 대상 도메인 정의
유해한 웹 사이트로 사용자를 리디렉션할 수 있는 피싱 시도로부터 리소스를 보호하도록 에이전트를 구성하려면 다음 구성 매개 변수를 설정합니다.
ValidTargetDomain
자격 증명 수집기가 사용자를 리디렉션할 수 있는 도메인을 지정합니다. URL의 도메인이 이 매개 변수에 설정된 도메인과 일치하지 않으면 리디렉션이 거부됩니다.
기본값:
NoFCC(양식 자격 증명 수집기)를 포함한 모든 고급 인증 체계에서 이 매개 변수를 지원합니다.
ValidTargetDomain 매개 변수는 처리하는 동안 유효한 대상 도메인을 식별합니다. 사용자가 리디렉션되기 전에 에이전트는 리디렉션 URL의 값을 이 매개 변수의 도메인과 비교합니다. 이 매개 변수가 없으면 에이전트는 사용자를 임의의 도메인에 있는 대상으로 리디렉션합니다.
ValidTargetDomain 매개 변수는 유효한 각 도메인에 대해 하나씩 지정되는 여러 개의 값을 포함할 수 있습니다.
로컬 에이전트 구성의 경우 다음과 같이 각 도메인에 대한 항목을 한 행에 하나씩 지정합니다.
validtargetdomain=".xyzcompany.com"validtargetdomain=".abccompany.com"
교차 사이트 스크립팅 공격에 대해 J2EE 응용 프로그램 보호
요청에 비표준(너무 긴 형식) 유니코드 문자를 사용하여 공격자가 교차 사이트 스크립팅 보호를 바이패스하지 않도록 할 수 있습니다.
다음 단계를 수행하십시오.
- CSSChecking 매개 변수의 값을 yes로 설정합니다.
- 다음 매개 변수의 값을 yes로 설정합니다.
- DisallowUTF8NonCanonical공격자가 요청의 비표준(너무 긴 형식) 유니코드(utf-8) 문자를 전송하고 교차 사이트 스크립팅 보호를 바이패스하지 못하게 합니다. 이 매개 변수의 값이 yes일 경우 에이전트는 비표준(너무 긴 형식) 유니코드 문자를 포함하는 URL에 대한 요청을 차단합니다.기본값: Yes
기본 CSS 문자 집합 재정의
기본적으로 에이전트는 다음과 같은 기본 크로스 사이트 스크립팅 문자 집합을 검사합니다.
- 왼쪽 및 오른쪽 꺾쇠 괄호(<>)
- 작은따옴표(')
기본 문자 집합을 재정의하려면 BadCSSChars 매개 변수를 사용하십시오.
BadCSSChars
선택한 문자로 기본 크로스 사이트 스크립팅 문자 집합을 재정의합니다. 이때 원하는 문자의 전체 문자열을 포함해야 합니다.
기본값:
<,',>(쉼표는 문자를 구분함)예:
<,>(이 예에서 에이전트는 왼쪽 및 오른쪽 꺾쇠 괄호만 검사함)값:
문자 집합을 입력하십시오.제한
: 다음 지침에 주의하십시오.- 문자를 구분하는 쉼표를 포함하여 최대 4096자의 문자.
- 하이픈으로 문자를 구분하여 문자 범위를 지정하십시오. 이때 사용되는 구문은시작_문자-종료_문자입니다. 예를 들어a-z는 문자 범위입니다.
- BadCSSChars 매개 변수는 ASCII 문자로 입력되면 큰따옴표(")를 해석하지 않습니다. 큰따옴표를 잘못된 교차 사이트 스크립팅 문자로 포함하려면 ASCII 문자의 16진수 값, 즉 %22를 입력해야 합니다. 예: BadCSSChars="%22"
에이전트는 문자 집합과 관련된 문제를 발견하면 사용자에게 액세스 거부 메시지를 반환하고 에이전트 오류 로그에 다음과 같은 메시지를 로깅합니다.
Caught Possible Cross Site Scripting Violation in URL. Exiting with HTTP 403 ACCESS FORBIDDEN.
일부 응용 프로그램에서는 웹 서버 플랫폼에 관계없이 쿼리 문자열에 따옴표를 사용해야 합니다. 예를 들어 iNotes Web Access와 같은 일부 Domino 응용 프로그램에서는 작은따옴표를 사용해야 합니다.
쿼리 문자열에 따옴표가 필요한 응용 프로그램을 사용하려면 BadCssChars 매개 변수에서 따옴표를 제거하십시오.
잘못된 쿼리 문자 지정
URL의 쿼리 문자열 부분에 특정 문자를 사용하지 않으려면 다음 매개 변수를 설정하십시오.
BadQueryChars
웹 에이전트가 URL의 쿼리 문자열 부분('?' 뒤)에서 금지하는 문자를 지정합니다.
기본값:
비어 있음(쿼리 문자열에서 모든 문자가 허용됨)제한:
영어 문자에는 기본 16진수 숫자가 적용됩니다. 다른 언어의 경우 허용하려는 언어의 문자에 해당하는 16진수 값을 제거하십시오. 이러한 언어의 예로는 포르투갈어(브라질), 프랑스어, 일본어, 중국어 등이 포함됩니다.
리터럴 문자를 지정할 수 있습니다. 또한 해당 문자를 URL로 인코딩된 형식으로 입력할 수도 있습니다. 예를 들어 a라는 문자를 그대로 입력하거나, 이 문자를 인코딩한 값인 %61을 입력할 수 있습니다.
문자를 구분하는 데 사용되는 쉼표를 포함하여 최대 4096자의 문자를 지정할 수 있습니다.
하이픈으로 구분된 문자 범위를 지정할 수 있습니다. 이때 사용되는 구문은
starting_character
-ending_character
입니다. 예를 들어 a-z를 문자 범위로 입력할 수 있습니다.따옴표(")는 URL 인코딩 값 %22를 사용하여 지정하십시오. ASCII를 사용하면
안 됩니다
.예:
%25는 쿼리에서 URL 인코딩 문자를 금지합니다.웹 에이전트는 URL의 쿼리 문자열에 있는 문자를 BadQueryChars 매개 변수에 정의된 해당 문자의 ASCII 값과 비교하여 쿼리 문자열에서 금지된 문자를 검색합니다. 예를 들어 이 프로세스는 다음과 같이 진행됩니다.
- BadQueryChars 매개 변수에 다음 예제와 같이 퍼센트 기호(%)의 URL 인코딩 값이 포함됩니다.%25
- 웹 에이전트가 다음 쿼리 문자열이 포함된 HTTP 요청을 받습니다.xxx=%0d
- 웹 에이전트가 이전 예제에 있는 URL을 검사하지만 URL 인코딩 값을 디코딩하지않습니다. 예를 들어 웹 에이전트는 이전 예(2 단계)를 캐리지 리턴이아닌리터럴 문자열 %0d로 해석합니다.
- 웹 에이전트가 BadQueryChars 매개 변수의 값을 검사하고 해당 ASCII 값으로 변환합니다. 예를 들어 1 단계의 %25가 퍼센트 기호(%)로 변환됩니다.
- 웹 에이전트가 URL의 각 문자를 BadQueryChars 매개 변수에서 디코딩된 ASCII 값과 비교합니다.
- ASCII 퍼센트 기호(%)가 다음 두 위치에 모두 있기 때문에 웹 에이전트가 요청을 차단합니다.
- URL의 쿼리 문자열
- BadQueryChars 매개 변수에서 디코딩된(ASCII) 값
쿼리 문자열에서 특정 문자를 차단하려면 해당 문자를 포함하도록 BadQueryChars 매개 변수의 값을 설정하십시오.
잘못된 URL 문자 지정
URL 요청에 포함할 수 없는 문자 시퀀스 집합을 나열할 수 있습니다. 에이전트는 이러한 문자 집합을 잘못된 URL 문자로 간주합니다. 웹 에이전트는 이 목록에 있는 문자 또는 문자열이 포함된 URL 요청을 거부합니다. URL에서 "?" 앞에 나오는 문자를 검사합니다. 악의적인 웹 클라이언트가 이러한 문자를 사용하여
Single Sign-On
규칙을 재정의할 수 있으므로 웹 에이전트는 해당 문자가 포함된 URL 요청을 거부합니다.웹 에이전트가 잘못된 URL 문자를 포함하는 URL 요청을 거부하는 경우 웹 서버는 다음 메시지 중 하나를 사용하여 응답합니다.
- 내부 서버 오류
- 웹 페이지를 찾을 수 없음(404) 오류
에이전트에서 요청을 처리하는 방식을 보려면 웹 에이전트 로그를 확인하십시오.
다음 매개 변수를 사용하여 문자를 지정합니다.
BadUrlChars
URL 요청에 사용할 수 없는 문자 시퀀스를 지정합니다. 웹 에이전트는 URL에서 "?" 앞에 나오는 문자를 이 매개 변수의 목록과 비교하여 검사합니다. 지정된 문자가 발견되면 웹 에이전트에서 요청을 거부합니다.
다음과 같은 문자를 지정할 수 있습니다.
- 백슬래시(\)
- 두 개의 슬래시(//)
- 마침표와 슬래시(./)
- 슬래시와 마침표(/.)
- 슬래시와 별표(/*)
- 별표와 마침표(*.)
- 물결표(~)
- %2d
- %20
- %00-%1f
- %7f-%ff
- %25
문자가 여러 개일 경우에는 쉼표로 구분하십시오. 공백을 사용하면
안 됩니다
.물음표(?)가 잘못된 URL 문자 앞에 오면 CGI 매개 변수에 잘못된 URL 문자를 사용할 수 있습니다.
기본값:
비활성화됨(모든 문자가 허용됨).제한:
- 영어 문자에는 기본 16진수 숫자가 적용됩니다. 다른 언어의 경우 허용하려는 언어의 문자에 해당하는 16진수 값을 제거하십시오. 이러한 언어의 예로는 포르투갈어(브라질), 프랑스어, 일본어, 중국어 등이 포함됩니다.
- 리터럴 문자를 지정할 수 있습니다. 또한 해당 문자를 URL로 인코딩된 형식으로 입력할 수도 있습니다. 예를 들어 a라는 문자를 그대로 입력하거나, 이 문자를 인코딩한 값인 %61을 입력할 수 있습니다.
- 문자를 구분하는 데 사용되는 쉼표를 포함하여 최대 4096자의 문자를 지정할 수 있습니다.
- 하이픈으로 구분된 문자 범위를 지정할 수 있습니다. 이때 사용되는 구문은starting_character-ending_character입니다. 예를 들어 a-z를 문자 범위로 입력할 수 있습니다.
- 따옴표(")는 URL 인코딩 값 %22를 사용하여 지정하십시오. ASCII를 사용하면안 됩니다.
잘못된 URL 문자를 지정하려면 차단할 문자를 포함하도록 BadURLChars 매개 변수의 값을 편집하십시오.
참고:
Apache 2.0 리버스 프록시 서버 및 OWA(Outlook Web Access)를 구성하는 경우에는 BadURLChars 매개 변수가 사용되지 않도록 설정해야 합니다. OWA에서는 BadURLChars 매개 변수에 포함될 수 있는 문자를 제한 없이 전자 메일 제목에 허용합니다.잘못된 양식 문자 사용
다음 문자는 일반적으로 교차 사이트 스크립팅 공격에 사용됩니다.
- 왼쪽 및 오른쪽 꺾쇠 괄호(< >)
- 앰퍼샌드(&)
- 따옴표(")
인증 챌린지 중에 사용자에게 양식을 표시하기 위한 스크립팅 코드를 사용하려면 다음 매개 변수를 활성화하여 웹 에이전트가 특수 문자를 HTML 양식으로 보내기 전에 모든 특수 문자를 차단하도록 구성하십시오.
BadFormChars
양식에서 출력으로 사용하기 전에 웹 에이전트가 차단하는 문자를 지정합니다. 활성화되고 URL의 에이전트 이름 부분에 이 매개 변수에 지정된 하나 이상의 문자가 있는 경우 로그인 페이지가 다음 오류 메시지를 반환합니다.
Internal Server Error
기본값:
Disabled (문자가 차단되지 않음)예:
<, >, &, %22제한:
리터럴 문자를 지정할 수 있습니다.- 문자를 구분하는 데 사용되는 쉼표를 포함하여 최대 4096자의 문자를 지정할 수 있습니다.
- 하이픈으로 구분된 문자 범위를 지정할 수 있습니다. 이때 사용되는 구문은 starting_character-ending_character입니다. 예를 들어 a-z를 문자 범위로 입력할 수 있습니다.
- URL 인코딩 값 %22를 사용하여 따옴표(")를 지정하십시오. ASCII를 사용하면 안 됩니다.
다음 단계를 수행하십시오.
- 관리 UI에 로그인합니다.
- 이 매개 변수를 활성화하려는 에이전트 구성 개체를 엽니다.
- BadFormChars 매개 변수 앞에 있는 # 문자를 제거하여 이 매개 변수가 사용되도록 설정합니다.BadFormChars 매개 변수가 기본값을 사용하여 활성화되었습니다.
- (선택 사항) 사용하지 않을 문자를 목록에서 모두 제거합니다. 이 목록에 다른 문자를 추가할 수 있습니다. 문자는 쉼표를 사용하여 각각 구분해야 합니다.
DNS 서비스 거부 공격 방지
웹 서버에 IP 주소가 잘못된 HTTP 요청이 전달되는 경우 웹 에이전트는 해당 IP 주소를 정규화된 도메인 이름으로 확인하려고 합니다. HTTP 요청의 양이 많은 경우 서비스 거부 상태는 웹 에이전트 및 DNS 서버에도 영향을 줄 수 있습니다. 다음 매개 변수는 웹 에이전트가 DNS 조회를 수행할지 여부를 제어합니다.
DisableDNSLookup
웹 에이전트에서 DNS 조회를 수행하지 않도록 설정합니다. 여기에는 역방향(IP에서 FQDN으로) DNS 조회와 정방향(FQDN에서 IP로) DNS 조회가 모두 포함됩니다.
기본값:
No다음 단계를 수행하십시오.
- DisableDNSLookup 매개 변수가 s로 끝나지않는지확인합니다. ACO 템플릿과 LocalConfig.conf 파일의 일부 이전 버전에서 이 오류가 나타날 수 있습니다. 올바른 매개 변수는 p로 끝납니다.
- DisableDNSLookup 매개 변수의 값을 yes로 설정합니다.
중요!
이 매개 변수의 값이 yes로 설정된 경우 쿠키 기반 기능이 제대로 작동하려면 정규화된 도메인 이름이 필요합니다.확장명이 없는 리소스 보호
권한이 없는 사용자가 확장명이 없는 리소스에 액세스할 수 없도록 하려면 다음 매개 변수를 사용합니다.
OverrideIgnoreExtFilter
웹 에이전트에서 모든 URI에 대해 일치하는 항목을 찾을 문자열 목록을 지정합니다. 이 매개 변수는 웹 에이전트가 일반적으로 확장명을 무시하는 리소스나 확장명이 없는 응용 프로그램이나 파일을 보호하는 데 유용합니다. URI가 목록에 있는 문자열 중 하나와 일치하면 웹 에이전트는 정책 서버에 확인하여 리소스가 보호되는지 여부를 결정합니다.
정확한 경로보다는 좀 더 일반적인 문자열을 지정하는 것이 좋습니다. 또한 부분 문자열을 추가하여 리소스 그룹을 보호할 수도 있습니다. 예를 들어 /servlet/ 문자열은 다음 리소스를 보호합니다.
- /dira/app1/servlet/app
- /dirb/servlet/app1
- /dirc/mydir/servlet/app2
기본값:
기본값 없음확장명이 없는 리소스를 보호하려면 보호할 리소스에 대한 문자열(마침표 제외)을 OverrideIgnoreExtFilter 매개 변수의 값에 추가합니다. 에이전트 구성 개체를 사용하는 경우 다중값 옵션을 사용하여 문자열을 추가합니다. 로컬 구성 파일을 사용하는 경우에는 각 문자열을 한 행에 하나씩 추가합니다.
POST 보존 사용 안 함
POST 보존을 사용할 필요가 없는 경우 다음 ACO 매개 변수를 사용하여 POST 보존을 비활성화하십시오.
PreservePostData
웹 에이전트가 요청을 리디렉션할 때 POST 데이터를 유지할지 여부를 지정합니다. 사용자가 양식 또는 인증서 인증과 같은 고급 인증을 요청받을 경우 인증 단계 중에 POST 데이터가 유지됩니다.
기본값:
YesPOST 보존이 사용되지 않도록 설정하려면 PreservePostData 매개 변수의 값을 no로 설정하십시오.
응용 프로그램 보안
권한이 없는 사용자가 웹 에이전트에서 무시하도록 구성된 확장명을 포함하는 잘못된 파일 이름을 URL 끝에 추가할 수 있습니다. 그러면 에이전트는 권한이 없는 사용자가 리소스에 액세스할 수 있도록 허용합니다. 이러한 경우 웹 에이전트에서 액세스를 거부하도록 설정하려면 다음 매개 변수를 사용하십시오.
casso127kkr
SecureApps
에이전트가 권한이 없는 사용자의 URL에 권한을 부여하지 않도록 합니다. 특정 확장명으로 끝나는 파일에 대한 요청을 무시하도록 웹 에이전트가 구성된 경우 공격자가 가짜 URL을 생성하여 리소스에 액세스하려고 할 수 있습니다.
예를 들어 다음과 같은 URL의 리소스가 있을 수 있습니다.
/scripts/myapp
공격자는 다음 예와 같은 가짜 URL을 생성하여 액세스 권한을 얻으려고 할 수 있습니다.
/scripts/myapp/junk.jpg
.jpg 파일에 대한 요청을 무시하도록 웹 에이전트가 설정된 경우 SecureApps 매개 변수의 값을 no로 설정하면 /scripts/myapp/junk.jpg에 대한 요청에 자동으로 권한이 부여됩니다.
SecureApps 매개 변수의 값을 Yes로 설정한 경우 URI가 확장명으로 끝나면 웹 에이전트는 해당 URL이 실제 리소스에 매핑되는지 여부를 확인합니다. 예를 들어 URI가 /scripts/myapp/junk.jpg인 경우 웹 에이전트는 웹 서버를 호출하여 URI를 실제 리소스인 junk.jpg에 매핑합니다. 웹 서버가 리소스를 확인할 수 없으면 에이전트는 요청을 차단합니다. 요청을 차단하면 잘못된 형식의 URI를 사용할 경우 에이전트가 실수로 /scripts/myapp에 대한 액세스 권한을 부여하지 않게 됩니다.
기본값:
No에이전트 응답이 X-Frame-Options를 준수하도록 설정
X-Frame-Options HTTP 헤더는 브라우저가 <frame> 태그를 사용하여 다른 웹 페이지에 포함되거나 프레임으로 사용된 웹 페이지를 로드할지 여부를 결정합니다. 웹 응용 프로그램에 X-Frame-Options 응답 헤더를 사용하는 경우
XFrameOptions
ACO 매개 변수를 설정하여 login.fcc 양식 응답과 같은 웹 에이전트 응답이 X-Frame-Options 응답 헤더를 준수하도록 하십시오. 이 매개 변수의 값을 지정하면 올바른 X-Frame-Options 헤더로 웹 에이전트 응답이 설정됩니다.XFrameOption
XFrameOptions 매개 변수의 사용 가능한 값은 X-Frame-Options 응답 헤더의 값과 동일합니다.
기본값
: None(헤더가 설정되지 않음)예
: XFRAMEOptions = SAMEORIGIN