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

field_vote: 
Ваша оценка: Нет Средняя: 5 (4 оценки)
Главная тема: 
Дистрибутивы: 

Комментировать

Filtered HTML

  • Use [fn]...[/fn] (or <fn>...</fn>) to insert automatically numbered footnotes.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <strike> <code> <h2> <h3> <h4> <h5> <del> <img>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.