Grsecurity: Защита файловой системы.
Метки: chroot | FIFO | Grsecurity | proc
Вторник, 23 июня 2009 г.
Просмотров: 2657
Подписаться на комментарии по RSS
Защита файловой системы (Filesystem Protection).
Как говорилось ранее, псевдофайловая система /prос предоставляет информацию о процессах, которую может употреблять хакер в своих целях. Эта опция дает возможность ограничить доступ к /proc двумя способами:
- Restrict /proc to User Only (CONFIG_GRKERNSEC_USER) - не root- пользователи не смогут просматривать /proc-информацию о процессах других пользователей, а также информацию о сети и информацию, относящуюся к ядру.
- Allow Special Group (CONFIGGRKERNSEC USERGROUP)
— создается специальная группа, которой можно просматривать /proc-информацию. GID этой группы должен быть указан в опции GID for Special Group (CONFIG_GRKERNSEC_PROC_GID).
Additional Restrictions (CONFIG_GRKERNSEC_PROC ADD) - Дополнительные ограничения
Эта опция добавляет дополнительные ограничения, которые запрещают пользователям читать информацию о процессоре и устройствах:
cat: /proc/cpuinfo: Permission denied
$ cat /proc/devices
cat: /proc/devices: Permission denied
Linking Restrictions (CONFIG_GRKERNSEC_LINK) - Ограничения ссылок
При включении этой опции вступят в силу следующие ограничения:
- Пользователь не сможет создавать жесткие ссылки на не принадлежащие ему файлы.
- Пользователь не сможет использовать символическую ссылку, которая принадлежит другому пользователю.
FIFO Restrictions (CONFIG_GRKERNSEC_FIFO) - Ограничения FIFO
FIFO (First In, First Out) - специальный тип потока, который используется для обмена данными между процессами. Эти потоки реализованы и обслуживаются ядром и представляются в файловой системе в виде специального файла - для адресации потока по имени (FIFO-файл никогда не содержит данных, так как информация передается непосредственно от одного процесса к другому).
Включение данной опции запретит пользователям запись в FIFO, находящийся в не принадлежащих им каталогах.
chroot Restrictions (CONFIGGRKERNSEC CHROOT) - Ограничение chroot
Как было показано здесь, chroot-окружение применяется для организации «песочницы» - отдельной области файловой системы, к которой и только к которой процесс, запущенный в «песочнице», может получить доступ. По сравнению с OpenBSD/FreeBSD, «песочница» Linux изрядно слаба (процесс, получивший права root или запущенный с этими правами, может легко выйти за пределы «песочницы»), поэтому эта опция позволяет ее несколько укрепить.
Следующие опции позволяют создать дополнительные ограничения для chroot-окружения. Рекомендуется включить все данные опции.
- Deny Mounts (CONFIG_GKERNSEC_CHROOT_MOUNT) - запрещает процессу, запущенному в chroot-окружении, монтировать и размонтировать файловые системы.
- Deny Double-chroots (CONFIG_GRKERNSEC_CHROOT_DOUBLE) - создание еще одного chroot-окружения в пределах уже существующего chroot-окружения является прекрасным способом «побега из песочницы». Данная опция запрещает создание двойного chroot-окружения.
- Deny pivot_root in chroot (CONFIG_GRKERNSEC_CHROOT_PIVOT) — в ядре версии 2.3.41 появилась новая функция - pivot_root, которая подобна chroot - она изменяет корневой каталог. Вызов pivot_root внутри chroot-окружения также позволяет выйти за пределы «песочницы». Данная опция позволяет отключить функцию pivotroot.
- Enforce chdir("/") on All chroots (CONFIG_GRKERNSEC_CHROOT_CHDIR) - функция chroot не изменяет автоматически текущий рабочий каталог на только что созданный корень. Поэтому "." может использоваться для выхода за пределы chroot-окружения. Данная опция выполняет chdir("\") сразу после вызова chroot().
- Deny (f)chmod +s (CONFIG_GRKERNSEC_CHROOT_CHMOD) - запрещает процессу внутри chroot-окружения устанавливать биты SUID и SGID с помощью системных вызовов chmod и fchmod.
- Deny mknod (CONFIG GRKERNSEC CHROOT MKNOD) - запрещает хакеру создавать иноды устройств с помощью системного вызова mknod (создав инод устройства, злоумышленник сможет получить прямой доступ к устройству, например к жесткому диску).
- Deny shmat Out of chroot (CONFIG GRKERNSEC CHROOT SHMAT) — системный вызов shmat (Shared Memory Attach) позволяет процессу присоединяться к разделяемой памяти, что является потенциальным источником атаки. Эта опция запрещает использовать shmat() для присоединения к памяти за пределами chroot-окружения.
- Deny Access to Abstract AFUNIX sockets Out of chroot (CON-FIG_ GRKERNSECCHROOT UNIX) - сокеты семейства AF_UNIX управляют IPC (Inter Process Communications). Эта опция запрещает использовать AF UNIX для межпроцессного взаимодействия за пределами chroot-окружения.
- Protect Outside Processes (CONFIG GRKERNSECCHROOT
FINDTASK)
— запрещает процессам из chroot-окружения отправлять сигналы процессам, находящимся за пределами «песочницы» (также запрещается просматривать эти процессы). - Restrict Priority Changes (CONFIG_ GRKERNSEC_CHROOT_NICE) - запрещает изменять приоритет процесса (команда/системный вызов nice), находящегося в «песочнице».
- Deny sysctl Writes (CONFIG_ GRKERNSEC CHROOT SYSCTL) — каталог /proc/sys используется для чтения и изменения параметров ядра. Данная опция запрещает процессам из chroot-окружения производить запись в каталог /proc/sys, а также использовать утилиту sysctl внутри окружения.
- Capability Restrictions (CONFIG_ GRKERNSEC_CHROOT_CAPS) — понижает возможности (см. выше) root-процессов, запущенных внутри chroot-окружения, чтобы предотвратить перезагрузку компьютера, загрузку модуля и еще ряд потенциально опасных возможностей.