안녕 퇴물이다. 오늘은 조금 짜증나는 하루였다.


AWS 에서 로드벨런서에 가용되는 인스턴스가 줄어 있다고 알람이 옴.

저렴이 VPS 3대가 돌아가고 있는데. 3명 중 한놈씩 픽픽 죽었다가 살아나길 반복.



1. SQL 서버 혼수상태.


일단 인스턴스의 로그를 까보니 SQL 서버에 접속에 실패해서 재기동을 반복하는 것 같다.

그리고 일정시간 응답이 없으니 로드벨런스가 인스턴스를 강제 재기동 시켜버리기 반복..


(늅늅이들을 위한 참고지식)
로드벨런서는 트래픽을 다른 서버로 골고루 뿌려 주는 역할을 하는데
수신할 서버 중에 특정 서버가 장기간 응답이 없으면 해당 인스턴스를 재부팅시키는 기능이 있다.


SQL 서버를 확인해보니 용량이 가득참. 잉..? 따로 알람을 걸어둔 기억이 없으니 태만이 맞아서 할말이 없음..

(실무에서 이러면 팀장한테 줘터져도 할 말 없긴한데 팀장도 놓친거니 같이 멱살잡고 쌍방폭행해도 된다. 이 경우는 걍 팀이 병신이다.)


Aura 같은 메니지드 쓰면 용량이 자동 확장 되겠지만 그거 아끼겠다고 개별 인스턴스로 sql 굴렸다가 망한 케이스를 보고 있다.

일단, 인스턴스에 SSD 용량 증설하고 파티션 조정해서 용량을 두배로 늘려놨음.

어케 하는지 기억도 안나는데 chatgpt가 친절하게 알려줌.


이제 SQL 접속 문제는 없으나 그래도 인스턴스 한놈씩 계속 픽픽 쓰러짐.



2. 서버에 역병이 도나?


한놈 죽고 그다음 재부팅 되는동안 또 한놈이 죽는다. 반복..

놈씩 죽는거보니 트래픽 받다가 터지는 이거 디도스 삘이 온다.


라운드 로빈으로 되어있어서 트래픽이 3개로 나눠져서 셋다 스플뎀 맞고 터져야 하는데

왜 한놈씩만 터지는지는 무지해서 잘 모르겠다.

(찾아보니 세션유지 기능을 키면 IP당 한 서버에 매치시켜서 그런거란다.)



3. 친구에게 물어본다.


가장 빠른 해결을 위해 타회사 열심히 다니는 팀장 친구에게 무상자문을 구해본다.

그 친구도 개발자라서 인프라쪽은 잘 모르지만 그냥 AWS Shield 쓰면 막아준단다.

쟤네 회사는 걍 그거 쓴다고.


오.. AWS Shield Advanced 이거 쓰면 되겠구나!!


신청 누를려는데 $3000 내란다. (400만원/1년)... 아..아.. 자본주의의 눈물..ㅠㅠ

뭐 이게 돈 잘 버는 서비스면 맡길만하겠는데 그냥 돈도 벌지 않는 개그지 서비스임.


나는 걍 동네 퇴물 개발자라서 JSON 상하차도 힘겨워 하는데.

DDOS까지 막으라니.. 이거 노인학대 아니냐?

게다가 이쪽으론 별로 아는게 없다.



4. 로그를 떨궈본다.


AWS 로드벨런스에 Request 로그를 S3로 떨궈서 다운로드해서 봤다. 대체 무슨 상황인지..

대략 한 놈이 1초에 300개의 리퀘스트를 쳐보내고 있는데, 사이트에서 SQL 캐쉬를 하지 않은 url을 찾아서 보냈다.

그러니까 쿼리 부하 걸리는 URL만 존나 요청해서 서버에 부담줘서 메모리 터지게 만든거..

당연히 작고 귀여운 2GB 짜리 VPS라서 금방 터져버림.


내 햄스터 터졌어요... ㅠ.ㅠ



5. 방화벽을 설치하자!


로드밸런스 아래에 바로 NodeJS 서비스가 물려있는거라 중간에 nginx 같은 미들웨어가 낄자리가 없다.

그래서 AWS에서는 WAF라는 방화벽 서비스 제공하기에 이걸 써보기로 했다.


맘에 안드는 부분은 유료라는 점이고 무려 월별 5달러에, 룰 하나당 1달러임.

게다가 100만 Request당 0.6 (800원)이 나옴.


룰을 만들어서 무식하게 리퀘스트 날리는 아이피를 차단했음.

얘도 좀 허접인게 아이피를 하나 쓰더라.. -_-);;


(늅늅이를 위한 짧은 지식)

방화벽은 WAS(어플서버)에 도달하기전에 아이피 차단 기능, 특정 URL 값에 의한 차단 등이 가능하다.

원래 DDOS는 좀비피씨 수백대를 이용해서 수십~수백개의 아이피로 동시에 공격을 때려서
일반유저랑 구분하기 힘들게 만들어서 일일이 차단하기 힘들게 만듬.



6. 1차 조치


WAF에 차단할 IP를 지정하는 룰을 적용하니, 이제 서버가 늦게 응답하는 경우가 사라졌다.

좀 시간이 지나면 어련히 그만둘까 싶더니 몇시간째 걍 저러고 있다.



7. 2차 조치

조만간 아이피를 바꿔서 공격해올 가능성이 있으니,

Rate Limit 이라고 시간당 호출수를 초과하면 자동으로 차단하는 룰을 설정 넣었다.



8. 심각한 문제


가장 큰 문제는.. 허접때기 DDOS를 막기는 했는데 WAF는 처리 리퀘스트당 돈을 쳐받는다.


1백만 리퀘스트당 800원임.

70M이 넘는 리퀘스트를 날리고 계시고, WAF는 나에게 청구를 하겠지.


이미 5만6천원... 치킨 3마리가 평화의 비둘기 마냥 허공으로 날아갔다.



9. 이제 WAF가 나를 공격한다.


WAF를 쓰지 않고 차단을 해야 하는데

로드벨런서에 설정할 수 있는 AWS의 Security Group은 Allow만 가능함.. 헐..

GPT 형님이 말씀하길, VPC 네트워크에서 인바운드 룰 설정이 가능하단다.


다행히 IP가 한놈이고 이정도는 충분히 Deny 처리가 가능함.



7fed8272a8826eeb3ee696e74591766a1ebd56ec4ef32c428c5fe3b08d65208a4bf6



ㅇㅇ 리퀘스트 퇴겔.



근데 치킨 4마리도 같이 내 지갑에서 퇴겔할듯.. ㅠ