Порты транспортного протокола

Вы когда-нибудь замечали, что компьютеры имеют слишком много портов? Мы собираемся добавить в список порты TCP и UDP. Порты транспортных протоколов позволяют одному серверу предоставлять различные сетевые услуги посредством единственного транспортного протокола, обеспечивая возможность организации множественных соединений между компьютерами.

Когда запускается программа-сервер, она подключается к одному или более логических портов. Логический номер порта – это просто число от 1 до 65535. Например, почтовые серверы принимают соединения на порту TCP с номером 25. Каждый пакет TCP или UDP, поступающий в систему, имеет поле, которое содержит номер порта доставки. Каждый входящий запрос помечен номером порта, куда он должен быть доставлен. Если входящий запрос приходит на порт с номером 25, он передается почтовому серверу, ожидающему запросы на соединения на этом порте. Это означает, что разные порты могут обслуживаться разными программами, клиенты могут взаимодействовать с серверами на разных портах, и никто не путается, кроме системного администратора.

Файл /etc/services содержит список номеров портов и сервисов, которые с ними ассоциированы. Почти любой сервис можно запускать на произвольном порту, но таким образом можно сбить с толку другие хосты Интернета, которые пытаются соединиться с вашей системой. Если кто-то пытается отправить электронную почту, его программа автоматически пытается соединиться с портом 25 вашей системы. Если служба электронной почты работает на порту с номером 77, а вебсервер на порту 25, вы никогда не сможете получить свою электронную почту, а ваш веб-сервер начнет получать спам. Формат файла очень прост – он содержит всего пять колонок:

Oqotd ©17/©tcp ©quote ©#Quote of the Day

Эта запись описывает службу qotd О, которая работает на порту с номером 17 © протокола TCP ©. Эта служба известна также под названием quote ©. В последней колонке содержится комментарий ©, более подробно описывающий службу, в частности здесь говорится, что название qotd происходит от английского «Quote of the Day» (цитата дня). Службам присваиваются одни и те же номера портов для протоколов TCP и UDP, даже несмотря на то, что обычно они могут использовать только один протокол, например, со службой qotd связаны порты 17/tcp и17/udp.

Многие программы читают /etc/services, чтобы выяснить, к какому порту осуществить привязку (bind to), а клиентские программы читают /etc/services, чтобы выяснить, к какому порту обращаться для установления соединения. Чтобы вынудить сервер использовать другой порт, надо отредактировать этот файл и сообщить серверу, какой порт следует использовать.

Подобно всем другим стандартам, содержимое файла /etc/services не является догмой. Служба sshd обычно занимает порт 22/tcp, однако по разным причинам я запустил ее на портах 23 (telnet), 80 (HTTP) и 443 (HTTPS). Подобные изменения зависят от программы, задействованной для предоставления того или иного сервиса. Примеры использования такого подхода мы будем рассматривать в главе 15.

Зарезервированные порты

Порты протоколов TCP и UDP с номерами 1024 и ниже называются зарезервированными портами. Они зарезервированы для ключевых служб инфраструктуры Интернета, таких как DNS, SSH, HTTP, LDAP и других, которые должны предоставляться только системой или сетевым администратором. Только программы, обладающие привилегиями суперпользователя (root-level), могут привязываться к зарезервированным портам (портам с низкими номерами). Пользователь может, например, запустить игровой сервер на одном из портов с высокими номерами, если политика безопасности системы допускает это, но назначение компьютера игровым сервером отличается от настройки официального веб-сервера, доступного всем желающим! Привязка портов к базовым протоколам словно высечена на каменных скрижалях.

Просмотреть и изменить зарезервированные порты можно с помощью параметров sysctl net. inet. ip. portrange. reservedhigh и net. inet. ip. por- trange. reservedlow.

Многие часто думают, что если бы можно было запретить правило «привязки только при наличии прав суперпользователя», это повысило бы степень защищенности системы – в конце концов, если приложение будет работать не с правами root, а с правами обычного пользователя, разве это не повысило бы безопасность системы? В действительности большинство программ, использующих зарезервированные порты, запускаются с привилегиями пользователя root, выполняют привязку к порту, а затем понижают свои привилегии до уровня специально созданного пользователя, который обладает еще меньшими привилегиями, чем обычный пользователь. Эти программы разрабатывались так, чтобы запускаться с привилегиями суперпользователя, и часто ведут себя иначе, когда их запускают с привилегиями обычного пользователя. Некоторые программы, такие как веб-сервер Apache, написаны так, чтобы сразу запускаться с привилегиями обычного пользователя, но другие не предусматривают такой возможности.

Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. – Пер. с англ. – СПб.: Символ- Плюс, 2009. – 864 е., ил.

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий