BLOG

AWS WAF를 활용하여 SQL injection 공격 방어하기!!
작성일: 2016-09-06

작성 : 메가존 SA팀

AWS WAF는 말 그대로 웹 애플리케이션 방화벽 서비스입니다.

아래 이미지와 같이 CloudFront를 통해 설정하여 사용할 수 있습니다.

 

 

 

여기서는 AWS 기능 중에 하나인 SQL injection을 방어하는 설정을 해보고 실제 동작을 확인해 보도록 하겠습니다.

 

WAF를 설정해 보도록 하겠습니다.

AWS 관리 콘솔에서 WAF를 선택합니다.

아래와 같은 화면에서 [Get started] 를 선택합니다.

 

 

 

 

다음 화면에서 [Web ACL name] [CloudWatch metric name]을 지정하고 [Next] 버튼을 선택합니다.

 

 

 

 

상세한 정책 설정은 뒤에서 이루어지므로 여기서는 [Next]를 선택합니다.

 

 

 

 

다음 화면에서 [Dfault action] -> [Allow all requests that don’t match any rules]을 선택하고 [Next]를 선택합니다.

 

 

 

 

문제가 없다면 아래와 같이 Web ACLs가 생성되게 됩니다.

 

 

 

 

일단 WAF 설정이 끝났으며 S3와 CloudFront를 연동하는 설정을 하도록 하겠습니다.

 

 

 

 

위와 같이 S3와 CloudFront를 연동 설정을 한 후 CloudFront에서 제공하는 URL로 접속이 가능한지를 확인합니다.

 

 

 

 

위와 같이 출력된다면 문제없이 설정을 완료한 것입니다.

 

그 다음은 실제 접속한 정보가 로그에 기록 되었는지 확인해 보겠습니다.

아래 로그를 보면 접속한 IP 정보등을 확인할 수 있습니다.

 

 

 

 

이제 WAF에서 SQL injection 설정을 해보도록 하겠습니다.

 

 

 

 

다음은 Rule을 생성합니다.

 

 

 

 

다음은 Web ACL에 Rule을 지정해 줍니다.

 

 

 

 

이제 WAF도 설정이 완료 되었습니다.

다음은 실제 SQL injection을 막을 수 있는지 sqlmap 툴을 사용하여 인위적으로 공격을 해보도록 하겠습니다.

 

 

 

 

설치가 완료되면 아래와 같이 테스트를 진행합니다.

 

 

 

 

테스트 실행이 끝나면 WAF 관리 화면에서 Block된 로그가 있는지 확인합니다.

Block된 URL로 브라우저에서 차단되는지를 다시한번 확인해 보겠습니다.

 

 

 

 

CloudWatch를 통해 Block된 요청에 대한 메트릭도 확인해 볼 수 있습니다.

 

 

 

 

지금까지 SQL injection 공격에 대한 AWS WAF 설정을 해보았습니다.

더 자세한 내용을 원하시는 분은 아래 URL을 참고해 주시길 바랍니다.

 

https://aws.amazon.com/ko/blogs/korea/new-aws-waf/

https://aws.amazon.com/ko/documentation/waf/