3-Way Handshaking
TCP프로토콜에서 server와 client가 통신을 하기 위해서 가장 먼저 연결 설정 단계가 필요함.
이 연결 설정은 TCP에서 그 유명한 3-Way handshaking과정을 말함.
server는 client에게 서비스를 제공하는 입장이기 떄문에 당연히 client에서 서비스가 필요할때 먼저 sever로 접속.
즉 server는 passive open을 하고 client의 접속을 기다려야 됨.
반면 client는 active open으로 server에게 연결을 요청할 수 있음. client TCP가 이 요청을 함.
이렇게 client는 server에게 SYN 신호가 있는 패킷을 전송하고 server는 이 패킷에 대한 응답으로 SYN+ACK 패킷을 전송.
다시 client는 server로 부터 받은 패킷에 대한 확인응답으로 ACK을 전송함. 이렇게 함으로써 두 시스템간에 통신이 가능.
위 그림은 정상적인 3-way handshaking 과정을 보여줌. source가 client, Destination이 server로 볼 수 있음.
SYN Flooding Attack
바로 SYN Flooding Attack이 TCP의 3-way handshaking의 취약점을 이용한 공격. (Half-Open 가능하다는 약점)
서비스 거부 공격 - DoS(Denial of Service) - 공격 방법의 한 종류.
공격자는 유효하지 않은 IP주소를 발신지로 설정한 수많은 패킷을 만들어 공격대상에 전송.
순진한 서버는 공격자의 의도를 모른채 client와 연결을 위해, 각각의 패킷에 대한 응답으로 발신지에 SYN+ACK 패킷을 전송.
당연히 server에서 보낸 패킷의 수신지는 유효하지 않기 때문에 다시 server로 ACK이 올리 없음. 즉 연결이 안됨.
하지만 이를 모르는 server는 client로부터 ACK을 기다리며 각각의 잘못된 패킷에 대해 서버 자원을 할당해 놓음.(백로그큐)
이렇게 잘못된 패킷이 계속 누적될 경우 server는 정작 유효한 client에게는 서비스를 제공하지 못함.
심지어 서버의 자원 고갈로 시스템이 다운되는 현상이 발생.
위 그림은 SYN Flooding Attack 과정을 보여줌.
SYN Flooding Attack을 완벽히 방어할 수 있는 방법은 없다고 한다. (TCP 프로토콜 설계상 취약성)
단지 이 공격에 대한 피해를 최소화 하는 방법만 알려져 있다.
SYN Flooding Attack의 예방법
1. 정해진 시간동안 서버로 들어오는 연결 요구의 수 제한. (서비스를 제공할 client수 제한)
2. 원하지 않는 발신지로 부터의 서비스 요청을 제한. (필터링, IDS, Firewall이용)
3. 연결 설정이 완료될때까지 서버 자원 할당 연기. (cookie)
4. 단순히 연결요청 큐(백로그 큐) 사이즈를 늘여줌.
5. 접속 타임아웃(CTO,Connection Time-Out)을 줄임.
출처: http://blog.naver.com/4717010/220112503767
'Security > 일반' 카테고리의 다른 글
리눅스 정리 #2 (0) | 2016.02.29 |
---|---|
리눅스 정리 #1 (0) | 2016.02.29 |
Nessus, OpenVAS and Nexpose VS Metasploitable[펌] (0) | 2016.02.16 |
ARP Spoofing 공격[펌] (0) | 2016.02.15 |
FTP의 Active Mode와 Passive Mode (0) | 2016.02.13 |