Тотальный контроль над пингвином

Денис Колисниченко

Хакер, номер #091, стр. 091-112-1

(dhsilabs@mail.ru)

SELinux: максимальная защита

Сегодня мы поговорим о SELinux - одной из самых популярных систем управления доступом. Помимо SELinux существуют еще GrSecurity и LIDS, но самой строгой из них является именно SELinux. Благодаря правильной настройке эта система ни разу не была взломана. Так как объем публикации не позволяет полностью описать SELinux, мы остановимся только на основных понятиях и концепциях этой системы. Большая часть статьи будет уделена практической настройке, а, если ты что-то недопонял из теории, во врезке ты найдешь список дополнительных ресурсов.

Зачем это надо?

Linux при правильной настройке считается одной из самых защищенных операционных систем мира. Так зачем нужна дополнительная система управления доступом? Неужели не хватает возможностей самой Linux? Да, не хватает. В Linux есть два типа пользователей: обычный пользователь и администратор (root). Права обычных пользователей можно ограничить и с помощью штатных средств Linux. Но что находится во власти администратора, ты и сам знаешь. Если злоумышленник завладеет паролем администратора (как он это сделает - это уже другой вопрос), то он получит полную власть над системой. Но если на компьютере установлена система управления доступом, то она не позволит ему сделать ничего криминального. Злоумышленник просто не сможет причинить ощутимый вред скомпрометированному хосту. Система управления доступом может ограничить даже действия самого пользователя root, если таковые действия могут стать причиной некорректной работы системы (например, угрожать целостности данных, работе самой системы и т.д.).

Вернемся к обычным пользователям. Здесь можно задавать ограничение на доступ к определенным файлам и на использование системных ресурсов - дискового пространства (квоты), процессорного времени, устанавливать максимальное число процессов — и все. Система управления доступом может запретить пользователю выполнять те действия, которые он не должен выполнять. Во многих случаях даже обычным пользователям часто предоставляются чрезмерные полномочия. Например, зачем пользователю, который зарегистрировался в системе только для чтения почты, предоставлять возможность компиляции исходного кода или запуска фоновых демонов? Теперь все становится на свои места: мы понимаем, что без SELinux в настоящей многопользовательской системе не обойтись. Справедливости ради стоит отметить, что описанные выше фичи также можно организовать, используя GrSecurity или LIDS.

Кроме всего прочего, SELinux контролирует и права доступа к файлам. Например, система проверила права доступа файла и разрешила к нему доступ. Но потом принимается за работу SELinux. Если в настройках SELinux указано, что данный пользователь (или процесс) не имеет доступа к файлу, тогда уже SELinux запрещает к нему доступ. И в самом деле, зачем Web-серверу обращаться к каталогу /etc/selinux? Если же система запретила доступ к файлу (это первый этап - проверка прав доступа), тогда SELinux не задействуется.

Как устанавливать SELinux?

Давай упростим друг другу жизнь и не будем рассматривать установку этой системы на «голый» Linux. SELinux входит в состав Fedora Core (кстати, FC стал первым дистрибутивом, в состав которого была включена SELinux) и дистрибутивов, основанных на нем. Настройку SELinux будем рассматривать на примере ASP Linux 11 - самого свежего SELinux-дистрибутива, который имеется под рукой.

Содержание  Вперед на стр. 091-112-2
ttfb: 2.8359889984131 ms