Ограничение прав пользователей
Метки: SGID | SUID
Четверг, 7 мая 2009 г.
Просмотров: 3213
Доступные для записи файлы.
В любой системе наверняка найдется полно файлов, которые доступны для записи каждому пользователю. Нужно найти такие файлы и изменить к ним права доступа. В первую очередь группу риска представляют файлы в каталогах /etc, /bin и /usr. Найти такие файлы просто:
В каталоге /dev есть много файлов устройств, доступных для записи пользователям, следовательно, нужно ограничить поиск простыми файлами (-type f).
SUID- и SGID-файлы.
Потенциальную угрозу безопасности системы составляют SUID- и SGID-файлы. Нужно непрерывно вести учет этих файлов на случай, если хакер внезапно создаст новые SUID-файлы, которые позволят ему получить права root'a.
Найти все SUID-файлы пользователя root можно с помощью команды:
А SGID-файлы — командой:
Найдя такой файл (нужно точно знать, что флаг SUID для этого файла не был устанавлен), нужно сбросить флаг SUID. Это делается крайне просто:
Разделы и точки монтирования.
Для безопасности всей системы нужно обязательно продумать схему разбиения жесткого диска, и правильно указать опции монтирования. Базовая схема разбиения обычно состоит из трех разделов: раздела свопинга (swap), загрузочного (/boot) и корневого (/).
Порой на серверах создаются разделы для /var и /tmp, что дает возможность разместить эти каталоги на разных жестких дисках и повысить производительность системы, увеличив скорость передачи и уменьшив время доступа.
Есть и еще одно преимущество размещения /var в отдельном разделе или на жестком диске. Хакер может попытаться переполнить протоколы системы (каталог /var/log). Если каталог /var будет размещен на другом жестком диске или хотя бы в другом разделе, хакер переполнит только его, но не корневой раздел. Рекомендуется создать также разделы для каталогов /home (пользовательские каталоги) и /usr.
Кроме всего прочего, разбиение файловой системы на отдельные разделы дает возможность установить опции монтирования для любого раздела. Рассмотрим, например, файл /etc/fstab (в нем содержится список разделов, которые монтируются автоматом):
/dev/hda2 / ext3 defaults 1 1
/dev/hdcl /hdcl auto defaults 1 0
/dev/hdd2 /hdd2 auto defaults 1 0
/dev/cdrom /mnt/cdrom iso9660 defaults 1 0
/dev/fd0 /mnt/floppy auto noauto,owner,ro 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
proc /proc proc defaults 0 0
Здесь четыре раздела подмонтировано с опциями по умолчанию (default), что означает доступ для чтения/записи, использование квотирования и SUID-файлов. Для CD-ROM установлены опции noauto (запрещает автоматическое монтирование), owner (размонтирование разрешается только тому пользователю, который подмонтировал это устройство), а также ro (только чтение).
Некоторые полезные опции монтирования:
- noquota — запрещает квотирование в этом разделе;
- nosuid — запрещает установку битов SUID/SGID на файлах;
- nodev — не признает блочные и символьные устройства;
- nоехес — игнорирует бит выполнения на двоичных файлах;
- rо — раздел доступен только для чтения.
Разделы /tmp, /var, /home и /boot рекомендуется монтировать со следующими опциями:
- /tmp — noexec,nosuid;
- /var — noexec,nodev;
- /home — nosuid,nodev;
- /boot — rо (при перекомпиляции ядра придется перемонтировать этот раздел как rw — read/write).
Атрибуты файловой системы ЕХТ2/ЕХТЗ.
Один из недостатков файловой системы Linux - это то, что владельцу файла всегда предоставляются все права доступа к файлу. Рассмотрим следующий пример:
Файл доступен только для чтения: и для владельца, и для всех остальных пользователей. Но пользователь root (он же — владелец) по прежнему может записывать данные в этот файл.
Файловая система ext2 (и ext3 - журналируемая версия ext2) дают возможность решить этот недостаток с помощью использования атрибутов файлов, которые можно установить командой chattr:
- а — файл можно открыть только для добавления данных в конец файла (режим append). Файл нельзя удалить или обрезать (truncate). Если атрибут а установлен для каталога, то в этом каталоге можно создавать или изменять файлы, но нельзя их удалять.
- i — файл нельзя изменить. Если применяется для каталога, то вы можете редактировать существующие в каталоге файлы, но не можете их удалять или создавать новые файлы в этом каталоге.
Эти атрибуты не имеют ничего общего со стандартными правами доступа Unix. Они работают только на файловой системе ext2/ext3. Кроме того, атрибуты не могут быть выведены командой ls, для их просмотра используется команда lsattr.
Атрибут а можно установить для файлов журналов, чтобы никто ничего не смог удалить из журнала. При этом разрешено добавление файлов в журнал:
# chattr +a /var/log/apache/error.log
При просмотре каталога с помощью ls ничего странного не будет заметно — как будто бы этих атрибутов и нет:
total 7468
-rw-r—r—1 root root 820004 Apr 23 17:06 access.log
-rw-r—r—1 root root 1820004 Apr 24 00:06 error.log
Теперь любая задача демона crоn по ротации журналов невозможна.
Атрибут i можно установить для конфигурационных файлов, но только после того, как внесение изменений в эти файл завершено полностью.
Снять атрибуты можно так:
# chattr -i файл