SYN 플러딩: Difference between revisions
From IT위키
(→대응법) |
No edit summary |
||
Line 30: | Line 30: | ||
** 제한된 용량을 무한정 늘릴 수는 없으므로 다른 방법도 병행하여야 한다. | ** 제한된 용량을 무한정 늘릴 수는 없으므로 다른 방법도 병행하여야 한다. | ||
** 리눅스 | ** 리눅스 | ||
::<syntaxhighlight lang="shell"> | ::<syntaxhighlight lang="shell-session"> | ||
# sysctl -w net.ipv4.tcp_max_syn_backlog=1024 | # sysctl -w net.ipv4.tcp_max_syn_backlog=1024 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
:* 유닉스 | :* 유닉스 | ||
::<syntaxhighlight lang="shell"> | ::<syntaxhighlight lang="shell-session"> | ||
# ndd -set /dev/tcp tcp_conn_req_max_q1 1024 | # ndd -set /dev/tcp tcp_conn_req_max_q1 1024 | ||
</ | </syntaxhighlight> | ||
* Syn Cookie를 이용한다. | * Syn Cookie를 이용한다. | ||
** 자세한건 [[Syn Cookie]] 문서 참조 | ** 자세한건 [[Syn Cookie]] 문서 참조 | ||
* Anti-DDoS, IDS/IPS, 방화벽/UTM 등 보안 장비, 솔루션을 이용하여 비정상적인 접근을 탐지하여 차단한다. | * Anti-DDoS, IDS/IPS, 방화벽/UTM 등 보안 장비, 솔루션을 이용하여 비정상적인 접근을 탐지하여 차단한다. |
Revision as of 00:25, 20 May 2018
- TCP의 3-Way-Handshake 취약점을 이용한 DoS공격으로 다량의 SYN 패킷을 보내 백로그큐를 가득 채우는 방법을 이용한다.
3-Way-Handshake
- TCP에서 서버-클라이언트간의 신뢰성 있는 연결을 위한 매커니즘. 클라이언트가 접속을 위해 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를 늘린다.
- 제한된 용량을 무한정 늘릴 수는 없으므로 다른 방법도 병행하여야 한다.
- 리눅스
# sysctl -w net.ipv4.tcp_max_syn_backlog=1024
- 유닉스
# ndd -set /dev/tcp tcp_conn_req_max_q1 1024
- Syn Cookie를 이용한다.
- 자세한건 Syn Cookie 문서 참조
- Anti-DDoS, IDS/IPS, 방화벽/UTM 등 보안 장비, 솔루션을 이용하여 비정상적인 접근을 탐지하여 차단한다.