악의적인 요청에 대한 보안
개요
AWS에서 배포되어있던 웹 서비스들에 대하여 지속적인 악의적인 요청들이 발견되었습니다. 이러한 요청들의 문제점, 이유, 그리고 해결 방안에 대하여 정리하였습니다.
악의적 요청
AWS 웹 서버 로그 모니터링 중 불특정 다수의 IP로부터 웹 서버로 악의적인 의도가 의심되는 요청들이 다수 발견되었습니다.
예를 들어 다음과 같은 요청의 경우 anvil.kr
도메인의 서버에 대하여 GET /.env
로 요청을 보내고 있습니다.
xxx.xxx.xxx.xxx - - [27/Mar/2024:03:37:45 +0000] "GET /.env HTTP/1.1" 404 197 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"
.env
는 존재하지 않는 도메인이라 404 Not Found를 리턴하였습니다.
일반적으로 .env
는 서버의 민감정보들을 담는 파일명으로 사용되기 때문에 악의적 요청으로 의심됩니다.
문제점
/phpadmin
, /admin
, /myphpadmin
, /.env
등으로의 요청은 현대의 웹 프레임워크에서는 일반적으로 사용되지 않는 엔드 포인트이기 때문에 직접적인 보안 위협은 존재하지 않습니다.
다만, 이러한 요청이 지속적으로 발생하게되면 웹 서버에 부담이 될 수 있습니다.
아래는 로드밸런서의 한주 동안의 모니터링 결과를 조회한 결과입니다:
일부분 피크가 발생하는 부분들이 집중적으로 악의적인 요청이 들어오는 시간대입니다. 특정 구간의 경우 분당 약 100회 요청이 발생하는것을 확인 할 수 있습니다.
해결 방안
서버의 컴퓨팅 리소스를 보호하기 위하여 두가지 해결 방안을 제시합니다.
Honeypot
Honeypot은 꿀단지라는 뜻으로, 악의적인 공격이 들어오는 엔드포인트들에 대하여 특정 서비스로 유도하는 방법입니다.
보통은 공격자의 패턴 분석등을 위하여 허니팟 내부의 서비스를 구현하고 공격자의 패턴을 추적하는 기능을 구현하여야하지만 현재 해결 방법은 허니팟에서 흔하게 사용되는 라우팅 패턴들을 Nginx 서버 설정에서 요청을 차단하도록 지정하는것입니다.
AWS WAF/Shield
알라카르테몰과 같이 AWS 로드밸런서를 사용하는 경우 컴퓨팅 리소스 낭비 이외에 로드밸런서 자체에 대한 부하가 발생할 수 있습니다. 이는 로드밸런서의 가격 정책에 의해서 과비용이 청구될 수 있습니다.
이를 해결하기위하여 AWS WAF 또는 Shield 서비스를 사용하여 보호가 가능합니다. 이는 추가적으로 DDos 요청등에 대한 방어에도 도움이됩니다.
AWS AWF의 가격 정책 참조