Реальная ценность моделей MAC в Linux
Я читал о MAC и DAC в Интернете, но до сих пор не понимаю, от какой атаки невозможно защититься, если использовать только возможности DAC + по сравнению с возможностями MAC + DAC +. Если процесс не запускается от имени root и не имеет CAP_DAC_OVERRIDE, CAP_FOWNER и других опасных возможностей, он не может преодолеть уже назначенное владение и ACL ресурсов, которые он использует. С другой стороны, если процесс запускается от имени root и имеет CAP_MAC_ADMIN, он может перезаписать контекст безопасности, установленный MAC.
Так является ли MAC «просто дополнительным уровнем защиты» без каких-либо реальных преимуществ в современной системе Linux?
Update1 Я добавлю сюда свои «ответы» на конкретные аргументы. Я предполагаю, что ни один из процессов не запускается от имени пользователя root и не имеет ненужных возможностей (кроме процессов / сценариев запуска системы).
Аргумент : вы можете защитить веб-сервер от запуска произвольных команд оболочки.
Ответ : (Не говоря уже о контейнерных веб-приложениях), можно добавить разрешающий ACL для всех команд, к которым может получить доступ UID / GID сервера, и запрещающий ACL для остальных команд на хосте.
Аргумент : пользователь может иметь файл с разрешениями 0777 [и, по сути, передавать его всем в системе].
Ответ : сценарий запуска системы может установить ACL по умолчанию для каталога, в котором создается этот файл, так что все, что пользовательский процесс создает в этом каталоге, всегда будет унаследовать эти ACL. В общем, наличие 7 в «других» кажется плохой идеей, и если файл получит такие разрешения, дискреционная политика может быть применена здесь при развертывании системы (установка дистрибутива) или даже при запуске при каждой загрузке системы.
Ответы
Разница в том, кто определяет права доступа к файлам. DAC предоставляет владельцу файла полный контроль над правами доступа к файлу. MAC использует метки для обеспечения централизованного управления, что означает наличие дополнительного уровня безопасности, который не зависит от владельца файла. Например, у пользователя может быть файл с разрешениями rwxrwxrwx (777), но MAC применяет свой rwx только к определенному набору меток безопасности, эффективно перекрывая DAC.
DAC не покрывает все потенциальные ситуации разрешения безопасности, которые мог бы сделать MAC. ACL очень гибкие по сравнению с DAC.
Для простоты ЦАП позволяет управлять только rwx, верно? С помощью DAC вы можете быть более явным и на уровне системных вызовов контролировать то, что разрешено. Например, вы можете разрешить кому-либо добавлять файлы в файл, но не перезаписывать / удалять его.