질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

SYN_RECV 상태로 머무르는 소켓들에 대해..

작성자 정보

  • 김기환 작성
  • 작성일

컨텐츠 정보

본문

저번주에 IDC에서 연락이 왔습니다. SYN 패킷이 다량으로 감지되었다고 공격인듯 싶으니 점검하라고
APACHE에 연결된 JSP WAS는 메모리 부족으로 몇번 누으셨구요.
SYN 공격이었다고 생각합니다.
그후로 며칠 후 특별히 SYN 패킷이 대량으로 감지되는 않고있습니다.
그후로 패킷 상태 개수를 체크해서 주기적으로 확인하고 있습니다.

netstat -anp | grep :80 | grep SYN_RECV | wc -l
netstat -anp | grep :80 | grep EST | wc -l

그런데 이상한것은 SYN_RECV 된 소켓이 항상 ESTABLISHED소켓과 비례적으로 증가한다는 겁니다.
또한 SYN_RECV 상태인 소켓의 src IP가 ESTABLISHED 상태인 소켓의 src IP중에도 있다는 겁니다.
즉, 정상연결된 IP들중에 SYN_RECV상태로 타임아웃 될때까지 대기중인 소켓을 발생시키는 놈들이 있다는 겁니다.
공격이라면 SYN_RECV 인 놈들의 IP가 가짜여야 하지 않을까요 ?
개중에는 ping이나 traceroute 했을때 못찾는 IP도 있긴 있습니다.
SYN_RECV 상태로 한 2분 좀 안되게 그대로 타임아웃 될때까지 대기하는 IP들의 80%는
실제 ping이 가거나 ESTABLISHED된 IP입니다.

apache가 바쁠때, 사용자가 몰릴때 SYN_RECV가 순간적으로 보일수는 있을듯 싶습니다만,
정상적으로 ESTABLISHED된 IP 들에서
정상연결된 소켓 상태도 보이고
SYN_RECV 상태로 계속 남아있는 소켓도 보이는 상태가
지속적으로 발견되된다면 어떻게 생각하는게 맞을까요 ?
사용자들이 브라우져가 웹서버에 요청하는 순간에 정지나 닫기를 그렇게 많이 하는걸까요 ?
정상적인 사용자들이 SYN_RECV 상태로 남는 소켓을 왜 그렇게 자주 만들까요 ?

실제로 ab로 apache에 스트레스를 주면서 여러차례 테스트 해봐도
SYN_RECV는 거의 안보이다가 잠깐 보이고 사라집니다.
그런데 이상하게 실제 서비스에서 사용자가 많아지면 SYN_RECV 상태로 남는 놈들이 많아지고
그놈들의 IP로 ping을 해보면 상당수의 IP가 ping이 제대로 간다는 겁니다.
ping이 안간다고 해서 무조건 가짜 IP로 생각할 수도 없을진데, 대부분은 ping이 가니..
SYN_RECV 상태로 한참동안 있는 소켓이 어떤 이유인지 정말 궁금합니다.

이것또한 공격일까요 ?

참고로 생각해볼 수 있는 것이라도 도움말씀 부탁드립니다.

참고로,

웹서버 앞단에 하드웨어는 존재하지 않으며 웹서버 한대에 한개의 IP에 300개 정도의 도메인이 가상호스트로 접속됩니다.

-----------------------------------------------------------
httpd.conf (설정값을 다양하게 바꿔봤지만.. 결과는 동일합니다.)
-----------------------------------------------------------
KeepAlive On
MaxKeepAliveRequests 5000
KeepAliveTimeout 5

<IfModule worker.c>
ThreadLimit           25
ServerLimit           20
StartServers           3
MaxClients           500
MinSpareThreads       25
MaxSpareThreads       75
ThreadsPerChild       25
MaxRequestsPerChild    0
</IfModule>


-----------------------------------
ESTABLISHED SOCKET SRC IP LIST
-----------------------------------
121.158.246.103
123.142.40.229
125.133.2.41
203.210.53.173
118.34.61.68
125.190.181.46
218.52.46.56
61.100.205.21
211.49.2.108
211.48.109.10
221.164.148.240
203.123.210.89
............
............

-------------------------------
SYN_RECV SOCKET SRC IP LIST
-------------------------------
125.133.2.41
61.100.205.21
................


관련자료

댓글 1

장규승님의 댓글

  • 장규승
  • 작성일
ddos 공격에서 ip 가 가짜 인것두 있겠지만, 정상인 좀비들도 많이 있습니다.
3 way handshake 에서 SYN을 받기위해 기다리는 것이고 이것이 부하를 높이게 되는 공격 형태란 말이죠......음...
iptables 같은 걸로 막을려고 생각하시면 90%이상 뻗어 버릴 것입니다.( 공격숫자가 적으면 막을수 있지만...)

커널 변수값을 조금 공부하시면 도움이 될듯합니다.

실제로 서버단에서 완벽하게 대체할수 있는 방법은 없습니다.
그저 느리게나마 웹이 출력 되게는 할 수 있죠..

방어장비를 이용하는게 제일 낫다고 봅니다. 로드 밸런싱을 이용해서 장비 수로 싸워 보는것도 좋을듯 합니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,803 개
  • 현재 접속자 :  96 명