
Суперпользователь
Презентация 5-08: суперпользователь
Пользователь root (он же суперпользователь) имеет нулевые UID и GID и играет роль доверенного субъекта UNIX. Это значит, что он не подчиняется законам, которые управляют правами доступа, и может по своему усмотрению эти права изменять. Большая часть общезначимых (не принадлежащих конкретным пользователям) компонентов системы доступна для модификации только суперпользователю.
Как было сказано ранее (см. раздел «Беглый взгляд на архитектуру UNIX»), в UNIX существует уровень доступа ядра и уровень доступа системы. Суперпользователь работает на уровне доступа ядра, так что он является, по сути, неотъемлемым компонентом самой системы.
Многие команды должны исполняться только от имени суперпользователя, так как в них производится взаимодействие с частями ядра, отвечающими за взаимодействие с аппаратурой, правом доступа и т. п. Если же такие команды разрешается запускать простым пользователям, применяется рассмотренный выше механизм подмены идентификатора пользователя.
Администрирование в UNIX (т. е. управление общезначимыми характеристиками системы) требует привилегий суперпользователя. При работе с повышенными привилегиями, в особенности от имени пользователя root следует быть очень осторожным: выполнение неверной команды может привести к выходу системы из строя и утрате информации. Поэтому даже администраторы никогда не работают в командной оболочке с правами суперпользователя всё время, а переходят в режим суперпользователя только тогда, когда это действительно необходимо (например, с помощью команды su).
Аутентификация пользователей
Презентация 5-09: вход пользователя в систему
В UNIX сеанс работы пользователя начинается с его аутентификации и заканчивается его выходом из системы. При входе в систему выполняется следующая последовательность действий (см. Рисунок 2.20, «Регистрация пользователя в системе»):
-
процесс getty ожидает реакции пользователя на одной из терминальных линий, в случае активности пользователя выводит приглашение ввести регистрационные данные пользователя;
-
после ввода имени пользователя запускается программа login, которая проверяет подлинность данных пользователя. Стандартным механизмом является проверка пароля, заданного для данного пользователя;
-
убедившись, что пароль введён правильно, login запускает командную оболочку с установленными UID и GID данного пользователя. Таким образом, права доступа любого процесса (действительного субъекта), запущенного пользователем в этом сеансе работы, будут определяться правами номинального субъекта UID+GID.
Рисунок 2.20. Регистрация пользователя в системе
При работе регистрации на удалённом компьютере роль getty исполняет сетевой демон, например ssh.
В современных UNIX-системах существуют расширения систем авторизации и аутентификации, позволяющие интегрировать в процесс аутентификации любые дополнительные процедуры. Например, в Linux-системах этот механизм называется подключаемые модули аутентификации (Pluggable Authentication Modules, PAM). Рассмотрение этих средств выходит за рамки данного курса.
Управление пользователями и правами доступа
База данных пользователей системы
Презентация 5-10: база данных пользователей
Все данные о пользователях UNIX хранит в файле /etc/passwd в текстовом виде. Каждому пользователю соответствует одна строка, поля которой разделяются двоеточиями:
входное имя:x:UID:GID:полное имя:домашний каталог:стартовый shell
Пример 2.4. Пример файла /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
adm:x:3:4:adm:/var/adm:/bin/false
...
Каждый пользователь явно связан с одной из групп — это основная группа пользователя. Это сделано для того, чтобы каждый пользователь состоял хотя бы в одной группе. Все новые файлы, создаваемые процессами этого пользователя, в качестве группы-владельца будут получать основную группу данного пользователя.
Из примера видно, что некоторые пользователи имеют «неправильные» командные оболочки, такие как /bin/false, работа в которых невозможна (команда false только и делает, что возвращает ошибку и немедленно завершается). Это сделано специально для того, чтобы исключить возможность входа таких пользователей в систему, а соответствующие учётные записи в /etc/passwd принадлежат псевдопользователям, от имени которых выполняются некоторые системные задачи и которыми не пользуются реальные люди.
Пароли на вход в систему пользователей в UNIX не хранятся в открытом виде, хранятся только их хэши (набор байт, получаемый из пароля с помощью односторонней функции). Даже если злоумышленник получит значение этого хэша, ему придется подбирать пароль, применяя данную одностороннюю функцию к различным словам и сравнивая со значением хэша. Часто хэши хранятся в специальном файле (например, /etc/shadow), доступ к которому разрешен только системе, так что перебор вообще не возможен.
Аналогичным образом информация о группах хранится в файле /etc/group. Каждой строке файла соответствует информация о группе: её имя, числовой идентификатор и список пользователей, входящих в эту группу.
В современных версиях операционной системы Linux используется альтернативный механизм хранения паролей — TCB. Основное отличие состоит в том, что содержимое файла /etc/shadow «размазывается» по множеству каталогов, так что хэш пароля каждого пользователя хранится в каталоге, к которому только он один имеет доступ. Это позволяет ограничить привилегии утилиты passwd, с помощью которой пользователь может сам себе изменить пароль. При использовании схемы TCB для выполнения этой операции не требуется повышение привелений passwd (получение прав суперпользователя) с помощью атрибута SetUID.
Изменение информации о пользователях, так же как и добавление новых пользователей, может производиться прямым редактированием этих файлов, однако более корректным способом является использование специальных утилит, которые рассматриваются далее.
Изменение базы данных пользователей
Для добавления и удаления пользователей и групп существует набор специальных утилит: useradd, userdel, groupadd, groupdel. Эти команды доступны только суперпользователю и имеют единственный обязательный параметр: имя пользователя или группы.
С помощью команд usermod и groupmod можно изменять информацию в базах данных пользователей и групп. Эти команды также может выполнять только администратор системы.
Команда passwd позволяет простым пользователям изменять свой системный пароль, а суперпользователю — изменять пароль любого из пользователей системы.
Изменение прав доступа
Для изменения владельца файла или группы владельцев используются команды chown и chgrp. Из соображений безопасности эти утилиты доступны только суперпользователю.
Владелец файла может изменять права доступа к своему файлу с помощью утилиты chmod.
Ограничения сеанса пользователя
Презентация 5-11: ограничения сеанса пользователя
В UNIX существует ряд динамических ограничений, накладываемых на процесс аутентификации пользователя и запущенные им программы. Ограничения можно разделить на следующие группы:
ограничения входа в систему
Вход пользователя в систему может быть ограничен видом терминала, удалённым адресом (в случае сетевого входа в систему), временем работы. Для задания этих ограничений в некоторых UNIX-системах используется файл /etc/login.access
ограничения запускаемых процессов
Процессы пользователей могут быть ограничены по одному из следующих параметров: объём используемой памяти, число одновременно открытых файлов, число запускаемых процессов и т. п. Для задания этих ограничений в некоторых UNIX-системах используется файл /etc/limits.
ограничения использования диска
Дисковые квоты позволяют ограничить объём используемого пространства жёсткого диска для каждого из пользователей системы. Для настройки данного ограничения необходима утилита quota, а также поддержка квот в выбранной файловой системе. При каждой записи на диск ядро операционной системы производит проверку квот на объём и число файлов для данного субъекта.
Ограничения действуют на протяжении всего сеанса работы пользователя.
Резюме
Презентация 5-12: резюме
Основой информационной безопасности любого предприятия является политика безопасности, которая включает в себя технические, организационные и правовые аспекты.
Основными элементами политики безопасности являются субъект, объект и отношения между ними. Выделяют ряд моделей доступа, среди которых мандатный доступ, списки доступа (субъект-объектная модель) и произвольное управление доступом (субъект-субъектная модель).
В операционной системе UNIX номинальным субъектом является учётная запись пользователя, действительным субъектом — процесс пользователя, а объектом — файл. Три основных вида прав доступа: чтение, запись и исполнение, а также дополнительные права (подмены субъекта и разделяемости каталога). Права доступа указываются для трех групп: владельца объекта, группы-владельца и всех остальных.
Аутентификация пользователя (сопоставление ему номинального субъекта) при входе в систему состоит в проверке пароля, соответствующего входному имени пользователя.
Информация о пользователях системы хранится в специальном файле /etc/passwd. Существует набор системных утилит для управления базой данных пользователей и групп.
В UNIX можно устанавливать динамические ограничения на сеанс пользователя.