Мандатное (принудительное) разграничение доступа Linux

В Linux дискреционные механизмы разграничения доступа (DAC, discretionary access control) являются основными и всегда активны.

Их использование предполагает, что владельцы объектов правильно распоряжаются правами доступа к находящимся в их владении объектам.

Например, пользовательские закрытые ключи, используемые службой W:[SSH], в каталоге ~/.ssh или ключи W:[GnuPG] в каталоге ~/.gnupg, и прочие секретные данные (подобные ключи доступа в банковские информационные системы)- должны быть недоступны никому, кроме их владельца.

Запускаемые пользователем программы выполняются от лица запустившего их пользователя и имеют доступ к файлам согласно установленным режимам или спискам доступа.

В примере из листинга ниже клиент ssh, браузер firefox и коммуникатор skype имеют абсолютно равные возможности по чтению и модификации пользовательского закрытого ключа ~/.ssh/id_rsa, тогда как настоящим «владельцем» ключей является только ssh.

Необходимость MAC

john@ubuntu:~$ ls -l .ssh

итого 8

-rw———  1  john  john    1675  нояб.     4   16:06 id_rsa
-rw-r—r—     1 john   john     393  нояб.     4    16:06 id_rsa.pub

john@ubuntu:~$ ps fux

USER                      PID    %CPU  %MEM   VSZ    RSS   TTY          STAT   START      TIME    COMMAND
john                    20650          0.0          0.1 13488 8576  pts/0        S           16:08          0:00     -bash
john                    20943          0.0          0.0 6668  2284  pts/0        S+         16:19          0:00     \_ ssh [email protected]

. . .                                        . . .                              . . .
john                    21094          13.1          1.5 592676 127820 pts/2   Rl+        16:27         0:09     /usr/lib/firefox/firefox

. . .                                        . . .                              . . .
john                    21790          29.7         2.1 575000 172084 ?           Sl           16:38        0:09      skype

Абсолютно естественно предполагать, что программы firefox и skype не имеют никаких намерений доступа к пользовательским ключам SSH.

Можно даже доверять программе firefox, штатно установленной из доверенного источника (дистрибутива), где она была изготовлена из открытых исходных текстов, подлежащих верификации. Однако нет никаких оснований доверять закрытому skype, поставляемому в бинарном виде.

Более того, предоставлять доступ программам firefox и skype к SSH-ключам пользователя нет никакой необходимости, во-первых, просто потому, что это выходит за рамки набора минимально необходимых условий их целевого функционирования.

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

Таким воздействиям особенно подвержены программы, использующие сетевой обмен с недоверенной внешней средой — клиенты и серверы сетевых служб операционной системы.

Тем временем, дискреционный подход и механизмы служат для разграничения доступа разных пользователей к файлам, но никак не предназначены для разграничения доступа программ одного и того же пользователя к разным файлам этого пользователя.

Для разграничения доступа субъектов — программ к объектам — файлам дерева каталогов используют так называемый мандатный (от англ, mandatory — обязательный или принудительный) подход (MAC, mandotary access control), предполагающий следование обязательным правилам доступа к файлам, назначаемым администраторами системы.

Правила доступа строятся на основе знания о внутреннем устройстве программ и представляют собой описание набора минимально необходимых условий их целевого функционирования.

Таким образом, в мандатных правилах, ограничивающих доступ к SSH-ключам пользователя, только программе ssh должен быть разрешен доступ для непосредственного выполнения своих прямых функций, а программам firefox и skype в доступе к SSH-ключам должно быть отказано.

Добавить комментарий