Библиотека сайта 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
Пример вывода (просмотрите до конца этот демо-ролик):
Подсказка: что делать с программами, которые падают при включении защиты.
Вам необходимо использовать опцию gid=VALUE_HERE:
gid=XXX определяет группу, которая будет в состоянии собирать всю информацию о процессах (как при hidepid=0). Эта группа должна использоваться вместо помещения обычного пользователя в файл sudoers. Однако ненадежные пользователи (демоны и т.п.), для которых нет оснований, что они должны мониторить задачи во всей системе, не должны добавляться в эту группу.
Поэтому добавьте пользователя по имени monapp в группу (например admin), которой вы хотите дать доступ к информации о процессах, и отредактируйте fstab:
proc /proc proc defaults,hidepid=2,gid=admin 0 0