Как скрыть аргументы процесса от других пользователей?

Некоторое время назад я использовал патчи ядра grsecurity , в которых была возможность скрыть аргументы процесса от других пользователей без полномочий root. В основном это только что сделало /proc/*/cmdline режимом 0600, и ps обрабатывает это должным образом, показывая, что процесс существует, но не его аргументы.

Это неплохо, если кто-то на многопользовательской машине работает, скажем, vi christmas-presents.txt, чтобы использовать канонический пример.

Есть ли какой-либо поддерживаемый способ сделать это в Ubuntu, кроме установки нового ядра?

(Я знаком с техникой, которая позволяет отдельным программам изменять свой argv, но большинство программ не сделайте это, и в любом случае это будет неестественно. Этот пользователь stackoverflow , кажется, задает тот же вопрос, но на самом деле просто кажется очень смущенным.)

7
задан 23 May 2017 в 15:39

5 ответов

До Natty и в том числе невозможно изменить разрешения для файлов /proc/$pid/cmdline со стандартным ядром, биты разрешений встроены в ядро. В настоящее время вам нужно будет собрать сделанное на заказ ядро ​​с этими исправлениями.

Если патчи просты для включения этой функции, то, возможно, стоит опубликовать их в списке команды ядра Ubuntu ( kernel-team@lists.ubuntu.com ), и мы можем рассмотреть их для включения в будущие выпуски.

0
ответ дан 23 May 2017 в 15:39

Несколько лет назад я опубликовал следующие два патча для ядра:

Эти два патча все еще работают для текущего стабильного ванильного ядра из kernel.org. Если вам интересно, я могу опубликовать текущий патч. Не спрашивайте меня, почему никто не включал опцию скрытия процессов в ядре апстрима.

Предупреждение: Эти патчи полностью скрывают процессы других пользователей, кроме root.

0
ответ дан 23 May 2017 в 15:39

Теперь существует опция монтирования hidepid для procfs , которая позволяет скрывать аргументы от других пользователей и, при желании, разрешать одной группе видеть все процессы:

Первый параметр монтирования называется «hidepid», и его значение определяет, сколько информации о процессах мы хотим быть доступными для не-владельцев:

hidepid = 0 (по умолчанию) означает старое поведение - любой может прочитать весь мир -читаемые / proc / PID / * файлы.

hidepid = 1 означает, что пользователи могут иметь доступ не к каким-либо каталогам / proc / PID /, но к своим собственным. Чувствительные файлы, такие как cmdline, sched *, status теперь защищены от других пользователей. Поскольку проверка полномочий, выполняемая в proc_pid_permission (), и права доступа к файлам остаются нетронутыми, программы, ожидающие режимы определенных файлов, не путаются.

hidepid = 2 означает, что hidepid = 1 плюс все / proc / PID / будут невидимы для других пользователей. Это не значит, что он скрывает существование процесса (его можно узнать другими способами, например, kill -0 $ PID), но он скрывает euid и egid процесса. Он усложняет задачу злоумышленника по сбору информации о запущенных процессах, о том, работает ли какой-либо демон с повышенными привилегиями, выполняет ли другой пользователь какую-либо чувствительную программу, запускают ли другие пользователи вообще какую-либо программу и т. Д.

gid = XXX определяет группу, которая сможет собирать информацию обо всех процессах (как в режиме hidepid = 0). Эту группу следует использовать вместо помещения пользователя root в файл sudoers или что-то в этом роде. Однако недоверенных пользователей (таких как демоны и т. Д.), Которые не должны следить за задачами во всей системе, не следует добавлять в группу.

hidepid = 1 или более поздняя версия предназначена для ограничения доступа к файлам procfs, которые могут раскрыть некоторую конфиденциальную информацию, такую ​​как точные моменты нажатия клавиш:

http://www.openwall.com/lists/ oss-security / 2011/11/05/3

hidepid = 1/2 не нарушает инструменты мониторинга пользовательского пространства. ps, top, pgrep и conky изящно обрабатывают EPERM / ENOENT и ведут себя так, как будто текущий пользователь - единственный пользователь, выполняющий процессы. pstree показывает поддерево процесса, которое содержит процесс "pstree".

0
ответ дан 23 May 2017 в 15:39

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

0
ответ дан 23 May 2017 в 15:39

Единственный способ сделать это в настоящее время - это поместить каждого пользователя в отдельный контейнер (см. клон с CLONE_NEWPID и CLONE_NEWNS) и установить новый /proc в контейнере. ( lxc сделает кое-что для вас.)

Однако, планируется перенести функции grsecurity на ядра Ubuntu и апстрима. Если можете, подпишитесь на что-нибудь и помогите.

0
ответ дан 23 May 2017 в 15:39

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

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