Запуск программ с правами root в режиме онлайн

Я перерабатываю дистрибутив на основе Ubuntu, предназначенный для использования только в прямом эфире и в основном в качестве браузера, чтобы на жестком диске пользователя не было вирусов, когда он-лайн. Этот просмотр в реальном времени повышает безопасность для пользователей Linux, но в то же время обеспечивает защиту жесткого диска для пользователей Windows и Mac. Это хорошее приглашение для их пользователей взглянуть на то, что может предложить ОС Linux, чтобы помочь защитить выбранные ОС. Я добавляю простое учебное пособие для бабушек, чтобы они могли его переделать со всеми настройками браузера и пользовательского пространства.

Большинство пользователей хотят, чтобы менеджер паролей помог им войти в свои учетные записи. Я использую Firefox, но менеджер паролей Firefox, однажды открытый с мастер-паролем, предоставит любой запрашивающей службе, которая знает, как сделать запрос беспрепятственный доступ ко всем зашифрованным паролям. В связи с этим я решил использовать автономный менеджер паролей, который предоставит некоторые гибкие возможности для разрешения проблем. Keepassx был основным выбором.

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

Чтобы повысить безопасность, я рассматриваю возможность изменения разрешений Keypassx, чтобы база данных Keepassx была недоступна для онлайн-пользователя, если только пользователь не введет свой пароль администратора. Логично, что это затруднит доступ злоумышленнику. Хотя я новичок в настройке среды безопасности. Поэтому мой вопрос ...

Является ли хорошей идеей и безопасно заставить Keepassx запускаться только как пользователь root в Ubuntu, учитывая, что пользователь будет подключен к Firefox онлайн?

1
задан 17 February 2012 в 14:52

3 ответа

Я могу ошибаться в этом, но, насколько я понимаю, если вы предоставляете привилегии root для утилиты и она скомпрометирована вредоносным кодом, тогда вредоносный код также получает привилегии root.

Насколько я понимаю, по этой причине Ubuntu управляет безопасностью не так, как другие дистрибутивы. Он не устанавливает пользователя root. Он устанавливает пользователя, который получает привилегии суперпользователя, когда ему, как администратору, нужны привилегии суперпользователя. По завершении задачи или по истечении установленного срока пользователь с правами администратора теряет привилегии root. Это снижает риск получения вредоносного кода root-доступа.

Вот почему в Ubuntu мы используем не «su», а «sudo» перед командой в терминале. Мы ограничиваем возможность для вредоносного кода получать доступ и наносить ущерб, ограничивая наше использование привилегий root.

Это документ, который я понимаю:

Ubuntu причины sudo, а не su или root

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

Я цитирую официальный документ:

По умолчанию пароль учетной записи Root заблокирован в Ubuntu. Это означает, что вы не можете войти в систему как Root напрямую или использовать команду su, чтобы стать пользователем Root. Однако, поскольку учетная запись Root физически существует, все еще можно запускать программы с привилегиями корневого уровня. Именно здесь приходит sudo - он позволяет авторизованным пользователям (обычно «Административным»; для получения дополнительной информации, пожалуйста, обращайтесь к AddUsersHowto) запускать определенные программы как Root без необходимости знать пароль root.

0
ответ дан 17 February 2012 в 14:52

Ну, есть два отдельных аспекта при запуске приложения от имени пользователя root; один из них повышает безопасность, а другой может поставить под угрозу - я думаю, что смешивание этих двух аспектов объясняет вашу путаницу.

  • запуск приложения от имени другого пользователя (возможно, от имени пользователя root, но не обязательно) усложняет другому процессу доступ к файлам, принадлежащим / созданным этим приложением, и делает другие неприятные действия вещи (например, отправить сигнал KILL). Это хорошо.

  • если в приложении обнаружена уязвимость (т. Е. Отправка ему какого-либо специально отформатированного ввода приводит к выполнению некоторого кода через переполнение буфера и т. Д.) - то после использования уязвимости злоумышленник сможет выполнить код с привилегиями этого процесса. В этом смысле запуск приложения с привилегиями root является ПЛОХОЙ, поскольку он предоставил бы атакующему самый высокий уровень привилегий.

Теперь вы понимаете, что запуск диспетчера обновлений от имени root может быть плохим, если он содержит ошибку, которая позволяет специально созданному файлу .deb вызвать его сбой и заставить его выполнить некоторый код. Однако запуск некоторых приложений, таких как менеджер пакетов, с привилегиями суперпользователя неизбежен, поскольку они изменяют основные части системы.

Распространенным решением этой проблемы является выполнение так называемого «удаления привилегий» при запуске программы; это часто используется для запуска веб-серверов и другого потенциально эксплуатируемого (и доступного извне) программного обеспечения. Идея проста: программа запускается с правами суперпользователя, но при первой же возможности она переключается на какую-то учетную запись пользователя с минимально возможными привилегиями (без входа в оболочку, привязка к своему домашнему каталогу и т. Д.). Таким образом, даже если это скомпрометировано, это дало бы злоумышленнику очень ограниченный доступ к системе. Кроме того, другие учетные записи пользователей (кроме суперпользователя) не будут иметь доступа к файлам приложения

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

На самом деле, в этой ситуации я думаю, что использование веб-браузера в качестве непривилегированного пользователя имело бы больше смысла. И, конечно, Google дает нам несколько ссылок на эту тему:

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

Что касается скрипта запуска, я бы предположил, что скрипт будет запускаться от имени пользователя root и вызывать приложения как их соответствующих пользователей. Очевидно, что сценарий должен быть доступен для записи только пользователю root. Читайте о setuid .

0
ответ дан 17 February 2012 в 14:52

Нет, это не очень хорошая идея. Это может сломаться, и это может позволить эскалацию к корню.

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

0
ответ дан 17 February 2012 в 14:52

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

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