Как открыть в Linux порт ниже 1024 без полномочий root

Иногда требуется запустить сетевой сервис, использующий порт ниже 1024. Например, обычный web-сервер использует по умолчанию 80-й порт. Но для этого программа потребует полномочия root. А, как вы понимаете, смотрящий в интернет порт с полномочиями суперпользователя — не самая лучшая идея.

Порт ниже 1024 в Linux

В Linux существует прекрасная команда setcap, наделяющая программы дополнительными полномочиями. В частности, разрешающая открывать любые порты непривилегированным пользователям.

Допустим, нам нужно запустить HTTP-сервер на Питоне. Для этого нужен 80 порт. Но не под рутом же его запускать! Берем непривилегированного поциента с оболочкой по умолчанию /bin/false и тюнингуем немного интерпретатор Питона:

$ sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/python2.7

Проверяем:

$ getcap /usr/bin/python2.7
/usr/bin/python2.7 = cap_net_bind_service+eip

Запускаем web-сервер на 80 порту не под рутом. О чудо! Всё работает!

$ /usr/bin/python2.7 -m SimpleHTTPServer 80

По окончанию экспериментов не забываем отозвать права:

$ sudo setcap -r /usr/bin/python2.7

Я пользователь Минта и ничего не понял

Открытые порты — любимое лакомство хакеров. Хакеры сканируют диапазоны IP-адресов на открытые порты (nmap), определяют вид сервиса и применяют эксплоиты. С какими привилегиями работает программа, открывшая порт, такие привилегии и получит хакер. Поэтому хорошей практикой является создание для каждого сервиса отдельного пользователя и группы с ограниченными полномочиями и пустышкой вместо шелла.

Ваша оценка: Нет Средняя оценка: 5 (4 votes)
Отправить комментарий
КАПЧА
Вы человек? Подсказка: зарегистрируйтесь, чтобы этот вопрос больше никогда не возникал. Кстати, анонимные ссылки запрещены.
CAPTCHA на основе изображений
Enter the characters shown in the image.
Linux I класса
Linux II класса
Linux III класса
Счетчики
  • Самый популярный сайт о Linux и Windows 10
  • Индекс цитирования