오늘 회사에서 필요에 의해 유니티 프리랜서 개발자께 요청을 드린 게 있는데 AWS에 접속이 되지 않는다는 말을 들었다.
접속이 안 된다길래 직접 ssh 로그인을 시도했는데 timeout이 떴다.
패스워드가 혹시 틀려서 그런것도 아니고 (애초에 그랬으면 timeout도 뜨지 않았겠지 ㅋㅋ) 대체 무슨 이유길래 로그인부터 안되나 싶어서 AWS EC2 모니터링으로 들어갔더니만 CPU가 50%가 넘었다.
CPU 리미트는 50%로 기본 제한이 되어있기 때문에 결국 리소스가 모자라서 막혀있는것이었다.
나중에 들어가서 syslog이나 웹 로그부터 보고 AWS 모니터링 시간이랑 비교해서 CPU 점유율이 치솟은 시간을 찾아내니까 이상한 웹 요청이 들어와있었다.
들어와있는 페이로드는
https://도메인/boaform/admin/formlogin&username=ec8&psd=ec8
이라고 써있었다.
맨 처음은 누가 헷갈려서 이것을 계속 하는건가 싶었는데 그렇다고 하기에 너무 많은 요청이 있는 것은 뭔가 잘못됐다고 생각이 들었다. 요청 잘못한것도 한두번이지.
검색을 해보니까 몇년 전에도 유행을 했던 공격이었던 모양이다.
결론적으로 이 공격은 Netlinks 라우터를 염두해서 한 공격이었으며 쿼리스트링의 파라미터값은 내가 직접 써 보진 않았지만 추측하건데 default로 이루어진 값이라고 생각된다.
무차별적으로 쏘아보낸 값 중 얻어걸린 라우터가 있으면 거기서 지지고 볶고 할 예정이었을 수도 있고 백도어 등 몰래 점령할 생각일 수도 있겠지만 그건 공격자 맘이니까 뭐...
결국 해결방법이라고 해봤자 내 머리에서는 해외 IP를 차단하고 나머지 로그 다 까서 일일이 IP 차단으로 마무리했었다.
저런 이상현상이 있을 때마다 차단하게 만드는 방법이 뭔가 있을텐데 아직 이렇게 보안적으로 실력이 많이 부족하다는 게 느껴지기도 하고 이렇게 이상현상이 일어날 때 분명 방법이 있을텐데 어떻게 해야되는가 머릿속의 정보가 부족하다는 게 느껴진다.
지금 방법도 솔직히 말해 너무 유연하지 않은 방법이다. 되게 임시방편같은 느낌이 아닌가.
만약 국내사용자가 저렇게 하면 또 똑같이 당한다는건데 스크립트 언어단에서 해결하는 방법을 한번 마련해보든지 등등 내가 동적으로 컨트롤 할 수 있는 언어단에서 마무리를 지어봐야 될 것 같다.
DB에서 블랙리스트를 만들어서 해당 IP면 뭐 403을 리턴시킨다든가 뭐 그럴 수도 있겠는데...
흐음.... 하아 그러면 반대로 요청을 많이 하게 되면 그만큼 DB SELECT도 많이 하게 된다는 말인데 이러면 DB쪽을 많이 잡아먹게 되는건데 하이고 맙소사... ㅋㅋㅋ
오늘도 구글신께 정답을 빌어봐야겠다.