Tcp null что это
Устранение неполадок подключения TCP/IP
Вы можете встретить ошибки подключения в конце приложения или ошибках времени. Наиболее распространенные сценарии:
Если вы подозреваете, что проблема находится в сети, вы собираете сетевой след. Затем трассировка сети будет отфильтрованной. При устранении ошибок подключения может возникнуть сброс TCP в сетевом захвате, который может указывать на проблему сети.
TCP определяется как протокол, ориентированный на подключение и надежный. Одним из способов обеспечения надежности TCP является процесс рукопожатия. Создание сеанса TCP начнется с трехначерного рукопожатия, а затем с передачи данных, а затем с четырехнабного закрытия. Четырех способ закрытия, в котором отправитель и приемник соглашаются на закрытие сеанса, является изящным закрытием. После закрытия в 4-м режиме на сервере будет 4 минуты времени (по умолчанию), в течение которых будут обрабатываться все ожидающих пакеты в сети, это TIME_WAIT состояние. После завершения TIME_WAIT состояния все ресурсы, выделенные для этого подключения, будут освобождены.
Сброс TCP — это резкое закрытие сеанса; это приводит к немедленному отпусту ресурсов, выделенных для подключения, и стирается вся другая информация о подключении.
Сброс TCP идентифицирован флагом RESET в заглавной загонке 1 TCP.
Трассировка сети в источнике и пункте назначения позволяет определить поток трафика и узнать, в какой момент наблюдается сбой.
В следующих разделах описаны некоторые сценарии, когда вы увидите сброс.
Капли пакетов
Когда один одноранговой TCP отправляет пакеты TCP, для которых нет ответа, полученного с другого конца, одноранговая служба TCP в конечном итоге перенаправляет данные, а когда ответа не получено, сеанс завершится отправкой сброса ACK (это означает, что приложение признает все данные, которые обмениваются до сих пор, но из-за сброса пакета подключение закрывается).
Одновременные сетевые трассировки источника и назначения помогут вам проверить это поведение, если на стороне источника вы увидите, что пакеты перенаправлены, а в пункте назначения ни один из этих пакетов не будет замечен. Это означает, что сетевое устройство между источником и пунктом назначения сбрасывает пакеты.
Если начальное рукопожатие TCP не удается из-за перепадов пакетов, вы увидите, что пакет TCP SYN переназначяется только три раза.
Источник, подключающийся к порту 445:
Сторона назначения: применяя тот же фильтр, пакеты не видятся.
Для остальных данных TCP повторно передает пакеты пять раз.
След сторон 192.168.1.62:
Боковой след назначения 192.168.1.2:
Вы не увидите ни одного из вышеуказанных пакетов. Вовлеките свою команду в сеть, чтобы исследовать различные хмеля и узнать, являются ли какие-либо из них потенциально причиной падений в сети.
Если вы видите, что пакеты SYN достигают пункта назначения, но пункт назначения по-прежнему не отвечает, убедитесь, что порт, к который вы пытаетесь подключиться, находится в состоянии прослушивания. (Выход Netstat поможет). Если порт прослушивается, а ответа нет, может произойть падение WFP.
Неправильный параметр в загонке TCP
Вы видите такое поведение, когда пакеты изменяются в сети средними устройствами, а TCP на приемном конце не может принять пакет, например измененный номер последовательности, или пакеты, повторяющиеся средним устройством путем изменения номера последовательности. Опять же, одновременный сетевой след в источнике и пункте назначения сможет сообщить, изменен ли какой-либо из заглавных пунктов TCP. Начните с сравнения трассировки источника и трассировки назначения, вы сможете заметить, есть ли изменения в самом пакете или новые пакеты достигают пункта назначения от имени источника.
В этом случае вам снова потребуется помощь сетевой группы, чтобы определить любое устройство, которое изменит пакеты или переиграет пакеты в пункт назначения. Наиболее распространенными являются устройства RiverBed или ускорители WAN.
Сброс сторон приложения
Если вы определили, что сбросы не вызваны переназначением или неправильным параметром или пакетами, которые будут изменены с помощью сетевого следа, сузить его до сброса уровня приложения.
Сброс приложения — это те, где вы видите флаг подтверждения, установленный вместе с 1 флагом сброса. Это означает, что сервер признает получение пакета, но по каким-либо причинам он не принимает подключение. Это когда приложение, которое получило пакет, не понравилось то, что он получил.
На приведенных ниже скриншотах видно, что пакеты, которые видны в источнике и пункте назначения, одинаковы без каких-либо изменений или капель, но вы видите явный сброс, отправленный пунктом назначения в источник.
Сторона источника
На трассировку в сторону назначения
Вы также видите пакет флага ACK+RST в случае, если syn пакета создания TCP отправляется. Пакет TCP SYN отправляется, когда клиент хочет подключиться к определенному порту, но если пункт назначения/сервера по какой-либо причине не хочет принимать пакет, он отправляет пакет ACK+RST.
Приложение, вызываее сброс (идентифицированное по номерам портов), должно быть исследовано, чтобы понять, что вызывает его для сброса подключения.
Вышеуказанная информация о сбросах с точки зрения TCP, а не UDP. UDP — это протокол без подключения, и пакеты отправляются ненадежно. При использовании UDP в качестве транспортного протокола повторной передачи или сброса не будет. Однако UDP использует ICMP в качестве протокола отчетов об ошибках. Когда пакет UDP отправляется в порт, а пункт назначения не указан в списке, вы увидите недостижимый пункт назначения, отправляемый из хоста назначения ICMP: сообщение порт недостижимое сразу после пакета UDP.
Во время устранения неполадок с подключением можно также увидеть в сетевом следе, на который машина получает пакеты, но не реагирует. В таких случаях может произойть снижение уровня сервера. Чтобы понять, сбрасывает ли локальный брандмауэр пакет, введи аудит брандмауэра на компьютере.
Затем можно просмотреть журналы событий безопасности, чтобы просмотреть падение пакета на определенном порт-IP и связанный с ним фильтровый ID.
Tcp null что это
When scanning systems compliant with this RFC text, any packet not containing SYN, RST, or ACK bits will result in a returned RST if the port is closed and no response at all if the port is open. As long as none of those three bits are included, any combination of the other three (FIN, PSH, and URG) are OK. Nmap exploits this with three scan types:
Does not set any bits (TCP flag header is 0)
Sets just the TCP FIN bit.
Sets the FIN, PSH, and URG flags, lighting the packet up like a Christmas tree.
These three scan types are exactly the same in behavior except for the TCP flags set in probe packets. Responses are treated as shown in Table 5.4.
Table 5.4. How Nmap interprets responses to a NULL, FIN, or Xmas scan probe
Probe Response | Assigned State |
---|---|
No response received (even after retransmissions) | open|filtered |
TCP RST packet | closed |
ICMP unreachable error (type 3, code 1, 2, 3, 9, 10, or 13) | filtered |
Another advantage is that these scan types are a little more stealthy than even a SYN scan. Don’t count on this though—most modern IDS products can be configured to detect them.
Example 5.10. Example FIN and Xmas scans
Demonstrating the full, firewall-bypassing power of these scans requires a rather lame target firewall configuration. Unfortunately, those are easy to find. Example 5.11 shows a SYN scan of a SCO/Caldera machine named Docsrv.
Example 5.11. SYN scan of Docsrv
This example looks OK. Only two ports are open and the rest (except for 113) are filtered. With a modern stateful firewall, a FIN scan should not produce any extra information. Yet Ereet tries it anyway, obtaining the output in Example 5.12.
Example 5.12. FIN scan of Docsrv
Wow! That is a lot of apparently open ports. Most of them are probably open, because having just these 39 filtered and the other 961 closed (sending a RST packet) would be unusual. Yet it is still possible that some or all are filtered instead of open. FIN scan cannot determine for sure. We will revisit this case and learn more about Docsrv later in this chapter.
PortSentry для обнаружения нападения, часть первая, методы работы
Portsentry от Psionic Technologies – один из трех компонентов системы обнаружения вторжения TriSentry. В этой статье мы подробно опишем теоретические и технические методы работы Portsentry. Во второй части мы обсудим установку и конфигурирование PortSentry на конкретных примерах.
Port Sentry – основная теория
PortSentry контролирует TCP и UDP просмотры и способен обнаруживать большинство методов срытого сканирования инструментами, типа Nmap. Вот некоторые из обнаруживаемых методов:
Если PortSentry не может идентифицировать просмотр, как один из вышеупомянутых, он использует заданный по умолчанию набор правил, которые будут идентифицировать такое сканирование. Большинство других средств обнаружения сканирования, в отличие от PortSentry, будут фактически игнорировать «неопознанные» просмотры.
Одним из препятствий, с которым сталкивается PortSentry, это определение, является ли пакет частью сканирования, или он составляет часть нормального трафика для данного порта. PortSentry использует для этого два метода: сначала он игнорирует порты, которые находятся в использовании (связанны с соответствующей службой). Во вторых, пользователь определяет список портов, контролируемых PortSentry, в файле конфигурации. Если порт в списке файла конфигурации совпадает с используемым, то такой порт игнорируется PortSentry.
Одна из прекрасных особенностей PortSentry – это интеллектуальный контроль портов. Для проколов типа FTP, в которых клиент открывает порты в эфемерном диапазоне (TCP порты выше 1024) и сервер устанавливает обратное подключение с хостом, PortSentry может исследовать поступающее подключение, и если оно предназначено для одного из эфемерных портов, оно будет проигнорировано. Как только подключение завершено, PortSentry продолжит следить за таким портом в обычном режиме.
Проверка просмотров TCP или UDP портов – не единственные методы, которые используются для обнаружения просмотра. Если длина IP заголовка меньше 5 (минимальная длина, указанная в RFC 791), PortSentry регистрирует такое сообщение. Точно так же, если установлены любые IP опции, PortSentry также обращает на них внимание. Хотя может показаться проблематично использование опций типа source-routing, record-route или timestamp, они могут использоваться нападающим для сбора разведывательной информации.
Внутренняя структура
В простейшем случае, PortSentry контролирует порты на наличие потенциально подозрительных пакетов, реагируя, если просмотр был обнаружен. Чтобы это осуществить, PortSentry должен удерживать состояние слежки за всеми IP адресами, которые пытаются установить подключение с хостом.
Метод, которым PortSentry реагирует на просмотр, изменяется, в зависимости от настроек пользователя в файле конфигурации. PortSentry обеспечивает три пути предотвращения дальнейшего просмотра, которые детально будут рассмотрены ниже. Все три метода блокирования хоста имеют свои риски и выгоды.
Методы блокирования
Наконец, правило TCP упаковщика для IP атакующего может быть добавлено в системный /etc/hosts.deny файл. Он не блокирует просмотр, а просто предотвращает соединение от сканирующего хоста до сервисов, защищенных TCP упаковщиком на просматриваемом хосте. Этот метод слаб, по сравнению с двумя предыдущими; однако, в этом случае затруднительно вызвать отказ в обслуживании против сканируемой системы.
Может показаться, что управление таблицами маршрутизации или использование правил межсетевой защиты для блокировки сканирования, может легко использоваться для блокировки всего трафика на сканируемом хосте, однако это не так. Да, есть опасности в использовании этих методов; однако, должным образом конфигурируя PortSentry и контролируя его журналы регистрации, этот риск можно значительно уменьшить. Вот как авторы PortSentry заявляют в документации:
«It is our experience though that spoofed scans are not an issue and we recommend people use auto-blocking knowing that %99.9 of the time it will block a scan.
Again though, we strongly feel that the benefits of auto-blocking hosts *far outweighs* the limited risk you take by having auto-blocking turned on.» (Craig Rowland, Portsentry-2.0b1)”
Как только просмотр обнаружен, PortSentry продолжает сохранять состояние на предварительно блокированных хостах, записывая IP адрес блокируемого хоста в файл регистрации PortSentry в формате : file (где
— один из TCP или UDP). При обнаружении просмотра PortSentry сначала исследует этот файл и только затем использует собственный внутренний массив состояния. Если хост был предварительно блокирован, то PortSentry проигнорирует такое сканирование. Блокированный файл каждый раз обновляется при перезапуске PortSentry. PortSentry также записывает блокированные хосты в portsentry.history файл. Этот файл не перезаписывается при перезапуске, и хранит истории всех блокированных хостов.
Заключение
В этой статье мы рассмотрели теоретические и технические принципы работы PortSentry. Этот полезный инструмент может использоваться для дополнения других мер защиты, чтобы предотвратить сканирование хоста и использования полученной информации для организации дальнейших нападений. В следующей статье мы рассмотрим процедуру инсталляции и конфигурирования PortSentry.
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Транспортные протоколы TCP и UDP
Оглавление: Компьютерные сети
6. Канальный уровень передачи данных
7. Маршрутизация данных
8. Служебный протокол ICMP
10. Настройка сетевых подключений в командной строке Linux
11. Определение проблем работы сети
12. Туннелизация
Сходства и различия TCP и UDP
В первой части «Как работают компьютерные сети» мы узнали, что для передачи информации используются транспортные протоколы TCP и UDP. В физическом смысле эти протоколы представляют собой сетевые пакеты. Каждый сетевой пакет передаёт небольшой фрагмент информации, поэтому данные разбиваются на много пакетов.
Каждый сетевой пакет обоих протоколов TCP и UDP состоит из двух частей:
В заголовке содержится «служебная информация» (можно сказать, что это метаданные) — порты пункта назначения и исходного узла, номер пакета в потоке, тип пакета и так далее.
Различие между протоколами TCP и UDP в том, что протокол TCP имеет механизм контроля полноты переданных данных — если какой-либо пакет был потерян или повреждён, то предусмотрен механизм для проверки этого факта и повторной отправки пакета. В протоколе UDP такого механизма нет — то есть если потерян пакет протокола UDP, то узел, который его отправил, никогда об этом не узнает, а принимающая сторона никогда не узнает, что ей был отправлен потерянный пакет UDP.
Может возникнуть вопрос, зачем вообще нужен такой ненадёжный протокол UDP, если есть надёжный протокол TCP? Платой за надёжность протокола TCP является то, что в бухгалтерии называется «накладные расходы» (overheads) — суть в том, что для обеспечения механизма контроля доставки пакетов в протоколе TCP отправляется много данных, которые не содержат полезной информации, а служат только для установки и контроля соединения. К примеру, чтобы отправить хотя бы одни пакет с полезными данными в TCP нужно завершить трёхступенчатое рукопожатие, которое заключается в отправке 1 особого пакета от источника к пункту назначения, получения 1 пакета о возможности установить соединения и отправки ещё 1 специального пакета от источника с подтверждением, что всё готово к отправке — за это время с помощью протокола UDP можно было бы отправить уже несколько пакетов с полезными данными.
Детальное понимание TCP и UDP имеет значение при:
К примеру, понимая механизм TCP подключения, можно настроить файлервол (iptables) так, что будут запрещены все новые подключения с сохранением существующих, либо запретить любые входящие подключения с полным разрешением исходящих, понимать и предотвращать ряд DoS атак, понимать SYN и другие виды сканирований — почему они возможны и каков их механизм и т.д..
Протокол TCP
Transmission Control Protocol (TCP, протокол управления передачей) — один из основных протоколов передачи данных интернета, предназначен для управления передачей данных.
Из-за перегрузки сети, балансировки нагрузки трафика или непредсказуемого поведения сети, IP-пакеты могут быть потеряны, дублированы или доставлены не в неправильном порядке. TCP обнаруживает эти проблемы, запрашивает повторную передачу потерянных данных, переупорядочивает неупорядоченные данные и даже помогает минимизировать перегрузку сети, чтобы уменьшить возникновение других проблем. Если данные все ещё остаются недоставленными, источник уведомляется об этом сбое. После того, как получатель TCP собрал последовательность первоначально переданных октетов, он передаёт их принимающему приложению. Таким образом, TCP абстрагирует связь приложения от базовых сетевых деталей.
TCP широко используется во многих интернет-приложениях, включая World Wide Web (WWW), электронную почту, протокол передачи файлов, Secure Shell, одноранговый обмен файлами и потоковое мультимедиа.
Протокол TCP оптимизирован для точной доставки, а не для своевременной доставки, и может вызывать относительно длительные задержки (порядка секунд) при ожидании сообщений, вышедших из строя или повторных передач потерянных сообщений. Поэтому он не особенно подходит для приложений реального времени, таких как передача голоса по IP.
Итак, механизм TCP предоставляет поток данных с предварительной установкой соединения, осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при получении двух копий одного пакета, гарантируя тем самым, в отличие от UDP, целостность передаваемых данных и уведомление отправителя о результатах передачи.
Алгоритм работы TCP следующий:
В общем, используя два простых механизма — контрольную сумму и последовательную нумерацию каждого пакета — удаётся достичь надёжности передачи данных и возможности организовать их в правильную последовательность независимо от того, в каком порядке они доставлены.
Всё это возможно с помощью заголовков TCP пакета.
Что такое 1 соединение TCP
Прежде чем изучить структуру заголовка TCP пакета, разберёмся, что такое 1 TCP соединение — это поможет яснее понимать, что именно мы анализируем в Wireshark и сколько TCP соединений нам нужно искать. К примеру, сколько TCP соединений задействуется при открытии 1 страницы веб-сайта? Типичный веб-сайт состоит из 1 страницы HTML кода, нескольких страниц каскадных таблиц стилей CSS и JavaScript файлов, а также пары десятков файлов изображений. Так вот, для получения каждого из этих файлов создаётся новое TCP соединеие. Для каждого из этих соединений выполняется трёхэтапное рукопожатие — это к вопросу о том, какие издержки, «накладные расходы» несёт в себе TCP.
То есть при открытии страницы веб-сайта браузер делает первое TCP подключение и получает исходный код веб страницы. В данном коде браузер находит ссылки на файлы стилей, скриптов, картинок — для каждого из этого файлов запускается новое TCP соединение.
Поэтому при анализе трафика в Wireshark при открытии даже одной веб страницы вы увидите множество начатых и завершённых TCP соединений.
Заголовок TCP
Сдвиг | Октет | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Октет | Биты | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 0 | Порт источника, Source port | Порт назначения, Destination port | ||||||||||||||||||||||||||||||
4 | 32 | Порядковый номер, Sequence Number (SN) | |||||||||||||||||||||||||||||||
8 | 64 | Номер подтверждения, Acknowledgment Number (ACK SN) (если установлен ACK) | |||||||||||||||||||||||||||||||
12 | 96 | Длина заголовка, (Data offset) | Зарезервировано 0 0 0 |
Состояния сеанса TCP | |
---|---|
CLOSED | Начальное состояние узла. Фактически фиктивное |
LISTEN | Сервер ожидает запросов установления соединения от клиента |
SYN-SENT | Клиент отправил запрос серверу на установление соединения и ожидает ответа |
SYN-RECEIVED | Сервер получил запрос на соединение, отправил ответный запрос и ожидает подтверждения |
ESTABLISHED | Соединение установлено, идёт передача данных |
FIN-WAIT-1 | Одна из сторон (назовём её узел-1) завершает соединение, отправив сегмент с флагом FIN |
CLOSE-WAIT | Другая сторона (узел-2) переходит в это состояние, отправив, в свою очередь сегмент ACK и продолжает одностороннюю передачу |
FIN-WAIT-2 | Узел-1 получает ACK, продолжает чтение и ждёт получения сегмента с флагом FIN |
LAST-ACK | Узел-2 заканчивает передачу и отправляет сегмент с флагом FIN |
TIME-WAIT | Узел-1 получил сегмент с флагом FIN, отправил сегмент с флагом ACK и ждёт 2*MSL секунд, перед окончательным закрытием соединения |
CLOSING | Обе стороны инициировали закрытие соединения одновременно: после отправки сегмента с флагом FIN узел-1 также получает сегмент FIN, отправляет ACK и находится в ожидании сегмента ACK (подтверждения на свой запрос о разъединении) |
Описание данных состояний позволяет лучше понимать информацию, которую показывают программы о состоянии сети, такие как netstat и ss (смотрите также «Как проверить открытые порты на своём компьютере. Что означают 0.0.0.0, :*, [::], 127.0.0.1. Как понять вывод NETSTAT»).
Фильтры Wireshark для TCP
Чтобы увидеть только трафик TCP:
Показать трафик, источником или портом назначения которого является определённый порт, например 8080:
Показать трафик, источником которого является порт 80:
Показать трафик, который отправляется службе, прослушивающей порт 80:
Показать TCP пакеты с включённым флагом SYN:
Показать TCP пакеты с включённым флагом SYN и отключённым флагом ACK:
Аналогично и для других флагов:
Также можно использовать синтаксис вида tcp.flags == 0x0XX, например:
Длина заголовка (смещение данных):
Пакеты с установленными зарезервированными битами:
Вычесленный размер окна:
Фактор масштабирования размера окна:
tcp.window_size_value — это необработанное значение размера окна, считываемое непосредственно из заголовка TCP, тогда как tcp.window_size — это вычисленный размер окна, который основан на том, применимо ли масштабирование окна или нет. Если масштабирование окна не используется или коэффициент масштабирования равен 1 или неизвестно, применимо ли масштабирование окна или нет, потому что трёхэтапное рукопожатие TCP не было захвачено, тогда эти два значения будут одинаковыми. С помощью tcp.window_size_scalefactor вы можете определить, какое из этих условий применимо — если его значение равно -1, то оно неизвестно, если его значение равно -2, тогда масштабирование окна не используется, а все остальные значения представляют фактический размер фактора масштабирования окна.
Чтобы показать пакеты, содержащие какую либо строку, например, строку hackware:
Следовать потоку TCP с номером X:
Фильтровать по номеру потока:
Показать повторные отправки пакетов. Помогает прослеживать замедление производительности приложений и потери пакетов:
Этот фильтр выведен проблемные пакеты (потерянные сегменты, повторную отправку и другие. Этот фильтр проходят пакеты TCP Keep-Alive, но они не являются показателем проблем.
Фильтры для оценки качества сетевого подключения.
Следующие характеристики относятся к TCP фреймам. Причём они не основываются на заголовках фрейма — рассматриваемые характеристики (пропуск данных, дубли) присвоены программой Wireshark исходя из анализа.
Фильтр выводит информацию о фреймах с флагом ACK, которые являются дублями. Большое количество таких фреймов может говорить о проблемах связи:
Фильтр показа фреймов для которых не захвачен предыдущий сегмент:
Это нормально в начале захвата данных — поскольку информация перехватывается не с самого начала сессии.
Для показа фреймов, которые являются ретрансмиссией (отправляются повторно):
Вывод фреймов, которые получены не в правильном порядке:
Виды сканирований Nmap
Мы рассмотрели механизм рукопожатия TCP, напомним его структуру:
Знаменитый сканер портов Nmap по умолчанию выполняет сканирования с использованием полуотрытых соединений, или его ещё называют SYN сканированием. На самом деле, это не что иное, как отправленный пакет с включённым флагом SYN — то есть Nmap инициирует рукопожатие TCP. Если в ответ приходит пакет с флагами SYN-ACK (то есть удалённый хост отправляет свою часть рукопожатия), то это означает, что порт открыт. Если удалённый хост отвечает пакетом с флагом RST-ACK, то это означает, что порт закрыт.
Такой метод, с одной стороны, является универсальным — любой открытый порт обязательно должен ответить пакетом с флагами SYN-ACK, поскольку это стандарт транспортного протокола TCP. Но при этом Nmap не завершает рукопожатие, то есть не создаётся полноценное соединение и приложение, которое прослушивает просканированный порт, никогда не узнает об этом неудачном TCP рукопожатии, и этот факт не отобразиться в журналах этого приложения.
Пример сканирования портов:
На следующем скриншоте мы можем видеть отправленные и полученные пакеты:
Первая группа пакетов (выделена прямоугольником) — пинг хоста, чтобы определить, доступен ли он. Также на этапе доступности хоста делается запрос к портам 80 и 443 (хотя порт 443 не указан для сканирования), видимо, также для подтверждения того, что хост онлайн.
Если от порта получен пакет SYN-ACK (сервер готов к установке соединения), то Nmap отвечает пакетом с флагом RST для обрыва начатого рукопожатия.
Вторая группа — они отмечены серым и зелёным — это непосредственно сканирование портов — это пакеты с флагом SYN. Серым отмечены те, которые прислали ответ RST-ACK (порт закрыт), а зелёным т е, которые прислали ответ SYN-ACK (порт открыт).
Пакеты RST-ACK, а также пакеты RST (от Nmap) помечены красным.
Как можно увидеть, техника очень простая и использует самые базовые возможности трансопртного протокола TCP.
Кроме этого метода, Nmap поддерживает ещё несколько типов сканирования:
Если вы хотите узнать об этих опциях и типах сканирвоания подробнее, то рекомендуется изучить их на справочной странице Nmap: https://kali.tools/?p=1317
Теперь, когда понятна суть сканирований портов, можно предложить меры по защите сервера от сканирований. Если ваш сервер предназначен принимать входящие соединения (например, это веб сервер с SSH), то на 100% защититься от сканирований портов нельзя, поскольку для полуоткрытых соединений используются «легальные» TCP пакеты с флагом SYN, которые являются первой частью рукопожатий. Тем не менее в iptables или fail2ban можно настроить примерно такое правило: «если от одного удалённого хоста поступило более 10 SYN пакетов за указанный промежуток времени, то отклонять его последующие попытки подключения». Это затруднит или даже сделает невозможным массовое сканирование портов на вашем сервере.
Если у вас настроен контроль доступа по IP, то можно запретить SYN пакеты от любого хоста, кроме разрешённых IP, — в этом случае посторонние не только не смогут подключаться, но и не смогут узнать, что порт на самом деле открыт.
Примеры iptables
[БУДЕТ ДОБАВЛЕНО ПОЗЖЕ]
Протокол UDP
Если вы смогли разобраться с TCP и его заголовками, то с UDP вам будет совсем просто.
Протокол пользовательских дейтаграмм (UDP) — это очень простой протокол. Он был разработан для обеспечения очень простой передачи данных без какого-либо обнаружения ошибок. Это так называемый stateless (то есть «без состояния») протокол, это отличает его от протокола TCP, в котором есть понятие соединения (stateful), включающее в себя создания подключения (трёхэтапное рукопожатие) и в котором передача данных выполняется только в рамках данного подключения. Соответственно, для протокола UDP не предусмотрены различные состояния клиента и сервера.
Однако он очень хорошо подходит для приложений типа запрос/ответ, таких как, например, DNS и т. д., поскольку мы знаем, что если мы не получим ответ от DNS-сервера, запрос где-то был потерян. Иногда также стоить использовать протокол UDP вместо TCP, например, когда мы хотим только обнаружение ошибок/потерь, но не заботимся о последовательности пакетов. Это устраняет некоторые издержки, связанные с протоколом TCP.
Природа UDP как протокола без сохранения состояния также полезна для серверов, отвечающих на небольшие запросы от огромного числа клиентов, например DNS и потоковые мультимедийные приложения вроде IPTV, Voice over IP, протоколы туннелирования IP и многие онлайн-игры.
Что такое 1 соединение UDP
Для UDP пакетов понятие «соединение» неправильное, поскольку отправляется один пакет без установки соединения. Если требуется передать поток данных, то отправляется множество UDP пакетов, которые хотя и могут иметь одну общую задачу, с точки зрения транспортного протокола каждый из них является независимым.
В ответ также может прийти один или несколько пакетов UDP. Они приходят на тот же порт, с которого был отправлен исходный UDP пакет — это позволяет определить, что данная датаграмма является ответной на отправленную ранее.
Тем не менее при открытом UDP порте состояние сервера становится LISTEN (сервер ожидает запросов установления соединения от клиента). Также UDP соединение может иметь статус UCONN или ESTAB.
Как можно увидеть, UDP пакет отправлен с порта 42044:
Ответный UDP пакет также пришёл на порт 42044:
Если сравнить с TCP, то минимальное количество пакетов для отправки запроса и получения информации — 10, а для UDP минимальное количество пакетов для отправки запроса и получения информации — 2.
Заголовок UDP
Можно сказать, что заголовок UDP представляет собой очень упрощённый заголовок TCP. Он содержит порты назначения, порты источника, длину заголовка и контрольную сумму, как показано на рисунке ниже.
Как и с протоколом TCP — для сервера обычно используется один из стандартных портов (например, порт 53 для DNS серверов), а порт источника выбирается произвольно для каждого соединения, обычно это номера портов с большим номером (десятки тысяч).
Поле, задающее длину всей датаграммы (заголовка и данных) в байтах. Минимальная длина равна длине заголовка — 8 байт. Теоретически, максимальный размер поля — 65535 байт для UDP-датаграммы (8 байт на заголовок и 65527 на данные). Фактический предел для длины данных при использовании IPv4 — 65507 (помимо 8 байт на UDP-заголовок требуется ещё 20 на IP-заголовок).
Поле контрольной суммы используется для проверки заголовка и данных на ошибки. Если сумма не сгенерирована передатчиком, то поле заполняется нулями. Поле не является обязательным для IPv4.
Фильтры Wireshark для UDP
Чтобы увидеть только трафик UDP:
Для UDP не используются флаги. Для этого протокола можно только указать порт.
Показать трафик, источником которого является порт 53:
Показать трафик, который отправляется службе, прослушивающей порт 53:
UDP пакет, в котором встречается определённая строка, например, строка hackware:
Порт назначения ИЛИ исходный порт:
Время между пакетами (для выявления проблем сети):
Номер потока (запрос-ответ):
Сравнение UDP и TCP
TCP — ориентированный на соединение протокол, что означает необходимость «рукопожатия» для установки соединения между двумя хостами. Как только соединение установлено, пользователи могут отправлять данные в обоих направлениях.
UDP — более простой, основанный на сообщениях протокол без установления соединения. Протоколы такого типа не устанавливают выделенного соединения между двумя хостами. Связь достигается путём передачи информации в одном направлении от источника к получателю без проверки готовности или состояния получателя. В приложениях для голосовой связи через интернет-протокол (Voice over IP, TCP/IP) UDP имеет преимущество над TCP, в котором любое «рукопожатие» помешало бы хорошей голосовой связи. В VoIP считается, что конечные пользователи в реальном времени предоставят любое необходимое подтверждение о получении сообщения.
- справочник кодов оквэд 2021 с расшифровкой по видам деятельности для ип
- Smm специалист кто это и чем занимается простыми словами