SYN 플러딩: Difference between revisions
From IT위키
(새 문서: ; TCP의 3-Way-Handshake 취약점을 이용한 DoS공격으로 다량의 SYN 패킷을 보내 백로그큐를 가득 채우는 방법을 이용한다. == 3-Way-Handshake == * 클라...) |
No edit summary |
||
Line 2: | Line 2: | ||
== 3-Way-Handshake == | == 3-Way-Handshake == | ||
;클라이언트가 접속을 위해 SYN을 보내면, 서버가 SYN/ACK 으로 요청을 인지했음을 응답하고, 클라이언트가 ACK을 보냄으로써 연결이 이루어진다. | |||
# 클라이언트 -> SYN -> 서버 | |||
# 서버 -> SYN/ACK -> 클라이언트 | |||
# 클라이언트 -> ACK -> 서버 | |||
== Backlog Queue == | == Backlog Queue == |
Revision as of 23:12, 18 May 2018
- TCP의 3-Way-Handshake 취약점을 이용한 DoS공격으로 다량의 SYN 패킷을 보내 백로그큐를 가득 채우는 방법을 이용한다.
3-Way-Handshake
- 클라이언트가 접속을 위해 SYN을 보내면, 서버가 SYN/ACK 으로 요청을 인지했음을 응답하고, 클라이언트가 ACK을 보냄으로써 연결이 이루어진다.
- 클라이언트 -> SYN -> 서버
- 서버 -> SYN/ACK -> 클라이언트
- 클라이언트 -> ACK -> 서버
Backlog Queue
- Backlog Queue
- 3-Way-Handshake를 위해 연결이 진행중인 요청을 담아두는 큐
- SYN Backlog Queue엔 SYN을 보내온 연결요청 정보가 임시로 저장된다.
- 서버는 SYN에 대해 SYN/ACK을 보내고 ACK을 받기 전까지 저장해 두는 것이다.
- 큐가 가득차면 다른 연결을 받아들일 수 없게 된다.
SYN Flooding
- 클라이언트가 SYN만 보내고 아무런 동작을 하지 않는다면 해당 연결 요청은 TCP Connection Timeout 시간동안 계속 SYN Backlog Queue에 남아있게 된다.
- 다수의 클라이언트가 고의로 이런 행동을 한다면 SYN Backlog Queue는 가득 차게 된다.
- SYN Backlog Queue가 가득차면 더이상의 연결요청을 받아 들일 수 없게된다.
공격 상황
- 공격이 이루어지고 있는 상황은 netstat -an 을 통해 확인 가능하다.
- 연결 요청중인 목록 중 SYN_RECV로 되어 있는 요청이 많을 경우 Syn Flooding 공격 상황을 의심 해볼 수 있다.
- SYN_RECV로 된 요청이 많고, 해당 요청 IP가 비정상적인 경우 Syn Flooding 공격일 가능성이 아주 높다.
대응법
- TCP Connection Timeout 시간을 짧게 설정한다.
- 단, 너무 짧게 설정할 경우 정상적인 연결요청임에도 느리다는 이유로 연결이 거부되는 경우가 생긴다.
- Backlog Queue를 늘린다.
- 제한된 용량을 무한정 늘릴 수는 없으므로 다른 방법도 병행하여야 한다.
- Syn Cookie를 이용한다.
- 자세한건 Syn Cookie 문서 참조
- Anti-DDoS, IDS/IPS, 방화벽/UTM 등 보안 장비, 솔루션을 이용하여 비정상적인 접근을 탐지하여 차단한다.