Информационные технологииStfw.Ru 🔍

Механизмы безопасности в Linux

В данной статье я проведу краткий экскурс в максимально распространенные средства, связанные с безопасностью Linux.
🕛 28.04.2010, 20:26
Информация предоставлена в сжатом виде, и если какое-то средство вас заинтересует, возможно прогуляться по ссылкам и прочесть более детально. По заявкам пользователей кое-какие механизмы возможно будет рассмотреть более детально в дальнейших статьях.

Будут рассмотрены следующие средства: POSIX ACL, sudo, chroot, PAM, SELINUX, APPARMOR, POLICYKIT. Виртуализация, впрочем и относится в какой-то мере к средствам безопасности, рассматриваться не будет, тем паче что это отдельная широкая тема.

POSIX ACL

Описание: Разграничение прав доступа к файлам на основе их атрибутов.
Механизм работы: Система (в т.ч., менеджер файловой системы) считывает атрибуты файла, к которому обращается пользователь (или программа, работающая от имени некоего пользователя), и решает предоставлять ли доступ на основе таких атрибутов. При ошибке доступа приложению возвращается соответствующий код ошибки.
Пример эксплуатации: Чтоб запретить/разрешить доступ прочих пользователей к собственному файлу, возможно поменять его атрибуты ч/з chmod, и поменять владельца/группу ч/з chown и chgrp. Текущие права доступа возможно поглядеть ч/з ls.

sudo

Описание: Исполнение программ от собственного и/или чужого имени.
Механизм работы: При вызове команды sudo/sudoedit система считывает файл /etc/sudoers, и на его основе определяет какие команды может вызывать пользователь.
Пример эксплуатации: Вся конфигурация определяется в файле /etc/sudoers. К примеру, возможно разрешать исполнять лишь определенные команды и лишь от определенного пользователя:
WEBMASTERS www = (www) ALL, (root) /usr/bin/su www
Эта строчка заявляет о том, что пользователи, определенные в алиасе WEBMASTERS могут исполнять все команды от имени пользователя www, или делать su лишь в www.

chroot

Описание: Операция, меняющая корень системы.
Механизм работы: Запускает программу (изначально /bin/sh) с новым корневым каталогом. Сейчас все обращения вызванной программы не могут выйти за пределы корневого каталога (т.е. программа работает в "песочнице").
Пример эксплуатации: Создается особый каталог, в него копируется нужное для работы окружение (возможно применять и симлинки). Дальше делается chroot на этот каталог, и запущенная программа работает лишь с сперва подготовленным окружением. Для упрощения возможно применять разные jail-инструменты, доступные в дистрибутивах.

PAM

Описание: Подключаемые модули аутентификации.
Механизм работы: Программы, написанные с использованием PAM, обращаются к его библиотеке, которая уже собственно проводит процедуру аутентификации пользователя. При ошибке авторизации приложению возвращается соответствующий код ошибки.
Пример эксплуатации: POSTGRESQL, Apache, Squid и иные программы (включая написанные вами) могут трудиться с учетными записями пользователей не ч/з собственные конфигурационные файлы, а обращаться к PAM, этим обеспечивая разные варианты аутентификации - Kerberos, Etokens, биометрия и др. Конечно, это касается и самого Linux-а - возможно входить не только лишь вбивая пару логин/пароль.

SELINUX

Описание: Реализация системы принудительного контроля доступа, основанная на политиках и контекстах безопасности.
Механизм работы: Для проверки прав доступа используется LSM-модуль ядра, которые проверяет политику безопасности приложения и сверяет его тип с контекстом безопасности используемых файлов (объектов). При ошибке доступа соответствующая запись добавляется в /var/log/audit/audit.log. Пользователь может получить нотификацию об этом ч/з утилиту setroubleshoot.
Пример эксплуатации: В targeted-режиме SELINUX позволяет апачу читать лишь определенные каталоги. Стандартный (для кого-то) путь сделать сайт в домашнем каталоге и открыть его ч/з симлинк в /var/www не пройдет процедуру проверки, т.к. SELINUX проверяет контекст безопасности файлов, делая полное сканирование. Чтоб поменять контекст безопасности файла, требуется применять команду chcon (в этой ситуации, chcon -R -h -t httpd_sys_content_t /path/to/directory). Текущие контексты безопасности возможно поглядеть ч/з ls -Z.

APPARMOR

Описание: Система упреждающей защиты, основанная на политиках безопасности (профилях).
Механизм работы: Для проверки прав доступа используется LSM-модуль ядра, который при запуске приложения проверяет наличие его профиля (/etc/apparmor.d), и если профиль есть, то ограничивает исполнение системных вызовов согласно с профилем. При ошибке доступа соответствующая запись добавляется в /var/log/audit/audit.log. Пользователь может получить нотификацию об этом ч/з утилиту apparmor-notify.
Пример эксплуатации: При помощи команды aa-genprof возможно сделать профиль интересующего приложения, отработав в нем все нужные use-case-ы. Дальше полученный файл профиля возможно модифицировать интересующим вас образом, сохранить в /etc/apparmor.d и активировать ч/з aa-enforce.

POLICYKIT

Описание: Средство контроля системных привилегий.
Механизм работы: При обращении приложения к сервису (каждое обращение проходит как action), он проверяет ч/з POLICYKIT права доступа пользователя для данного action-а. В зависимости от политический деятель доступ может оказаться запрещен, разрешен или настойчиво просить аутентификации. Отображение ошибок (или запрос пароля) должно на себя брать клиентское приложение.
Пример эксплуатации: Ubuntu при настройке сети позволяет просматривать всю информацию без запроса пароля (т.к. конфигурация POLICYKIT разрешает чтение без авторизации), однако когда требуется настройки сохранить, то запрашивается пароль. При этом пользователю не даются рутовские права на всю систему, т.к. он работает лишь в пределах используемого сервиса.

Заключение

Конечно, есть и иные средства, связанные с безопасностью, не рассмотренные в данной статье. Хотя все вышеперечисленное является стандартом де-факто для максимально распространенных дистрибутивов, и если вы заботитесь о безопасности, лучше их знать.

Если у кого-то есть более релевантные ссылки на описание средств безопасности (на русском), пишите в комментарии. К тому же буду рад всем замечаниям и найденным неточностям.

Информационная безопасность   Теги: Linux, Unix, Безопасность

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉