Полуоткрытое TCP/IP-соединение: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Пушёк (обсуждение | вклад) Нет описания правки |
|||
(не показано 9 промежуточных версий 7 участников) | |||
Строка 1: | Строка 1: | ||
'''Полуоткрытое TCP/IP соединение''' ({{lang-en|half-open connection}}) |
'''Полуоткрытое TCP/IP соединение''' ({{lang-en|half-open connection}}) — [[TCP]]-соединение, в котором состояния двух его участников становятся несинхронизированными вследствие сбоёв или преднамеренных действий одного из участников. |
||
Первоначально термин относился к нарушению синхронизации уже установленного соединения (см. [[TCP#Состояния сеанса TCP|состояния сеанса TCP]]). Но затем более распространённым стало применение термина |
Первоначально термин относился к нарушению синхронизации уже установленного соединения (см. [[TCP#Состояния сеанса TCP|состояния сеанса TCP]]). Но затем более распространённым стало применение термина '''полуоткрытое TCP/IP соединение''' к случаю нарушения нормальной последовательности установления соединения. Это произошло после описания CERT Coordination Center<ref>[http://www.cert.org/advisories/CA-1996-21.html TCP SYN Flooding and IP Spoofing Attacks] {{Wayback|url=http://www.cert.org/advisories/CA-1996-21.html |date=20080914221531 }}{{ref-en}}</ref> уязвимости реализации протокола, которую можно использовать для проведения атаки типа [[SYN-флуд]] ({{lang-en|SYN-flood}}). |
||
==Технические подробности== |
== Технические подробности == |
||
Перед началом передачи каких-либо данных, согласно протоколу TCP, стороны должны установить ''соединение''. Соединение устанавливается в три этапа (процесс «трёхкратного рукопожатия» TCP). |
Перед началом передачи каких-либо данных, согласно протоколу TCP, стороны должны установить ''соединение''. Соединение устанавливается в три этапа (процесс «трёхкратного рукопожатия» TCP). |
||
# Клиент (сторона |
# Клиент (сторона — инициатор соединения) посылает пакет с установленным флагом SYN (''synchronize''). |
||
# В ответ на него сервер должен ответить комбинацией флагов SYN+ACK (''acknowledges''). |
# В ответ на него сервер должен ответить комбинацией флагов SYN+ACK (''acknowledges''). |
||
# После этого клиент должен ответить пакетом с флагом ACK, после чего соединение считается установленным. |
# После этого клиент должен ответить пакетом с флагом ACK, после чего соединение считается установленным. |
||
Строка 14: | Строка 14: | ||
Нарушение синхронизации может произойти на любом из описанных шагов. |
Нарушение синхронизации может произойти на любом из описанных шагов. |
||
==Три значения термина== |
== Три значения термина == |
||
Полуоткрытое соединение, описанное в стандарте TCP<ref>[http://tools.ietf.org/html/rfc793 RFC793]{{ref-en}}</ref>, возникает в результате ошибки одного из участников соединения или внезапного прекращения его (участника) работы без уведомления второй стороны. Если обе стороны находились в состоянии установленного соединения, то, после аварийного завершения соединения с одной стороны, вторая сторона может находиться в состоянии полуоткрытого соединения неопределённо долгое время. |
Полуоткрытое соединение, описанное в стандарте TCP<ref>[http://tools.ietf.org/html/rfc793 RFC793] {{Wayback|url=http://tools.ietf.org/html/rfc793 |date=20090302003939 }}{{ref-en}}</ref>, возникает в результате ошибки одного из участников соединения или внезапного прекращения его (участника) работы без уведомления второй стороны. Если обе стороны находились в состоянии установленного соединения, то, после аварийного завершения соединения с одной стороны, вторая сторона может находиться в состоянии полуоткрытого соединения неопределённо долгое время. |
||
Второе значение термина, связанное с уязвимостью SYN-флуд, относится к полуоткрытому соединению на стороне сервера после второго этапа «трёхкратного рукопожатия». В этом случае сервер, в ожидании ответа от клиента, не освобождает выделенные ресурсы, что может привести к их исчерпанию. |
Второе значение термина, связанное с уязвимостью SYN-флуд, относится к полуоткрытому соединению на стороне сервера после второго этапа «трёхкратного рукопожатия». В этом случае сервер, в ожидании ответа от клиента, не освобождает выделенные ресурсы, что может привести к их исчерпанию. |
||
Строка 21: | Строка 21: | ||
Третье значение термина относится к клиенту, выполнившему первый этап «трёхкратного рукопожатия» и ожидающего ответа сервера. В нормальных условиях это не приводит ни к каким отрицательным последствиям, так как, не получив ответа за определённое время, клиент закрывает соединение и освобождает ресурсы. |
Третье значение термина относится к клиенту, выполнившему первый этап «трёхкратного рукопожатия» и ожидающего ответа сервера. В нормальных условиях это не приводит ни к каким отрицательным последствиям, так как, не получив ответа за определённое время, клиент закрывает соединение и освобождает ресурсы. |
||
==MS Windows и клиенты пиринговых сетей== |
== MS Windows и клиенты пиринговых сетей == |
||
Проблемы, связанные с полуоткрытыми соединениями второго типа (на стороне сервера), имеют примерно одинаковые методы решения на [[UNIX|Unix-подобных]] и [[Microsoft Windows|Windows]] платформах<ref> |
Проблемы, связанные с полуоткрытыми соединениями второго типа (на стороне сервера), имеют примерно одинаковые методы решения на [[UNIX|Unix-подобных]] и [[Microsoft Windows|Windows]] платформах<ref>{{Cite web |url=http://www.securitylab.ru/analytics/216320.php |title=Укрепление стека TCP/IP для защиты от SYN атак |access-date=2009-02-19 |archive-date=2013-05-23 |archive-url=https://web.archive.org/web/20130523140120/http://www.securitylab.ru/analytics/216320.php |deadlink=no }}</ref>. |
||
Однако [[Microsoft]] ввела ограничение и на полуоткрытые соединения третьего типа (на клиенте). Это было сделано для минимизации возможности проведения атак на другие компьютеры с заражённой [[Вредоносная программа|вредоносным программным обеспечением]] системы. В результате такого ограничения появились проблемы в работе программного обеспечения, интенсивно работающего с [[Интернет]]ом, в частности, клиентов [[одноранговая сеть|пиринговых сетей]]. Увеличить предел полуоткрытых соединений можно отредактировав системный файл <tt>tcpip.sys</tt> при помощи специальной утилиты, что |
Однако [[Microsoft]] ввела ограничение и на полуоткрытые соединения третьего типа (на клиенте). Это было сделано для минимизации возможности проведения атак на другие компьютеры с заражённой [[Вредоносная программа|вредоносным программным обеспечением]] системы. В результате такого ограничения появились проблемы в работе программного обеспечения, интенсивно работающего с [[Интернет]]ом, в частности, клиентов [[одноранговая сеть|пиринговых сетей]]. Увеличить предел полуоткрытых соединений можно, отредактировав системный файл <tt>tcpip.sys</tt> при помощи специальной утилиты, что запрещено лицензионным соглашением. Начиная с Windows Server 2008 SP2 и Windows Vista SP2 это ограничение было снято, однако может быть включено путём внесения специальной записи в реестр<ref>[http://support.microsoft.com/default.aspx/kb/969710/ Статья в базе знаний Microsoft о том, как включить ограничение на число полуоткрытых соединений в ОС Windows Vista и Windows Server 2008 с Service Pack 2 (на английском языке)]</ref>. |
||
==Примечания== |
== Примечания == |
||
{{примечания}} |
|||
{{reflist}} |
|||
==Ссылки== |
== Ссылки == |
||
* [http://ru.wikibooks.org/wiki/Event_4226 Event 4226] |
* [http://ru.wikibooks.org/wiki/Event_4226 Event 4226] |
||
* [ |
* [[:en:SYN cookie|SYN_cookie]]{{ref-en}} |
||
* [http://half-open.com/home_ru.htm Windows Half-open limit fix (patch)] |
* [http://half-open.com/home_ru.htm Windows Half-open limit fix (patch)] |
||
* [https://web.archive.org/web/20160304045613/http://xruna.net/2011/06/27/yvelichit_chislo/ Увеличить число полуоткрытых соединений (half-open connection) в Linux] |
|||
[[Категория:TCP/IP]] |
[[Категория:TCP/IP]] |
||
[[en:TCP half-open]] |
Текущая версия от 11:25, 11 мая 2024
Полуоткрытое TCP/IP соединение (англ. half-open connection) — TCP-соединение, в котором состояния двух его участников становятся несинхронизированными вследствие сбоёв или преднамеренных действий одного из участников.
Первоначально термин относился к нарушению синхронизации уже установленного соединения (см. состояния сеанса TCP). Но затем более распространённым стало применение термина полуоткрытое TCP/IP соединение к случаю нарушения нормальной последовательности установления соединения. Это произошло после описания CERT Coordination Center[1] уязвимости реализации протокола, которую можно использовать для проведения атаки типа SYN-флуд (англ. SYN-flood).
Технические подробности
[править | править код]Перед началом передачи каких-либо данных, согласно протоколу TCP, стороны должны установить соединение. Соединение устанавливается в три этапа (процесс «трёхкратного рукопожатия» TCP).
- Клиент (сторона — инициатор соединения) посылает пакет с установленным флагом SYN (synchronize).
- В ответ на него сервер должен ответить комбинацией флагов SYN+ACK (acknowledges).
- После этого клиент должен ответить пакетом с флагом ACK, после чего соединение считается установленным.
После установки соединения обе стороны переходят в состояние ESTABLISHED. После завершения обмена и при необходимости разорвать соединение, происходит такой же многоступенчатый процесс завершения соединения.
Нарушение синхронизации может произойти на любом из описанных шагов.
Три значения термина
[править | править код]Полуоткрытое соединение, описанное в стандарте TCP[2], возникает в результате ошибки одного из участников соединения или внезапного прекращения его (участника) работы без уведомления второй стороны. Если обе стороны находились в состоянии установленного соединения, то, после аварийного завершения соединения с одной стороны, вторая сторона может находиться в состоянии полуоткрытого соединения неопределённо долгое время.
Второе значение термина, связанное с уязвимостью SYN-флуд, относится к полуоткрытому соединению на стороне сервера после второго этапа «трёхкратного рукопожатия». В этом случае сервер, в ожидании ответа от клиента, не освобождает выделенные ресурсы, что может привести к их исчерпанию.
Третье значение термина относится к клиенту, выполнившему первый этап «трёхкратного рукопожатия» и ожидающего ответа сервера. В нормальных условиях это не приводит ни к каким отрицательным последствиям, так как, не получив ответа за определённое время, клиент закрывает соединение и освобождает ресурсы.
MS Windows и клиенты пиринговых сетей
[править | править код]Проблемы, связанные с полуоткрытыми соединениями второго типа (на стороне сервера), имеют примерно одинаковые методы решения на Unix-подобных и Windows платформах[3].
Однако Microsoft ввела ограничение и на полуоткрытые соединения третьего типа (на клиенте). Это было сделано для минимизации возможности проведения атак на другие компьютеры с заражённой вредоносным программным обеспечением системы. В результате такого ограничения появились проблемы в работе программного обеспечения, интенсивно работающего с Интернетом, в частности, клиентов пиринговых сетей. Увеличить предел полуоткрытых соединений можно, отредактировав системный файл tcpip.sys при помощи специальной утилиты, что запрещено лицензионным соглашением. Начиная с Windows Server 2008 SP2 и Windows Vista SP2 это ограничение было снято, однако может быть включено путём внесения специальной записи в реестр[4].
Примечания
[править | править код]- ↑ TCP SYN Flooding and IP Spoofing Attacks Архивная копия от 14 сентября 2008 на Wayback Machine (англ.)
- ↑ RFC793 Архивная копия от 2 марта 2009 на Wayback Machine (англ.)
- ↑ Укрепление стека TCP/IP для защиты от SYN атак . Дата обращения: 19 февраля 2009. Архивировано 23 мая 2013 года.
- ↑ Статья в базе знаний Microsoft о том, как включить ограничение на число полуоткрытых соединений в ОС Windows Vista и Windows Server 2008 с Service Pack 2 (на английском языке)