서론

- 어떤 해커 어제부터 계속 GET 요청으로 php 파일이나 git 등 여러 정적 파일이 나오는지 계속해서 무작위로 요청을 하고 있다.
- 필자는 Spring Boot로 개발했으며 static 파일에 어떠한 파일을 넣지 않고 application.properties를 github secret으로 관리하고 있으며 docker로 배포하는 형태이기에 저런게 나올 가능성이 없으나 혹시나 필자가 생각 못했던 무언가가 나올 수 있기에 (로그인 API라던가... AWS 토큰이라던가...) 이에 대한 보안 조치를 하기로 결심했다.
실제로 토큰이 유출되어 해커가 EC2 인스턴스를 여러 개 열어서 코인 채굴을 하여 요금이 3억이 나온 사례가 있다. 반드시 계정에 2FA를 걸어두자.
현재 아키텍처
Route 53 -> ALB -> 퍼블릭 서브넷의 EC2
- 여기서 EC2에 대한 80/443 포트는 ALB의 보안 그룹에 대해서만 허용하였기에 ALB를 거쳐서 오는 공격이라고 결론을 지었다.
AWS WAF
- ALB나 다른 인스턴스에 대해 웹 공격에 대한 보안 서비스를 제공하는 AWS 서비스 중에 하나다.

-
AWS에서 기본으로 제공하는 보안 서비스 (익명 IP 차단, 잘못된 인풋, SQL 인젝션, 워드프레스 등등)과 함께 한국을 제외한 모든 지역의 접근을 차단, 그리고 이 모든 걸 뚫고 오는 해커를 위해 git, env 등 해당 단어가 포함된 URI 경로를 차단하는 규칙을 세웠다.
-
가중치가 있는데 이게 1500을 넘지 않도록 하자, 요금이 더 청구된다.
그 외 조치
- ALB와 연결된 Route 53의 A 레코드를 단순 정책에서 지리적 위치 정책을 사용하여 해당 도메인에서 한국을 제외한 다른 지역의 접근을 차단하였다.
- 보안 그룹 점검 후 CI/CD 등에서 정보가 노출되었는지 확인하였다.
- EC2 인스턴스 내에서 열린 포트가 있는 지 확인한다.
결과



- 공격은 성공적으로 막을 수 있었다.
- 해당 공격을 분석해보니 다음과 같은 결론을 유추할 수 있다.
- 여러 국가를 통해 접근하는 것을 보니 아마도 VPN을 쓰는 것 같다.
- 한번에 50개 정도의 공격이 차단되는 것을 보아하니 봇을 이용해서 무작위 공격을 하는 것 같다.
- 익명 IP를 사용한다.
- 해당 공격자는 static에서 나올 법한 여러 php 파일이나 중요한 정보가 포함된 aws 설정 파일 및 application.properties 등을 계속 GET으로 검색하던 것을 보아 여기서 정보를 캔 후 내 AWS 계정에서 뭔가 할려고 했던 것 같다. 무섭다.
- 끈질기다. 아니 왜 계속하는건데
- 앞으로도 개발용 인프라를 만들 때 보안은 빼먹지 말고 해야겠다...