Сетевые порты для клиентов и поток почты в exchange
Содержание:
- Почему важно знать, какие порты открыты на компьютере?
- Номер порта
- Преимущества установки порт-системы в Бельгии:
- В каких случаях нужны порт-системы?
- Как запретить systemd-resolved использовать порт 53 в Ubuntu
- Сбор статистики с VPN-сервера
- FreeRADIUS сервер для мониторинга подключений к серверу и сбора статистики
- История
- Сетевые порты, необходимые для клиентов и служб
- IPsec
- WireGuard
- Структура
- Выводы
Почему важно знать, какие порты открыты на компьютере?
Открытый порт на вашем компьютере (если не настроен файервол для запрета входящих соединений) означает, что к вашему компьютеру можно подключиться из вне.
Если с вашим компьютером случалась такая неприятность как заражение трояном, бэкдором (вирусы, которые позволяют злоумышленнику удалённо подключаться к вашему компьютеру и управлять им), то обычно такой бэкдор открывает порт и прослушивает сеть, в ожидании входящего соединения (хотя могут быть варианты).
Ещё один пример, когда нужно определить, какая именно служба прослушивает порт: вы пытаетесь установить сетевую службу (веб-сервер Apache или СУБД MySQL), а они не запускаются, так как какая-то другая служба уже заняла их порт, который они используют по умолчанию. В этом случае нужно найти эту службу и отключить её или настроить на работу с другим портом.
Но, как и во многих IT задачах (да и вообще во многих профессиональных сферах), получить данные это только самое начало. Главное — это правильно их истолковать и понять.
Поэтому в этой статье мы рассмотрим, как узнать, какие порты открыты, как проверить, какая служба прослушивает определённый порт, а также научимся правильно понимать вывод команды NETSTAT и аналогичных.
Номер порта
Номер порта представляет собой 16-битовое целое число без знака, таким образом, в диапазоне от 0 до 65535. Для TCP номер порта 0 зарезервирован и не может использоваться, в то время как для UDP исходный порт является необязательным, а нулевое значение означает отсутствие порта. Процесс связывает свои входные и выходные каналы , через интернет сокет , который представляет собой тип дескриптора файла , связанный с транспортным протоколом , в IP — адрес и номер порта. Это называется привязкой . Сокет используется процессом для отправки и получения данных по сети. Сетевое программное обеспечение операционной системы имеет задачу передачи исходящих данных со всех портов приложений в сеть и пересылки поступающих сетевых пакетов процессам путем сопоставления IP-адреса пакета и номера порта с сокетом. Для TCP только один процесс может связываться с определенной комбинацией IP-адреса и порта. Общие сбои приложений, иногда называемые конфликтами портов , возникают, когда несколько программ пытаются использовать один и тот же номер порта на одном IP-адресе с одним и тем же протоколом.
Приложения, реализующие общие службы, часто используют специально зарезервированные хорошо известные номера портов для приема запросов на обслуживание от клиентов. Этот процесс известен как прослушивание и включает в себя получение запроса на хорошо известном порте, потенциально устанавливающем индивидуальный диалог сервер-клиент с использованием этого прослушивающего порта. Другие клиенты могут одновременно подключаться к тому же порту прослушивания; это работает, потому что TCP-соединение идентифицируется кортежем, состоящим из локального адреса, локального порта, удаленного адреса и удаленного порта. Общеизвестные порты определены соглашением, контролируемым Управлением по присвоению номеров Интернета (IANA). Во многих операционных системах приложениям требуются специальные привилегии для привязки к этим портам, поскольку они часто считаются критически важными для работы IP-сетей. И наоборот, клиентская сторона соединения обычно использует высокий номер порта, выделенный для краткосрочного использования, поэтому он называется временным портом .
Общие номера портов
IANA отвечает за глобальную координацию корня DNS, IP-адресации и других ресурсов протокола. Это включает регистрацию часто используемых номеров портов для известных интернет-сервисов.
Номера портов делятся на три диапазона: известные порты , зарегистрированные порты и динамические или частные порты .
Хорошо известные порты (также известные как системные порты ) пронумерованы от 0 до 1023. Требования для новых назначений в этом диапазоне строже, чем для других регистраций.
Число | Назначение |
---|---|
20 | Передача данных по протоколу передачи файлов (FTP) |
21 год | Протокол передачи файлов (FTP) Командное управление |
22 | Secure Shell (SSH) Безопасный вход |
23 |
Служба удаленного входа Telnet , незашифрованные текстовые сообщения |
25 |
Доставка электронной почты по протоколу SMTP |
53 |
Служба системы доменных имен (DNS) |
67, 68 | Протокол динамической конфигурации хоста (DHCP) |
80 | Протокол передачи гипертекста (HTTP), используемый во всемирной паутине |
110 | Почтовый протокол (POP3) |
119 | Протокол передачи сетевых новостей (NNTP) |
123 | Сетевой протокол времени (NTP) |
143 | Протокол доступа к сообщениям в Интернете (IMAP) Управление цифровой почтой |
161 | Простой протокол управления сетью (SNMP) |
194 | Интернет-чат (IRC) |
443 | HTTP Secure (HTTPS) HTTP через TLS / SSL |
Зарегистрированы порты с 1024 по 49151. IANA ведет официальный список хорошо известных и зарегистрированных диапазонов.
Динамические или частные порты — это порты с 49152 по 65535. Обычно этот диапазон используется для эфемерных портов .
Преимущества установки порт-системы в Бельгии:
- Для установки порт-системы используется в основном яремный, а не подключичный доступ, что снижает риск развития самого опасного осложнения – пневмоторакса.
- Ультразвуковая навигация и рентгенологический контроль повышает точность установки и снижает риск осложнений.
- Использование лучших порт-систем от европейских производителей – надежных и безопасных.
- Индивидуальный подбор порт-системы, в зависимости от возраста, типа конституции, методов лечения рака.
- Надежная установка, обеспечивающая функционирование системы в течение многих месяцев или лет: практически нулевой риск миграции катетера в вены меньшего калибра или перетирания катетера между первым ребром и ключицей.
В каких случаях нужны порт-системы?
Методы лечения онкологических заболеваний совершенствуются, и главным образом это происходит за счет повышения эффективности медикаментозной терапии. Пятилетняя выживаемость больных раком уже превысила 80%. Но лечение часто продолжается месяцами и годами. Препараты приходится вводить внутривенно, что ухудшает переносимость лечения и повышает вероятность осложнений со стороны периферических вен.
Иногда препараты вводятся относительно быстро: инфузия продолжается лишь 15 минут. Другие лекарства приходится вводить 1-3 суток подряд, непрерывно. В 70% случаев лечение длительное и интенсивное. Чем дольше проходит терапия, тем выше риск осложнений, связанных с повреждением сосудистой стенки:
- флеботромбоз;
- некроз (отмирание) тканей под влиянием препаратов;
- воспалительные осложнения из-за контаминации бактериальной микрофлорой.
Проблема в том, что периферические вены слишком тонкие, а скорость кровотока в них низкая. Поэтому использование периферического доступа недопустимо при длительной химиотерапии.
В онкологии врачи используют центральный венозный доступ. Они устанавливают катетер в одну из центральных вен, обычно в подключичную. Тогда постоянные уколы в локтевую вену для введения лекарств или забора крови для анализов больше не нужны.
Но во время катетеризации и эксплуатации катетера у некоторых пациентов развиваются осложнения:
- катетерная инфекция (локальное воспаление тканей в области введения катетера);
- сепсис (инфекционное воспаление всего организма);
- воздушная эмболия (закупорка сосудов пузырьками воздуха).
Ухудшается и переносимость лечения. Пациент неизбежно испытывает дискомфорт и затруднения, выполняя гигиенические процедуры.
К тому же, центральный катетер не может находиться в вене слишком долго. После прекращения курса химиотерапии его извлекают, но уже через несколько недель устанавливают повторно для продолжения лечения. Химиотерапия проводится циклами, и обычно пациент проходит не менее 5-6 таких циклов. Каждая установка катетера дополнительно повышает риск осложнений.
Установка порт-систем для химиотерапии решает эти проблемы. Пациенты не страдают от осложнений и не испытывают дискомфорта
Системы не ограничивают двигательную активность и не могут быть самостоятельно извлечены, что особенно важно в детской онкологии. Пациенты после установки могут вести привычный образ жизни, заниматься спортом и посещать бассейн
Как запретить systemd-resolved использовать порт 53 в Ubuntu
Стоит отметить, что вы можете освободить порт 53, просто раскомментировав DNSStubListener и установив для него значение no в /etc/systemd/resolved.conf. Остальные шаги предназначены для включения DNS-сервера – без него ваша система не сможет разрешать какие-либо доменные имена, поэтому вы не сможете посещать веб-сайты в веб-браузере и т. д.
1. Отредактируйте /etc/systemd/resolved.conf с помощью текстового редактора (как root), например, откройте его с помощью текстового редактора консоли Nano:
sudo nano /etc/systemd/resolved.conf
И раскомментируйте (удалите #с начала строки) строку DNS= и строку DNSStubListener=. Затем измените значение DNS= в этом файле на DNS-сервер, который вы хотите использовать (например, 127.0.0.1 для использования локального прокси, 1.1.1.1 для использования Cloudflare DNS и т. д.), А также измените значение DNSStubListener= с yes на no.
Вот как должен выглядеть файл после того, как вы внесли эти изменения (мы используем 1.1.1.1 в качестве DNS-сервера здесь, то есть Cloudflare DNS):
DNS=1.1.1.1 #FallbackDNS= #Domains= #LLMNR=no #MulticastDNS=no #DNSSEC=no #DNSOverTLS=no #Cache=no DNSStubListener=no #ReadEtcHosts=yes
Чтобы сохранить файл с помощью текстового редактора Nano, нажмите Ctrl + x, затем введите y и нажмите Enter.
2. Создание символической ссылки для /run/systemd/resolve/resolv.conf на /etc/resolv.conf в качестве пункта назначения:
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Здесь параметр -s предназначен для создания символической, а не жесткой ссылки и -f предназначен для удаления любых существующих файлов назначения (поэтому он удаляется, /etc/resolv.conf если она существует).
3. Перезагрузите вашу систему.
Порт 53 теперь должен быть свободен в вашей системе Ubuntu, и вы больше не должны получать таких ошибок, как “listen tcp 127.0.0.1:53: bind: address already in use”.
Вы можете проверить, используется ли порт 53 или нет, запустив его sudo lsof -i :53- если порт 53 не используется, эта команда не должна показывать никаких выходных данных.
Сбор статистики с VPN-сервера
Нам ещё было очень интересно, сколько пользователей подключено в данный момент к серверу, какой объём трафика потребляется и раздаётся на сервере. Изначально хотели сделать всё максимально просто и забирать статистику через команды ipsec, но столкнулись с тем, что мы можем терять данные из-за того, что пользователь может отключиться или подключиться в период таймаута между командами для сбора статистики.
Испробовав разные варианты, решили остановиться и разобраться, как настроить FreeRadius сервер, который как раз и будет получать данные от ipsec и отправлять данные со статистикой нам.
FreeRadius сервер можно использовать и для авторизации пользователей, но мы остановились только на сборе статистики.
Для включения radius необходимо добавить следующее в конфигурацию ipsec:
FreeRADIUS сервер для мониторинга подключений к серверу и сбора статистики
Чтобы наши данные уходили на наш endpoint, включаем модуль rest. Для этого в файле /etc/raddb/mods-enabled/rest настраиваем блок accounting, получится что-то вроде:
Здесь мы можем как угодно комбинировать данные и отправлять на наш сервер.
При настройке VPN сервера столкнулись с некоторыми нюансами, вроде таких, что устройства Apple не могут подключить к серверу, если на нём будет самоподписанный сертификат, всё заработало только после того, как сертификат начали генерировать через Let’s Encrypt.
Какие недостатки присутствуют в нашей сборке?
- Если radius сервер не отвечает, то пользователь не сможет подключиться к VPN.
- Если закончится срок действия сертификата, пользователь не сможет авторизоваться на VPN-сервере.
Что можно было бы добавить в следующих версиях VPN-сервера?
- Авторизацию пользователей вынести в radius.
- Добавить автоматическое обновление сертификата.
- Провести рефакторинг скриптов, а также файлов конфигураций.
- Добавить health-check для впн сервера.
Что же у нас получилось в итоге?
История
Концепция номеров портов была создана первыми разработчиками ARPANET в неформальном сотрудничестве авторов программного обеспечения и системных администраторов. Термин номер порта в то время еще не использовался. Этому предшествовало использование термина « номер сокета» на ранних этапах развития сети. Номер сокета для удаленного хоста был 40-битным. Первые 32 бита были похожи на сегодняшний адрес IPv4, но в то время наиболее значимые 8 бит были номером хоста. Наименее значимая часть номера сокета (биты с 33 по 40) представляла собой объект, называемый другим восьмибитным числом , сокращенно AEN. Сегодня сетевой сокет относится к родственной, но отличной концепции, а именно к внутреннему адресу конечной точки, используемому только внутри узла.
26 марта 1972 года Винт Серф и Джон Постел призвали к документированию текущих обычаев и созданию каталога номеров сокетов в RFC 322. Сетевых администраторов попросили отправить записку или позвонить по телефону с описанием функций и номеров сокетов. сетевых сервисных программ на каждом ХОСТЕ ». Этот каталог был впоследствии опубликован как RFC 433 в декабре 1972 года и включал список хостов и их номера портов, а также соответствующие функции, используемые на каждом хосте в сети. Эта первая функция реестра служила в первую очередь для документирования использования и указывала, что использование номера порта конфликтует между некоторыми хостами для « полезных общедоступных служб ». Документ обещал разрешение конфликтов на основе стандарта , который Постел опубликовавшие в мае 1972 года в RFC 349, в котором он впервые предложил официальные поручения номеров портов , сетевые службы и предложил специальную административную функцию, которую он назвал царь , чтобы вести реестр.
256 значений AEN были разделены на следующие диапазоны:
Диапазон номеров портов | Назначение |
---|---|
От 0 до 63 | общесетевые стандартные функции |
С 64 по 127 | специфичные для хоста функции |
128–239 | зарезервировано для использования в будущем |
240–255 | любая экспериментальная функция |
Служба Telnet получила первое официальное присвоение значения 1. В деталях, первый набор назначений был следующим:
Номер порта | Назначение |
---|---|
1 | Telnet |
3 | Передача файлов |
5 | Удаленный ввод вакансий |
7 | Эхо |
9 | Отказаться |
В ранней ARPANET AEN также назывался именем сокета и использовался с протоколом начального соединения (ICP), компонентом программы управления сетью (NCP). NCP был предшественником современных Интернет-протоколов. Сегодня название терминологической службы по-прежнему тесно связано с номерами портов, первые из которых представляют собой текстовые строки, используемые в некоторых сетевых функциях для представления числового номера порта.
Сетевые порты, необходимые для клиентов и служб
Сетевые порты, которые необходимы почтовым клиентам для доступа к почтовым ящикам и другим службам в организации Exchange, описаны на следующей диаграмме и в таблице.
Примечания.
-
Предназначением для этих клиентов и служб являются службы клиентского доступа на сервере почтовых ящиков. В Exchange 2016 и Exchange 2019 года службы клиентского доступа (frontend) и backend устанавливаются вместе на одном сервере почтовых ящиков. Дополнительные сведения см. в
-
Хотя на схеме показаны клиенты и службы из Интернета, концепции одинаковы для внутренних клиентов (например, клиенты в лесу учетных записей, Exchange серверов в лесу ресурсов). Кроме того, в таблице нет столбца источника, так как источником может быть любое расположение, внешнее для организации Exchange (например, в Интернете или лесу учетных записей).
-
Пограничные транспортные серверы не участвуют в сетевом трафике, связанном с этими клиентами и службами.
Назначение | Порты | Примечания |
---|---|---|
Зашифрованные веб-подключения используются следующими клиентами и службами. • Служба автооткрытия • Exchange ActiveSync • Exchange веб-служб (EWS) • Распространение автономной адресной книги (OAB) • Outlook в любом месте (RPC над HTTP) • Outlook MAPI над HTTP • Outlook в Интернете (ранее известный как Outlook Web App) | 443/TCP (HTTPS) | Дополнительные сведения об этих клиентах и службах см. в следующих статьях. • Служба автооткрытия в Exchange Server • Exchange ActiveSync • ссылка на EWS для Exchange • Автономные адресные книги в Exchange Server • Outlook в любом месте • MAPI над HTTP в Exchange Server |
Незашифрованные веб-подключения используются следующими клиентами и службами. • Публикация календаря в Интернете • Outlook в Интернете (перенаправление на 443/TCP) • Автоматическое открытие (откат, когда не доступен 443/TCP) | 80/TCP (HTTP) | По возможности рекомендуется использовать зашифрованное веб-подключения на TCP-порте 443 для защиты учетных и других данных. Однако вы можете обнаружить, что некоторые службы должны быть настроены для использования незашифрованных веб-подключений на 80/TCP к службам клиентского доступа на серверах почтовых ящиков. Дополнительные сведения об этих клиентах и службах см. в следующих статьях. • Включить публикацию интернет-календаря • Служба автооткрытия в Exchange Server |
Клиенты IMAP4 | 143/TCP (IMAP), 993/TCP (безопасный IMAP) | По умолчанию IMAP4 отключен. Дополнительные сведения см. в pop3 и IMAP4 в Exchange Server. Служба IMAP4 в службах клиентского доступа на прокси-серверах почтовых ящиков подключена к службе backend IMAP4 на сервере почтовых ящиков. |
Клиенты POP3 | 110/TCP (POP3), 995/TCP (безопасный POP3) | По умолчанию протокол POP3 отключен. Дополнительные сведения см. в pop3 и IMAP4 в Exchange Server. Служба POP3 в службах клиентского доступа на прокси-серверах почтовых ящиков подключена к службе backend POP3 на сервере почтовых ящиков. |
Клиенты SMTP (с проверкой подлинности) | 587/TCP (SMTP с проверкой подлинности) | Соединиттель по умолчанию получил имя «Client Frontend» в передней транспортной службе прослушивает проверку подлинности клиентских представлений SMTP в <Server name> порту 587. Примечание. Если у вас есть клиенты электронной почты, которые могут отправлять только проверку подлинности SMTP-почты в порту 25, вы можете изменить привязки сетевого адаптера соединиттеля получения клиента, чтобы также прослушивать проверку подлинности сообщений электронной почты SMTP в порту 25. |
IPsec
Internet Protocol Security (IPsec) — это набор протоколов для обеспечения защиты данных, передаваемых по IP-сети. В отличие от SSL, который работает на прикладном уровне, IPsec работает на сетевом уровне и может использоваться нативно со многими операционными системами, что позволяет использовать его без сторонних приложений (в отличие от OpenVPN).
IPsec стал очень популярным протоколом для использования в паре с L2TP или IKEv2, о чем мы поговорим ниже.
IPsec шифрует весь IP-пакет, используя:
- Authentication Header (AH), который ставит цифровую подпись на каждом пакете;
- Encapsulating Security Protocol (ESP), который обеспечивает конфиденциальность, целостность и аутентификацию пакета при передаче.
Обсуждение IPsec было бы неполным без упоминания утечки презентации Агентства Национальной Безопасности США, в которой обсуждаются протоколы IPsec (L2TP и IKE). Трудно прийти к однозначным выводам на основании расплывчатых ссылок в этой презентации, но если модель угроз для вашей системы включает целевое наблюдение со стороны любопытных зарубежных коллег, это повод рассмотреть другие варианты. И все же протоколы IPsec еще считаются безопасными, если они реализованы должным образом.
Теперь мы рассмотрим, как IPsec используется в паре с L2TP и IKEv2.
L2TP/IPsec
Layer 2 Tunneling Protocol (L2TP) был впервые предложен в 1999 году в качестве обновления протоколов L2F (Cisco) и PPTP (Microsoft). Поскольку L2TP сам по себе не обеспечивает шифрование или аутентификацию, часто с ним используется IPsec. L2TP в паре с IPsec поддерживается многими операционными системами, стандартизирован в RFC 3193.
L2TP/IPsec считается безопасным и не имеет серьезных выявленных проблем (гораздо безопаснее, чем PPTP). L2TP/IPsec может использовать шифрование 3DES или AES, хотя, учитывая, что 3DES в настоящее время считается слабым шифром, он используется редко.
У протокола L2TP иногда возникают проблемы из-за использования по умолчанию UDP-порта 500, который, как известно, блокируется некоторыми брандмауэрами.
Протокол L2TP/IPsec позволяет обеспечить высокую безопасность передаваемых данных, прост в настройке и поддерживается всеми современными операционными системами. Однако L2TP/IPsec инкапсулирует передаваемые данные дважды, что делает его менее эффективным и более медленным, чем другие VPN-протоколы.
IKEv2/IPsec
Internet Key Exchange version 2 (IKEv2) является протоколом IPsec, используемым для выполнения взаимной аутентификации, создания и обслуживания Security Associations (SA), стандартизован в RFC 7296. Так же защищен IPsec, как и L2TP, что может говорить об их одинаковом уровне безопасности. Хотя IKEv2 был разработан Microsoft совместно с Cisco, существуют реализации протокола с открытым исходным кодом (например, OpenIKEv2, Openswan и strongSwan).
Благодаря поддержке Mobility and Multi-homing Protocol (MOBIKE) IKEv2 очень устойчив к смене сетей. Это делает IKEv2 отличным выбором для пользователей смартфонов, которые регулярно переключаются между домашним Wi-Fi и мобильным соединением или перемещаются между точками доступа.
IKEv2/IPsec может использовать ряд различных криптографических алгоритмов, включая AES, Blowfish и Camellia, в том числе с 256-битными ключами.
IKEv2 поддерживает Perfect Forward Secrecy.
Во многих случаях IKEv2 быстрее OpenVPN, так как он менее ресурсоемкий. С точки зрения производительности IKEv2 может быть лучшим вариантом для мобильных пользователей, потому как он хорошо переустанавливает соединения. IKEv2 нативно поддерживается на Windows 7+, Mac OS 10.11+, iOS, а также на некоторых Android-устройствах.
WireGuard
Самый новый и неизведанный протокол VPN — WireGuard. Позиционируется разработчиками как замена IPsec и OpenVPN для большинства случаев их использования, будучи при этом более безопасным, более производительным и простым в использовании.
Все IP-пакеты, приходящие на WireGuard интерфейс, инкапсулируются в UDP и безопасно доставляются другим пирам. WireGuard использует современную криптографию:
- Curve25519 для обмена ключами,
- ChaCha20 для шифрования,
- Poly1305 для аутентификации данных,
- SipHash для ключей хеш-таблицы,
- BLAKE2 для хеширования.
Код WireGuard выглядит куда скромнее и проще, чем код OpenVPN, в результате чего его проще исследовать на уязвимости (4 тысячи строк кода против нескольких сотен тысяч). Также многие отмечают, что его гораздо легче развернуть и настроить.
Результаты тестов производительности можно увидеть на официальном сайте (как не сложно догадаться, они хороши). Стоит отметить, что лучшие результаты WireGuard покажет на Linux системах, т.к. там он реализован в виде модуля ядра.
Совсем недавно был представлен WireGuard 1.0.0, который отметил собой поставку компонентов WireGuard в основном составе ядра Linux 5.6. Включенный в состав ядра Linux код прошел дополнительный аудит безопасности, выполненный независимой фирмой, который не выявил каких-либо проблем. Для многих это отличные новости, но сможет ли WireGuard стать достойной заменой IPsec и OpenVPN покажет время и независимые исследования безопасности.
Мы постарались охарактеризовать самые популярные VPN протоколы, надеемся, обзор был для вас полезен. В качестве резюме приводим сравнительную таблицу, где еще раз обозначены важные, на наш взгляд, показатели.
PPTP | SSTP | L2TP/IPsec | IKEv2/IPsec | OpenVPN | WireGuard | |
---|---|---|---|---|---|---|
Компания-разработчик | Microsoft | Microsoft | L2TP — совместная разработка Cisco и Microsoft, IPsec — The Internet Engineering Task Force | IKEv2 — совместная разработка Cisco и Microsoft, IPsec — The Internet Engineering Task Force | OpenVPN Technologies | Jason A. Donenfeld |
Лицензия | Proprietary | Proprietary | Proprietary | Proprietary, но существуют реализации протокола с открытым исходным кодом | GNU GPL | GNU GPL |
Развертывание | Windows, macOS, iOS, некоторое время GNU/Linux. Работает “из коробки”, не требуя установки дополнительного ПО | Windows. Работает “из коробки”, не требуя установки дополнительного ПО | Windows,Mac OS X, Linux, iOS, Android. Многие ОС (включая Windows 2000/XP +, Mac OS 10.3+) имеют встроенную поддержку, нет необходимости ставить дополнительное ПО | Windows 7+, macOS 10.11+ и большинство мобильных ОС имеют встроенную поддержку | Windows, Mac OS, GNU/Linux, Apple iOS, Android и маршрутизаторы. Необходима установка специализированного ПО, поддерживающего работу с данным протоколом | Windows, Mac OS, GNU/Linux, Apple iOS, Android. Установить сам WireGuard, а затем настроить по руководству |
Шифрование | Использует Microsoft Point-to-Point Encryption (MPPE), который реализует RSA RC4 с максимум 128-битными сеансовыми ключами | SSL (шифруются все части, кроме TCP- и SSL-заголовков) | 3DES или AES | Реализует большое количество криптографических алгоритмов, включая AES, Blowfish, Camellia | Использует библиотеку OpenSSL (реализует большинство популярных криптографических стандартов) | Обмен ключами по 1-RTT, Curve25519 для ECDH, RFC7539 для ChaCha20 и Poly1305 для аутентификационного шифрования, и BLAKE2s для хеширования |
Порты | TCP-порт 1723 | TCP-порт 443 | UDP-порт 500 для первонач. обмена ключами и UDP-порт 1701 для начальной конфигурации L2TP, UDP-порт 5500 для обхода NAT | UDP-порт 500 для первоначального обмена ключами, а UDP-порт 4500 — для обхода NAT | Любой UDP- или TCP-порт | Любой UDP-порт |
Недостатки безопасности | Обладает серьезными уязвимостями. MSCHAP-v2 уязвим для атаки по словарю, а алгоритм RC4 подвергается атаке Bit-flipping | Серьезных недостатков безопасности не было выявлено | 3DES уязвим для Meet-in-the-middle и Sweet32, но AES не имеет известных уязвимостей. Однако есть мнение, что стандарт IPsec скомпрометирован АНБ США | Не удалось найти информации об имеющихся недостатках безопасности, кроме инцидента с утечкой докладов АНБ касательно IPsec | Серьезных недостатков безопасности не было выявлено | Серьезных недостатков безопасности не было выявлено |
Структура
TCP-порты закодированы в заголовке пакета транспортного протокола, и они легко могут быть интерпретированы не только передающим и принимающим компьютерами, но и другими компонентами сетевой инфраструктуры. В частности межсетевые экраны, как правило, настроены различать пакеты в зависимости от их источника или номеров порта назначения. Перенаправление является классическим примером этому.
Практика попыток подключения к диапазону портов последовательно на одном компьютере известна как их сканирование. Это, как правило, связано либо с попытками злонамеренного сбоя, либо же сетевые администраторы ищут возможные уязвимости, чтобы помочь предотвратить такие нападения.
Действия, направленные на то, как открыть TCP-порт, часто контролируются и регистрируются с помощью компьютеров. Такая техника использует ряд запасных соединений, для того чтобы обеспечить бесперебойное соединение с сервером.
Выводы
- Как реально работает сеть, и что TCP можно повторить поверх UDP и сделать лучше.
- Что TCP не так плох, если его правильно настроить, но он реально сдался и больше уже почти не развивается.
- Не верьте хейтерам UDP, которые говорят, что в user space работать не будет. Все эти проблемы можно решить. Пробуйте — это ближайшее будущее.
- Если не верите, то сеть можно и нужно трогать руками. Я показывал, как почти все можно проверить.
Настраивайте протокол (TCP, UDP — неважно) под ситуацию (профиль сети + профиль нагрузки).
Используйте рецепты TCP, которые я вам рассказал: TFO, send/recv buffer, TLS1.3, CC…
Делайте свои UDP-протоколы, если есть ресурсы.
Если сделали свой UDP, проверьте UDP check list, что вы сделали все, что надо. Забудете какую-нибудь ерунду типа pacing, не будет работать.
Полезные ссылки
- Миллион видеозвонков в сутки или «Позвони маме!».
- Пишем свой протокол поверх UDP.
- Подкаст про сетевую оптимизацию.
- Увеличение скорости передачи данных в плохих сетях.