운영중인 웹서버에 새벽 내내 디도스 공격이 이어졌습니다.
처음 있는 일이어서 어버버 하다가 그냥 뚜드려 맞기만 했습니다.
공격 받은 서버는 이오이카 채팅 사이트인데, 그 시간대에 다른 채팅 사이트 가가라이브도 공격 받고 있더라고요 ㅋㅋ
공격당시 netstat 명령어로 네트워크 상태를 확인해보면 만개 이상으로 이런식의 연결이 생겨났습니다.
공격지 IP는 중국, 인도, 중동, 유럽, 애저, 구글클라우드 등 전세계 입니다.
TCP 27.126.xx.xxx:443 216.10.247.145:55746 CLOSE_WAIT
TCP 27.126.xx.xxx:443 216.10.247.145:55784 CLOSE_WAIT
TCP 27.126.xx.xxx:443 216.10.247.145:55844 CLOSE_WAIT
TCP 27.126.xx.xxx:443 216.10.247.145:56156 ESTABLISHED
TCP 27.126.xx.xxx:443 216.10.247.145:56258 CLOSE_WAIT
TCP 27.126.xx.xxx:443 216.10.247.145:56264 CLOSE_WAIT
TCP 27.126.xx.xxx:443 216.10.247.145:56776 CLOSE_WAIT
TCP 27.126.xx.xxx:443 216.10.247.145:56954 CLOSE_WAIT
TCP 27.126.xx.xxx:443 216.10.247.145:57132 CLOSE_WAIT
TCP 27.126.xx.xxx:443 216.10.247.145:57142 CLOSE_WAIT
TCP 27.126.xx.xxx:443 216.122.181.249:60262 CLOSE_WAIT
TCP 27.126.xx.xxx:443 216.176.200.37:39154 ESTABLISHED
.
.
.
TCP 27.126.xx.xxx:443 216.176.200.37:43510 ESTABLISHED
TCP 27.126.xx.xxx:443 216.176.200.37:43516 ESTABLISHED
TCP 27.126.xx.xxx:443 216.176.200.37:47924 ESTABLISHED
TCP 27.126.xx.xxx:443 216.176.200.37:53216 ESTABLISHED
TCP 27.126.xx.xxx:443 216.176.200.37:53230 ESTABLISHED
TCP 27.126.xx.xxx:443 216.176.200.37:53242 ESTABLISHED
TCP 27.126.xx.xxx:443 216.176.200.37:53258 ESTABLISHED
TCP 27.126.xx.xxx:443 216.238.83.53:36934 CLOSE_WAIT
TCP 27.126.xx.xxx:443 216.238.83.53:45355 CLOSE_WAIT
TCP 27.126.xx.xxx:443 216.238.83.53:45504 CLOSE_WAIT
첫번째 화이트리스트 정책으로 대응
처음 대응으로 방화벽에 공격지의 IP를 블랙리스트 방식으로 추가하다가
시간만 날리고 아니다라는 것을 깨달았습니다.
(여기서 몇 시간 허비)
다시 국내IP만 허용하는 화이트리스트 방식으로 대응 선회
해외IP는 전부 차단함
(공격 잠잠해지면 해외IP 차단 해제할 생각임)
국내IP 대역은 아래 사이트에서 확인 가능합니다.
방화벽 규칙 만들기 쉽게 엑셀 수식으로 정리한 파일입니다.
두 번째 문제는 방화벽 정책에 저 많은 것을 언제 입력하지?
서버 OS는 PC용 윈도우10이고, 방화벽 프로그램 또한 전문가용은 아닙니다.
프로그램 상으로는 방화벽 정책 입력하는 것이 한번에 쉽게 되어 있지 않습니다.
그런데 레지스트리에서 등록할 수 있는 방법이 있습니다.
먼저 비어있는 방화벽 규칙 만들고, 레지스트리에 규칙 찾아서 값을 직접 변경해 주면 됩니다.
레지스트리 위치는
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules
레지스트리 편집기에서 값이 너무 길어서 붙여넣기 하면 값이 입력 안된 것 처럼 나오는데, 무시하고 확인 누르면 되더라고요.
마지막으로 중요한것, 레지스트리에서 입력한 경우, 방화벽 규칙 편집 누르고, 적용 눌러줘야 적용됩니다.
아래 텍스트 파일 참고
세번째 문제는 방화벽에서 국내IP만 허용하는 규칙 우선순위
윈도우 방화벽에는 규칙의 우선순위를 설정하는 방법이 없습니다.
방화벽을 사용하면 기본적으로 차단이고, 허용하는 규칙만 등록해주면 됩니다.
지금 설정하기 이전에 톰캣 프로세스(java) 규칙 4개가 전체 허용으로 등록 되어 있었는데, 이것을 사용안함
국내IP만 허용 규칙 추가 하고, 이것만 사용함으로 변경
그러면 80, 443 포트에 대해서 국내IP만 허용되고 나머지는 전부 차단 됩니다.
좀 더 보완
돈이 안되는 서비스라서 보안 장비를 추가 할 여건은 안됩니다.
일단 비용 최소화로 조치한 내용입니다.
문제 되는 패킷(SYN Flood)를 차단하거나, 윈도우 방화벽 말고 다른 더 좋은 방화벽 프로그램이 있는지 알아볼 계획입니다.
지금은 was(톰캣)하나로 되어 있는데, web - was도 분리해야 할 것 같기도 하네요.
※ 스마트폰으로 실시간 웹서비스 상태 체크하기
웹서버 장애 체크 하려고, 제가 개발한 앱인데 유용합니다.
장애 발생시 바로 인지 가능합니다.
https://play.google.com/store/apps/details?id=com.rivestsoft.monitor
'개발 - WEB, WAS, DB' 카테고리의 다른 글
디도스 공격 방어 후기 (2) (0) | 2024.08.10 |
---|---|
Mysql 윈도우에서 서버 실행 방법 및 오류 해결 (0) | 2023.01.07 |
Mysql 대댓글 WITH RECURSIVE 계층쿼리 (0) | 2023.01.05 |
오라클 설치 INS-30014 오류 해결 (0) | 2022.08.23 |
win-acme renewal 404 오류 해결 (0) | 2022.03.30 |