Рейтинг:3

Сервер OpenVPN — влияет ли удаление привилегий на доступ к файлам во время выполнения?

флаг ck

В Статья об усилении защиты OpenVPN, рекомендуется, чтобы демон сервера сбрасывал свои привилегии после запуска в Linux:

OpenVPN был очень тщательно разработан, чтобы разрешить отказ от привилегий суперпользователя после инициализации, и эту функцию всегда следует использовать в Linux/BSD/Solaris. Без привилегий root работающий демон сервера OpenVPN представляет собой гораздо менее заманчивую цель для злоумышленника.

Они рекомендуют установить следующие директивы:

пользователь никто
группа никто

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

Однако есть несколько файлов, к которым OpenVPN обращается во время выполнения. особенно файл CRL:

Когда в OpenVPN используется параметр crl-verify, файл CRL будет перечитываться каждый раз, когда подключается новый клиент или существующий клиент повторно согласовывает соединение SSL/TLS (по умолчанию один раз в час). Это означает, что вы можете обновить файл CRL во время работы демона сервера OpenVPN, и новый CRL сразу же вступит в силу для новых подключающихся клиентов.

Поэтому, естественно, я беспокоюсь, несовместимы ли эти две функции - если демон сбрасывает привилегии после запуска, как он может читать /etc/openvpn/сервер/crl.pem (владелец корень: корень, Режим 0600; Принуждение SELinux) во время выполнения?

  • Если демон действительно не может получить доступ к файлу CRL во время выполнения, есть ли хороший способ обойти эту проблему?
  • Если демон может получить доступ к файлам CRL во время выполнения, я хотел бы знать, как это возможно.

ОС RHEL8.5 x86_64, если это уместно.

Рейтинг:2
флаг et

Как и многие приложения, которые теряют привилегии, OpenVPN открывает различные файловые дескрипторы, пока у него еще есть root, которые затем сохраняются. После удаления привилегий процесс по-прежнему может получить доступ к этим дескрипторам в том режиме, в котором они были открыты, до тех пор, пока они остаются открытыми.

Компромисс опенвпн В этом случае процесс не будет подвергать файл изменениям, потому что файл (вероятно, я не проверял) открыт только для чтения. Чтобы открыть его в режиме записи, потребуется новый дескриптор файла, что приведет к сбою, поскольку процесс больше не может его создать.

cyqsimon avatar
флаг ck
А, спасибо. Это имеет смысл.Есть ли официальный источник, в котором задокументировано это поведение? Или это поведение настолько обыденно, что по существу стало идиоматичным и не заслуживает документирования?
флаг et
Я предполагаю, что единственным _официальным_ источником является фактический исходный код, так как это ваш единственный верный путеводитель по тому, что происходит на самом деле. Если вы хотите _понимать_ больше, то, возможно, начните со страниц вики/руководства по [файловым дескрипторам](https://en.wikipedia.org/wiki/File_descriptor) и [системному вызову open()](https: //man7.org/linux/man-pages/man2/open.2.html). Как только вы поймете, что проверки разрешений выполняются _при этих системных вызовах_, все становится более понятным :)
флаг my
Удаление привилегий после открытия приватных портов, безусловно, является широко распространенной передовой практикой для демонов старой школы * nix, таких как openvpn и bind. Я не уверен в авторитетной ссылке на эту привычку.

Ответить или комментировать

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