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

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

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

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

3
задан 3 December 2013 в 15:26

1 ответ

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

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

#define PROT_SOCK   1024

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

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

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

0
ответ дан 3 December 2013 в 15:26

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

Похожие вопросы: