여느때와 같이 비용 관리가 잘 되고 있나 AWS에 접속하면서 서비스들이 제대로 동작을 하고 있나 확인해보고 있었다. 얼마전 AWS Elastic Beanstalk에 배포해놓은 블로그 서비스도 잘 동작하고 있나 상태를 확인해보았지만, 며칠 전까지만 해도 ok였던 상태가 Severe로 바뀌어 있었다.
Severe 오류 원인
애플리케이션 또는 서버 오류
HTTP 5xx 응답 코드: 서버에서 응답하지 않거나 오류가 발생한 경우.
애플리케이션 오류: 코드 상의 문제로 인해 애플리케이션이 제대로 작동하지 않을 때.
서버 리소스 문제: CPU, 메모리 등 리소스가 부족할 때.
높은 오류 비율
HTTP 4xx 응답 코드: 클라이언트 요청이 잘못되어 다수의 4xx 오류가 발생할 때.
비정상적인 트래픽: 비정상적으로 많은 요청이나 공격으로 인해 서버가 제대로 응답하지 못할 때.
배포 문제
배포 실패: 새로운 버전의 애플리케이션 배포가 실패한 경우.
환경 설정 문제: 환경 변수나 설정이 잘못되어 애플리케이션이 제대로 작동하지 않는 경우.
보안 문제
보안 침해: 서버에 대한 공격이나 비정상적인 접근 시도가 탐지된 경우.
잘못된 인증: OAuth나 JWT 토큰의 유효성 문제로 인해 인증이 실패하는 경우.
이벤트 창을 살펴보면서 언제 이러한 오류가 발생했는지 확인하고, 오류 내용도 살펴보았다.
보아하니, 들어온 모든 요청에 대해 HTTP 4xx 오류가 발생해서 Elastic Beanstalk의 상태가 Severe로 바뀐 것으로 보인다.
그럼 이러한 요청들은 어떤 요청들이고, 누가 보낸것인지 궁금하여 서버 로그를 생성하여 살펴보았다.
로그를 살펴보니 75.119.157.194라는 IP를 쓰고 Intel Mac을 쓰는 어떠한 사람이 내 서버의 민감한 파일이나 디렉토리들을 살펴보려는 시도를 한 것 같았다. 순간 몸에 소름이 돋으며, 얼른 보안 조치를 추가적으로 해야되겠다고 생각되었다.
가장 먼저 저 IP를 내 서버에 들어오지 못하도록 NACL을 설정해야겠다고 생각했다. 기본적으로 여러 IP에서 시도한 것이 아니라 75.119.157.194 하나만이 내 서버에 무수한 시도를 하고 있기 때문에 NACL 인바운드 규칙 편집을 통해 해당 IP의 접속을 차단하기로 하였다.
또한 이참에 가장 기본적인 보안인 HTTPS 통신도 구현해야겠다고 생각했다. 또한 여유가 될 시 WAF와 CloudWatch 설정을 통해 방화벽과 모니터링 설정을 하여 조금 더 보안을 강화해보기로 하였다.
NACL을 통해 75.119.157.194 IP 차단. (확정)
HTTPS 구현 (확정)
AWS WAF와 추가적인 AWS CloudWatch 설정을 통해 방화벽· 세밀한 모니터링 구현. (예정)