- Syn Flooding 공격을 방지하기 위한 방어 기술
Syn Flooding
- SYN 패킷을 다량으로 보내고 연결을 완료하지 않음으로써 Backlog Queue를 가득차게 만들어 정상적인 연결을 못하게 만든다.
- 자세한 내용은 Syn Flooding 문서 참조
Syn Cookie
- 클라이언트에서 연결요청이 있을 경우 SYN/ACK 패킷에 특별한 쿠키값을 담아 보낸다.
- ACK이 올 경우 쿠키값을 검증하여 제대로 된 값인 경우 연결을 형성한다.
- 연결 수립에 필요한 정보들을 Cookie를 통해 보냄으로써 SYN Backlog Queue를 사용하지 않는다.
- 고의적으로 연결을 완료하지 않아 Syn Backlog Queue를 가득 채우는 공격을 방지할 수 있다.
설정법
리눅스에선 아래와 같은 명령으로 설정 가능하다.
# sysctl -w net.ipv4.tcp_syncookies=1
한계점
- 큐 없이 연결 과정에 있음을 확인할 수 있는 부가 정보들을 쿠키에 담아 보내야 하므로 그에 대한 작업 부담이 있다.
- 연결 요청이 많을 경우 쿠키 값을 만들어 보내고, 쿠키 값을 검증하는 과정만으로 가용성이 많이 떨어질 수 있다.