SYN Flooding 방어

lkh의 이미지

TCP SYN Flooding에서 스푸핑된 ip로 SYN을 보내면 스푸핑했던 ip를 가진 컴퓨터로 SYN+ACK가 가잖아요
그런데 SYN+ACK를 받고 가만히 있나요?
SYN을 받은적이 없는데 갑자기 SYN+ACK가 오면 바로 RST 보내야 하지 않나요?
그리고 RST를 받으면 일정시간 Half-open 상태로 백로그큐에서 대기할 필요 없이 바로 초기화 하면 SYN Flooding은 완벽하게 방어하게 되는거 아닌가요?

혹시 요즘은 운영체제에서 이렇게 해서 SYN Flooding 방어하는 기능이 있나요?

tyhan의 이미지

말하신대로 RST패킷이 오면 그 소켓을 닫아버려서 백로그큐를 확보를 합니다.
그러나, 질문하신 환경은 정말 좋은 환경일때이고 아래와 같은 경우도 있을 수 있습니다.
1. SYN+ACK패킷이 왔다하더라고 RST패킷을 보내지 않을 수 있습니다.(네트워크 프로토콜은 참 불친절함)
2. 존재하지 않는 IP로 변조해서 보낼수 있습니다. (RST보낼 Ip가 없는것이죠)
3. 실제로 좀비피씨들이 공격할수 있습니다.(실제로 여러곳에서 여러패킷이 보내오죠.)

lkh의 이미지

왜 갑자기 syn+ack를 수신했는데 rst를 안보내죠?
이상한 패킷을 받으면 rst를 보내야 정상 아닌가요? 무슨 이유가 있나요?
rst를 어느 상황에만 보내는거죠?

tyhan의 이미지

보내면 좋지만, 통상적인 프로토콜에서는 안보내도 문제가 되지 않기 때문입니다.
세션 연결도 없는데 굳이 대답해 줄필요가 없는거죠.

lkh의 이미지

자꾸 귀찬게 질문해서 죄송한데 그렇다면 닫힌 포트에 syn 보냈을 때 rst로 응답하는건 왜그렇죠? 어쩌피 닫혀있으니까 무시해도 될 것 같은데...

chadr의 이미지

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.

lkh의 이미지

아 그렇군요
귀찬으셨을텐데 답변 감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.