Чому перші 1024 порти обмежені лише для кореневого користувача?


53

Це більше простою цікавості, ніж будь-що інше. Мій друг запитав мене: "Який діапазон портів може використовувати тільки root під Linux?" Я сказав йому, що 0-1024 були обмежені. Тоді він запитав мене, чому це так, і ... я розгубився. Поняття ні про що.

Чи є причина, чому ці порти обмежені, а 1025-65535 - ні?

Більшість основних мережевих служб (HTTP, FTP, SSH, Telnet, HTTPS, POP, SMTP тощо) знаходяться в цьому діапазоні, тому можливі відповіді, про які я думав:

  • Користувач, який не довіряє, може запускати програму, яка слухала на цих портах інформацію про вхід.
  • Недовірений користувач може запустити несанкціоновану серверну програму.

Хтось може пролити тут світло?

Відповіді:


52

Припустимо, ви обмінюєтесь інформацією з комп'ютером на порту <1024, і ви знаєте, що на комп'ютері працює якийсь варіант Unix. Тоді ви знаєте, що служба, що працює на цьому порту, затверджена системним адміністратором: вона працює як root, або, принаймні, повинна бути запущена як root.

У широкому, дикому світі Інтернету це не має значення. Більшість серверів управляються тими ж людьми, що і сервіси, що працюють на них; ви б не довіряли кореням більше, ніж іншим користувачам.

Для багатокористувацьких машин, особливо в локальній мережі, це може мати значення. Наприклад, за часів до цивільної криптографії популярним методом запуску команд оболонок на іншій машині був rsh( r emote sh ell); ви можете використовувати автентифікацію пароля, або ви можете автентифікувати лише підтвердивши, що ви користувач X на машині A (коли машина B знає, що X @ A може увійти як X @ B без пароля). Як це довести? rshКлієнт УИП корінь, і використовує номер порту <1024, так що сервер знає , що клієнт він розмовляє є надійним і не буде лежати , як , до якого користувач на А посилається на нього. Аналогічно NFS був розроблений таким чином, щоб він був прозорим щодо користувачів та дозволів, тому загальною конфігурацією було те, що в локальній мережі кожна машина використовує одну і ту ж базу даних користувачів, а користувач N на A, що встановлює файлові системи з сервера B, отримає дозволи користувача N на B. Знову факт, що клієнт NFS надходить від номера порту <1024, підтверджує, що корінь у A перевіряв клієнта NFS, який повинен переконатися, що якщо він передає запит, який вважається користувачем N, тоді цей запит справді є від користувача N.

Несанкціоновані користувачі, які не мають змоги запускати сервери на низьких портах, є ще однією перевагою, але не основною. Ще в ті часи підробка не була досить новинкою, і користувачі, які працюють підробляючими серверами, швидко будуть скасовані пильними адміністраторами.


2
Отже, начебто автентифікація бідолахи? Чи має ця конвенція реальні переваги в сучасних * nix-подібних операційних системах?
Ендрю Ламберт

2
@Amazed: Світ Unix є консервативним, тому питання, яке потрібно задати: "Чи це викликає якісь реальні проблеми?" (і на це слід відповісти, що кожен сервер, який варто виконати, має аргумент командного рядка, щоб змінити порт).
dmckee

5
@dmckee також можна стверджувати, що така конструкція призводить до того, що більше серверів працює як root, навіть якщо вони мають можливість працювати на альтернативних портах.
Ендрю Ламберт

5
@Amazed Це ще може бути корисним сьогодні в локальних мережах. Я не думаю, що це призводить до того, що більше серверів працює як root, сервіси можуть прив’язувати порт, а потім скидати привілеї або використовувати можливості, якщо вони доступні, або адміністратор може перенаправляти порт на конфігурацію брандмауера. Я не думаю, що це було б застосовано, якби Unix був розроблений сьогодні, але це не зашкодить.
Жил 'ТАК - перестань бути злим'

1
Ця нісенітниця повинна давно піти з ядра. Жоден номер порту не повинен мати особливого значення. "Міркування" за цим дизайном давно застаріли (я думаю, що це було суперечливим навіть на час проектування). Але що гірше, ніж думка про будь-які спеціальні діапазони чисел, які є "надійними" - це наслідки. Веб-сервери потрібно виконувати як корінь просто для розміщення веб-сторінок. Єдиного подвигу і сервера з діркою немає. А для чого? Для застарілого дизайну, який ніколи навіть трохи не працював.
masi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.