Как расширить диапазон привилегированных портов за 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 и всего, что вы используете по отдельности.
Это должно быть относительно просто, но вам придется поддерживать его вручную, когда вы захотите обновить ядро.