SYN Flooding 방어
글쓴이: lkh / 작성시간: 월, 2016/10/17 - 3:07오후
TCP SYN Flooding에서 스푸핑된 ip로 SYN을 보내면 스푸핑했던 ip를 가진 컴퓨터로 SYN+ACK가 가잖아요
그런데 SYN+ACK를 받고 가만히 있나요?
SYN을 받은적이 없는데 갑자기 SYN+ACK가 오면 바로 RST 보내야 하지 않나요?
그리고 RST를 받으면 일정시간 Half-open 상태로 백로그큐에서 대기할 필요 없이 바로 초기화 하면 SYN Flooding은 완벽하게 방어하게 되는거 아닌가요?
혹시 요즘은 운영체제에서 이렇게 해서 SYN Flooding 방어하는 기능이 있나요?
Forums:
말하신대로 RST패킷이 오면 그 소켓을 닫아버려서
말하신대로 RST패킷이 오면 그 소켓을 닫아버려서 백로그큐를 확보를 합니다.
그러나, 질문하신 환경은 정말 좋은 환경일때이고 아래와 같은 경우도 있을 수 있습니다.
1. SYN+ACK패킷이 왔다하더라고 RST패킷을 보내지 않을 수 있습니다.(네트워크 프로토콜은 참 불친절함)
2. 존재하지 않는 IP로 변조해서 보낼수 있습니다. (RST보낼 Ip가 없는것이죠)
3. 실제로 좀비피씨들이 공격할수 있습니다.(실제로 여러곳에서 여러패킷이 보내오죠.)
왜 갑자기 syn+ack를 수신했는데 rst를
왜 갑자기 syn+ack를 수신했는데 rst를 안보내죠?
이상한 패킷을 받으면 rst를 보내야 정상 아닌가요? 무슨 이유가 있나요?
rst를 어느 상황에만 보내는거죠?
보내면 좋지만, 통상적인 프로토콜에서는 안보내도
보내면 좋지만, 통상적인 프로토콜에서는 안보내도 문제가 되지 않기 때문입니다.
세션 연결도 없는데 굳이 대답해 줄필요가 없는거죠.
자꾸 질문해서 죄송한데 그렇다면 닫힌 포트에 syn
자꾸 귀찬게 질문해서 죄송한데 그렇다면 닫힌 포트에 syn 보냈을 때 rst로 응답하는건 왜그렇죠? 어쩌피 닫혀있으니까 무시해도 될 것 같은데...
SYN를 받은적이 없는데 SYN+ACK를 받았을 때
SYN를 받은적이 없는데 SYN+ACK를 받았을 때 RST을 안보내는 이유는 정상적인 TCP handshaking절차가 아니기 때문입니다. 닫힌 포트에 SYN를 보내는건 정상적인 TCP Handshaking과정이며 이 절차에서 오류가 발생했기 때문에(포트가 닫혀있음) handshaking을 끝내도록 RST을 보내는 것입니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
아 그렇군요 귀찬으셨을텐데 답변 감사합니다.
아 그렇군요
귀찬으셨을텐데 답변 감사합니다.
댓글 달기