Безопасность Ubuntu с сервисами, запущенными из / opt

Мне потребовалось некоторое время, чтобы понять, что здесь происходит (я думаю), но кто-то может объяснить мне, есть ли риски безопасности в отношении моей логики того, что здесь происходит, когда я пытаюсь настроить домашнюю сеть? Сервер как разработчик с хорошими знаниями Linux?

Ubuntu не похож на другие системы, так как он ограничил учетную запись пользователя root. Вы не можете войти в систему как root или su как root. Это было проблемой для меня, так как мне пришлось установить множество приложений и сервисов в /opt согласно пользовательской документации (хорошим примером является XAMPP для Linux). Проблема в том, что этот каталог принадлежит root:root. Я заметил, что моя учетная запись администратора не принадлежит к группе root с помощью следующей команды:

groups username, поэтому я понимаю, что даже если файлы и службы, которые я помещаю в /opt, принадлежат root выполнение их с помощью sudo (как требуется) не означает, что они запускаются от имени root? Я представляю, что команда sudo где-то скрыта под принадлежностью пользователя root и имеет разрешение 775? Таким образом, у меня есть вопрос: если такой сервис, как Tomcat, Apcahe и т. Д., Выставляет мою систему как в других системах? Очевидно, мне нужно защитить их в конфигурациях, но разве не золотое правило никогда не запускать что-либо от имени пользователя root? Что произойдет, если у меня будет несколько служб, работающих под одним пользователем / группой в отношении скомпрометированного сервера?

1
задан 2 November 2012 в 18:24

1 ответ

Хорошо, вот немного безопасности 101:

  • в отношении учетной записи root, Ubuntu очень похожа на любую другую систему на основе Debian, в которой root не имеет установленного пароля, поэтому Вы не можете войти в систему как root напрямую и использовать вместо этого sudo. Если вам нужно использовать su, вы можете запустить его с sudo su. Подробнее о sudo

  • тот факт, что исполняемый файл принадлежит root, не означает, что он должен запускаться с sudo, любой пользователь с Чтение и выполнение привилегий в состоянии запустить такую ​​программу. Фактически, большинство программ в Ubuntu принадлежат root, но вы можете запустить gedit и прочее. «Эффективный пользователь» запущенного процесса будет соответствовать пользователю, запустившему программу, а не тому, кто владеет исполняемым файлом. Таким образом, технически вы можете запустить Apache и все что угодно как пользователь без прав администратора, но есть одно «если» ...

  • в качестве меры безопасности, в системах Linux процесс не может связываться с портами ниже 1024, если его эффективным пользователем не является root. Поэтому, если вы хотите, чтобы Apache прослушивал порт 80, он должен быть запущен как root. Что является очевидной проблемой безопасности. Но вы можете запустить его, скажем, на порту 8080.

  • Чтобы избежать проблем безопасности при работе с привилегиями root, Apache и некоторые другие сетевые службы сбрасывают свои привилегии после привязки к сетевым портам, поэтому он выполняет абсолютный минимум работы как root, а затем переключает его effective user id на предварительно настроенного пользователя с минимальными привилегиями (без пароля, без входа в систему и т. д.). Эффективный пользователь и группа задаются в файлах конфигурации приложения (директивы User и Group в httpd.conf в случае Apache)

  • некоторые другие сервисы не могут отбросить свои привилегии, поэтому их нужно запускать как непривилегированный пользователь из сценариев загрузки.

  • Когда вы устанавливаете пакеты из репозиториев Ubuntu, они обычно создают ограниченные учетные записи пользователей для каждой службы (mysql, postgres и т. Д.) И настраивают службы для каждого запуска с их собственным эффективный пользователь. Это значительно безопаснее, чем запускать службы, когда пользователь входит в систему.

0
ответ дан 2 November 2012 в 18:24

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

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