Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

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

Оригинал: Linux: Hide Processes From Other Users
Автор: Nix Craft
Дата публикации: 21 августа 2014 года
Перевод: А. Кривошей
Дата перевода: апрель 2015 г.

Я работаю в многопользовательской системе. Большинство пользователей получают доступ к своим ресурсам с помощью ssh-клиента. Как я могу при этом предотвратить утечку информации, которая происходит из-за того, что все пользователи могут видеть все запущенные в системе процессы, даже если они им не принадлежат?
Если вы используете ядро версии 3.2+ (или RHEL/CentOS версии v6.5+), вы можете скрывать процессы от других пользователей. Только root может видеть все процессы, а каждый пользователь может видеть только свои процессы. Все это можно сделать, если перемонтировать файловую систему /proc с опцией ядра "hidepid".

Познакомимся с опцией hidepid

Эта опция определяет объем информации о процессах, который мы хотим сделать доступным для других пользователей. Она может иметь следующие значения:

1. hidepid=0 - любой пользователь может читать все файлы в /proc/PID/* (значение по умолчанию).
2. hidepid=1 - пользователи имеют доступ только к своим собственным директориям в /proc/. Важные файлы, такие как cmdline, sched*, не защищены от других пользователей.
3. hidepid=2 - это значит hidepid=1 плюс все файлы в /proc/PID/ невидимы для других пользователей. Это усложняет возможность проникновения в систему или сбор информации о запущенных процессах - работают ли какие-то демоны с повышенными привилегиями, запустил ли другой пользователь важную программу и так далее.

Защита ядра Linux: скрываем процессы от других пользователей

Введите следующую команду:

# mount -o remount,rw,hidepid=2 /proc

Отредактируйте файл /etc/fstab:

# vi /etc/fstab

Измените строку для proc, как показано ниже, чтобы защита включалась автоматически при загрузке системы:

proc    /proc    proc    defaults,hidepid=2     0     0

Сохраните и закройте файл.

Пример

В этом примере я авторизуюсь как vivek@cbz-test:

$ ssh vivek@cbz-test
$ ps -ef
$ sudo -s
# mount -o remount,rw,hidepid=2 /proc
$ ps -ef
$ top
$ htop

Пример вывода (просмотрите до конца этот демо-ролик):

hidepid

Подсказка: что делать с программами, которые падают при включении защиты.

Вам необходимо использовать опцию gid=VALUE_HERE:

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

proc /proc proc defaults,hidepid=2,gid=admin 0 0