기술 자료실

TCP Syncookees 및 net.ipv4.tcp_tw_recycle 의미

작성자
전대혁
작성일
2019-12-12 13:44
조회
273
TCP Syncookees 이란?
: SYN_Flooding 공격에 대한 대비방법으로 해당 값이 net.ipv4.tcp_syncookies = 0 일때 백로그큐(Backlog Queue)가 가득차면 다른 접속 요구를 받아들이지 않고 값이 1 이면 해당 알고리즘을 이용해 적절한 연결요청에 대해서만 연결을 맺어 접속을 하는 것이다.

참고) http://blog.daum.net/question0921/1603 (TCP Syncookees 의 정보)

백로그큐(Backlog Queue)란 쉽게 말해 일종의 메모리 공간으로 서버와 클라이언트간의 연결 상태가 대기상태(정상 또는 비정상의 원인)로 빠진 후 다음 요청이 없을 때 해당 연결을 초기화하는데 이 초기화 시간은 10초로 가정하면 대기상태에 빠지고 10초동안 백로그규란 이름의 메모리 공간에 저장시켜 둔다는 의미이다.
net.ipv4.tcp_max_syn_backlog = 1024 -> 백로그규의 사이즈이다. 임의로 값을 지정가능함.

예제) net.ipv4.tcp_max_syn_backlog = 1024 #백로그큐값이 가득 차고
net.ipv4.tcp_syncookies = 0 #해당 값이 0이고
SYN_Flooding #해당 공격이 들어오면
tcp세션 연결이 안된다. 즉 새로운 클라이언트들의 접속이 안된다는 것이다.
그렇기 때문에 서비스 상황에 맞게 net.ipv4.tcp_syncookies 값을 설정해 줘야 된다.


참고)
해당 값이 net.ipv4.tcp_syncookies = 1 일때 SYN Flooding 공격이 있으면 messages 파일에 아래와 같은 내용이 출력된다.
# possible SYN flooding on port 80. Sending cookies.

TCP Syncookees 좀 더 자세한 정보는 아래를 참조하세요.

http://sangchul.kr/64 (/etc/sysctl.conf 설정값 정보)


net.ipv4.tcp_tw_recycle 이란?
: 쉽게 말해 서버A와 B가 패킷을 주고받다가 세션종료를 하면 서버A,B둘다 정상적인 종료가 될때까지 대기상태에 빠진다.
이때 서버A가 B에게 재연결을 요청할 경우 서버B는 이미 대기상태에 있으므로 새로운 세션연결을 위한 접속절차를 처음부터 다시 시행한다.
하지만 서버B의 입장에서 보면 동일한 기존세션이 아직 유지(비록 대기상태이지만)되어 있기 때문에 시스템의 리소스 절약을 위해서 tcp_tw_recycle의 특별한 알고리즘을 이용해 연결 요청이 들어온 세션의 적합성 유무를 계산하여 기존 연결을 재활용 할 수 있게 한다.
tcp_tw_recycle의 recycle처럼 해석하면 재활용이다. 말그대로 기존 세션을 폐기하지 않고 재활용 한다는 것이다. 물론 값이 1일 때 재활용하는 것이고 0 이면 안하겠다는 것이다.

좀 더 자세한 내용은 아래 url을 참고하세요.

http://tagnee.tistory.com/22