728x90
Syn Flooding이란?
- TCP의 3-way handshake 구조적 약점을 이용하는 공격
- 소스 IP를 존재하지 않는 출발지 IP주소로 위조(Spoofing)한 후 서버의 특정 포트에 대량의 SYN packet을 발송하고 연결을 완료하지 않아서 백로그 큐를 꽉차게 함으로써 더 이상의 새로운 연결 요청을 받을 수 없도록 함
- Backlog Queue = Incomplete Queue + Complete Queue
- 원래는 SYN+ACK 응답 후 Incomplete Connection Queue에 연결 요청정보를 저장하고 이후 클라이언트가 ACK응답을 보내면 Incomplete Connection queue 에 있던 연결 요청 정보를 Completed Connection Queue로 이동하여 Accept() 시스템 콜을 통해 연결소켓이 생성되면서 연결 요청정보가 삭제되며 최종 연결이 완료
공격을 막는 방법
- 백로그 큐의 사이즈를 늘린다.
-
- 백로그 사이즈를 늘려도 그 이상으로 공격을 보낼 경우 문제를 피할 수 없기 때문에 임시적인 방법일 뿐
- tcp_syncookies 값을 1로 설정
- 동일 Client(IP)의 연결(SYN) 요청에 대한 임계치를 설정해 과도한 연결 요청이 발생하는 것을 차단
- ex) IP테이블 설정 1초에 10회 발생 시 차단
- First SYN Drop
- 연결 요청 패킷을 보내는 클라이언트가 실제로 존재하는지를 파악. 첫 번째 SYN을 Drop하여 재요청 패킷이 도착하는지 확인함으로써 출발지 IP가 Spoofing 되었는지를 판단한다.
728x90
'백엔드' 카테고리의 다른 글
[Spring] Bean이란? Bean Scope와 싱글톤 레지스트리, Bean 생성방식 (0) | 2021.09.21 |
---|---|
[Spring] IoC와 DI - 1. 오브젝트와 의존관계(토비의 스프링) (0) | 2021.09.21 |
[Network] TCP와 UDP, HTTP1,2,3, HOLB란? (0) | 2021.09.19 |
[Java] String, StringBuilder, StringBuffer의 차이 (2) | 2021.09.12 |
[Java] Java11의 특징(Feat. Java9, Java10) (0) | 2021.09.06 |
댓글