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

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

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

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

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

user nobody
group nobody

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

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

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

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

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

Операционная система — RHEL8.5 x86_64, если это важно.

решение1

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

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

Связанный контент