Как расширить диапазон привилегированных портов за 1024?

Номера портов до 1024 зарезервированы для суперпользователя, поэтому обычный пользователь не может связываться с портами в диапазоне.

И диапазон портов, которым система будет назначать случайные запросы на привязку, может быть установлен в /proc/sys/net/ipv4/ip_local_port_range Так что я могу зарезервировать диапазон от автоматического распределения. Но как мне запретить доступ непривилегированным пользователям к ряду портов?

Например, я хотел бы, чтобы порты 16000-17000 использовались ТОЛЬКО суперпользователем. Или просто увеличив стандартное значение от 0-1024 до 0-17000 или произвольное число, которое я выбрал. Как я могу сделать это?

1 ответ

В исходном коде вашего ядра найдите include/net/sock.h

Внутри sock.h найди:

#define PROT_SOCK   1024

Все, что меньше номера в этой строке, будет защищенным портом.

Если вы также хотите получить нижнюю границу, вы, вероятно, можете найти, куда ее добавить, посмотрев, где используется PROT_SOCK и добавив дополнительную проверку. Быстрый прогон с помощью grep показывает, что проверка выполняется по протоколу, поэтому вам нужно изменить тест для ipv4, ipv6 и всего, что вы используете по отдельности.

Это должно быть относительно просто, но вам придется поддерживать его вручную, когда вы захотите обновить ядро.

Другие вопросы по тегам