문제 상황
서비스에서 기능들이 느려지면서 정상작동하지 않는 문제가 발생하였습니다.
특히 I/O가 많은 기능들은 거의 동작을 하지않고 있었습니다.
시간이 조금지나고나니 로그인 실패 및 DB사용 모든 기능이 다운되고말았습니다 ㅠ..
문제 확인
먼저 현재 서비스는 퍼블릭 클라우드를 사용하여 쿠버네티스를 배포하여 사용 중이기 때문에
배포상태를 확인하였지만, 문제가 없어서 DB로그를 확인하기 시작했습니다.
데이터베이스의 구조적인 부분에서는 문제가 없는 것을 확인하였는데 데이터베이스 로그 중 특이한 부분을 발견했습니다.
새벽 5시 부터 특정 IP 6개에서 1초에 6~13 번정도의 sa계정 로그인 시도를 확인하였습니다.
이 부분 때문에 DB서버의 CPU가 정상작동하지 못한 것으로 파악되었습니다.
다행인 것은 약 6개의 IP를 특정할 수있었기 때문에 해당 되는 IP를 차단하고자하였습니다.
ACG를 사용하여 해당되는 IP를 막고자 하였지만, 해당 클라우드에서는 오픈되는 IP를 지정할 수는 있지만
특정 IP를 차단하는 기능을 제공하지 않고있었습니다.
때문에 다른방법을 사용하여 해당 IP를 차단해야했습니다
해결
클라우드에서 접근하는 IP를 차단하는 방법을 찾지못했기 때문에 다른방법을 찾아보았는데, 해당 DB의 VM 내부에서
원도우 방화벽 인바운드 규칙을 통해서 IP를 차단할 수 있었습니다.
1. 먼저 윈도우검색에서 방화벽을 검색한 후
항목 중 고급설정에 들어갑니다.
2. 열리는 방화벽 창에서 인바운드 규칙을 더블클릭 하게되면 우측에 인바운드 새규칙을 추가할 수있는 버튼이 나타납니다.
3. 새규칙 버튼을 누르게되면 설정할 인바운드 규칙을 지정할 수있는데
저의 경우 포트나 프로그램이 아닌 특정 IP를 차단할 것이기 때문에
제일 하단에 사용자 지정항목을 선택했습니다.
4. 규칙을 적용할 프로그램을 설정하라고 나타나는데 저는 그대로 모든프로그램을 선택하고 다음으로 넘어갔습니다.
5.. 그다음 프로토콜 및 포트도 디폴드 값인 모두를 선택하고 다음으로.
6. 이제 범위 선택을 하도록하는데 추가버튼을 선택하여 막을 IP항목들을 추가해줍니다.
7. 다음으로 가게되면 이 IP를 허용할 것인지, 차단할 것인지 선택할 수있는데 저는 차단이기때문에 마지막 항목인
연결 차단을 선택해주었습니다.
8. 프로필은 디폴트로 전부다 선택된것으로 사용하시고
9. 마지막으로 해당 차단이 어떤차단인지 이름을 지정하시고 마침을 누르시면 완료입니다.
주의점
위 설정을 하였지만, 바로 차단이 적용되지 않았습니다.
혹시나 해서 VM을 재부팅하였는데 그제서야 정상적으로 인바운드 규칙이 적용되었습니다.