[보안] Forced Browsing, Directory Bruteforcing 공격을 WAF로 차단하기

RTUnu12·2025년 2월 18일
0

서론

  • 어떤 해커 어제부터 계속 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 계정에서 뭔가 할려고 했던 것 같다. 무섭다.
    • 끈질기다. 아니 왜 계속하는건데
  • 앞으로도 개발용 인프라를 만들 때 보안은 빼먹지 말고 해야겠다...
profile
이제 나도 현실에 부딪힐 것이다.

0개의 댓글