본문 바로가기
IBM - old/IBM APIC

[DataPower]WAF(Web Application Firewall) on IBM DataPower 설정 및 보안 강화 방안 가이드 - part #1

by freeman98 2017. 6. 25.

Part #1 : DataPower 에서 기본 WAF 서비스 설정


강좌의 첫번째에서는 IBM DataPower 를 가지고 가장 기본 형태의 WAF(Web Application Firewall) 서비스를 작성해 보는 것입니다.


상단의 요약된 그림에서도 보시면 아시겠지만 WAF 는 Web 서비스에대한 소프트웨어적인 방화벽 역할을 수행하면서 다양한 위협/공격에 대한 방어 기능을 제공할 수 있습니다. 여기서는 WAF 의 기본 기능과 보안 방어 기능에 추가하여 XSS 공격/SQL Injection 공격등에 대한 방어 기능도 추가하여 설정하도록 하겠습니다.


별도의 도메인에서 New Service > Web Application Firewall 을 선택하여 만들고자 하는 WAF 서비스를 새로 생성합니다.
(메뉴에서 이미 보셨겠지만 IBM DataPower 는 WAF 이외에 다양한 Secure Gateway 서비스를 제공할 수 있습니다. 이건 다음 기회에...)


WAF 서비스를 새로 생성했으면 해당 서비스에서 기본적으로 필요한 Remote Host/port(대상 서버) 정보를 입력합니다. 해당 부분은 WAF 를 통해서 연결될 서비스 주소와 포트를 의미합니다. (기본적으로 WAF 의 가장 중요한 기능 중의 하나는 목적 서비스의 직접 노출을 방지하는 것입니다.)


다음으로는 WAF 서비스에서 기본적으로 필요한 Source Address(DP 서비스 IP/Port) 정보를 입력 합니다. 이 부분은 IBM DataPower 에서 해당 WAF 서비스를 어떤 IP 와 Port 로 오픈할 것이냐를 결정하는 것입니다. 이후 해당 IP/Port 로 요청되는 서비스를 WAF 에서 처리하게 됩니다.


WAF 서비스의 앞과 뒤가 설정이 완료되면 기본 보안 정보를 추가하기 위하여 Security Policy 에서 '+' 를 클릭하여 보안 정책을 추가합니다. 

Creating an application security policy
https://www.ibm.com/support/knowledgecenter/SS9H2Y_7.5.0/com.ibm.dp.doc/waf_applicationsecuritypolicy_creating.html

보안 정책은 하단과 같이 Request Maps, Response Maps, Error Maps 를 설정할 수 있으며 이를 통해서 요청/응답/에러에 대한 처리를 수행할 수 있습니다.


이렇게 Name-Value profile 을 만든후에 하단과 같이 Header 나 URL-Encoded Body, QueryString 에서 해당 profile 이 적용되도록 하단과 같이 선택합니다.


기본적인 Request Maps 을 생성하기 위해서 보안 정책의 기본 Matching Rule 을 생성하고 입력 합니다. (예제 이므로 모든 URL 에 적용되도록 * 사용)


그 뒤 실제 Action 을 지정하기 위하여 Request Profile 옆의 '+' 아이콘을 클릭하여 요청 프로파일을 새로 생성합니다.

Creating a web request profile
https://www.ibm.com/support/knowledgecenter/SS9H2Y_7.5.0/com.ibm.dp.doc/waf_webrequestprofile_creating.html

요청 프로파일에는 다양한 옵션을 지정 가능하며 기본 설정부분에서 참고할 부분은 Access Control List 와 Content-type list 입니다.


Access Control list 는 '+' 아이콘을 클릭해서 생성할 수 있으며 하단과 같이 WAF 의 가장 기본적으로 받아들일 요청의 IP 와 거부할 요청의 IP 를 CIDR 형태로 직접 지정할 수 있습니다 .


다음으로 Methods & Versions 에서는 WAF 에서 허용 가능한 HTTP 버전이나 Methods 를 선택할 수 있습니다.


현재 별도로 Processing 은 추가할 것이 없으므로 기본으로 놔두고 Name-value 파트에 대한 설정을 위하여 하단과 같이 Name-Value Profile 을 하나 생성한 후 넣어줍니다. 하단의 내용을 보시면 아시겠지만 기본적으로 Total size 나 최대 name 길이등 다양한 보안적인 기능을 설정 가능하며 추가적으로 XSS(Cross Site Script) 방어 패턴을 넣을 수 있습니다. (향후 언급하겠지만 해당 패턴 파일 수정을 통해서 추가적으로 XSS 방어에 필요한 원하는 패턴을 더 넣을수 있습니다.)



기본설정이랑 Cookie 와 Multipart Form 은 기본 값으로 두고 Threat Protection 파트를 확인하고 필요한 위협 방지 관련 기능을 추가합니다. (예: SQL Injection 방지를 위한 SQL Injection Filter 추가 - URI 의 Unicode 사용 금지나 '..', '.exe' 금지등은 기본 보안 조건으로 설정되어 있습니다.)


이와 같이 보안 정책의 요청 정책을 설정 완료했다면 기본값으로 응답 정책도 하나 생성합니다.


이렇게 기본적으로 IBM DataPower 위에서 WAF 설정이 완료되었다면 해당 설정을 저장하고 하단과 같이 정상적으로 service 가 올라오는지 확인합니다.
(서비스가 제대로 올라오지 않으면 잘못된 설정이 있는지 확인이 필요합니다.)


이제 기본 WAF 서비스설정은 마무리했으니 간단한 샘플 애플리케이션을 통해서 대상 서비스 IP 대신에 지금까지 작성한 WAF 서비스의 IP/port 로 변경하여 해당 기능이 정상적으로 동작하는지 확인해 봅니다.



요청이 정상적일때 - 정상적으로 지정된 page 에 대한 호출 가능


요청에 보안 위협이 포함되었을때(예: SQL Injection attack("MA' OR '1'='1"), XSS attack("<script></script>") 등) - WAF 에서 위협 감지 및 방지



위와 같이 정상적인 결과가 나온다면 IBM DataPower 를 활용하여 기본적인 WAF 설정 및 테스트를 문제 없이 완료하신 것 입니다. 여기까지가 Part #1 이며 이후에 지금 설정한 기본 WAF 서비스를 보강하는 형태로 다음 강좌를 진행하도록 하겠습니다.



댓글