|
@@ -1,80 +1,100 @@
|
|
|
# Защита входа в систему (идентификация и аутентификация пользователей)
|
|
|
|
|
|
- Идентификация, аутентификация и авторизация – три процесса защищающие наши данные от доступа посторонних лиц.
|
|
|
- Индентификация - это процесс распознования пользователя по его индентификатору
|
|
|
- Аутентификация - это процедура проверки подлинности, док-ва что пользователь именно тот, за кого себя выдает
|
|
|
- Авторизация - предоставление определенных прав, после аутентификации
|
|
|
+ Подключаемые модули аутентификации (pluggable authentication modules, PAM) являются основной системой аутентификации в ОС семейства Unix, в т.ч. GNU/Linux. PAM пришел на смену встраиваемым механизмам аутентификации в различных приложениях (например, ранее в login была встроена собственная процедура аутентификации, проверяющая введенный пароль с паролем из /etc/passwd или хешем из /etc/shadow).
|
|
|
|
|
|
- Идентификация и аутентификация являются взаимосвязанными процессами распознавания и проверки подлинности субъектов. Именно от них зависит последующее решение системы, можно ли разрешить доступ к ресурсам системы конкретному пользователю или процессу.
|
|
|
+
|
|
|
|
|
|
- После идентификации и аутентификации субъекта выполняется его авторизация. Процесс идентификации и аутентификации показан на схеме:
|
|
|
+## CentOS 7
|
|
|
+ Если брать для примера одну из ОС семейства unix - CentOS 7, то она включает в себя управлениe идентификацией (Identity Management, IdM) — набор функций, предоставляющих централизованный и простой способ управления идентификаторами пользователей, машин и сервисов в больших Linux/Unix корпоративных инсталляциях. IdM предоставляет способ определения политик безопасности доступа для управления этими идентификаторами.
|
|
|
|
|
|
-
|
|
|
+ Основа управления идентификацией была разработана в рамках открытого проекта FreeIPA, объединяющего стандартные сетевые сервисы общего назначения в единую систему управления: PAM, LDAP, Kerberos, DNS, NTP и сервисами сертификации. Это позволяет системам на CentOS работать в качестве контроллеров доменов в среде Linux. Из-за того, что функция управления идентификацией встроена в CentOS – достаточно просто добавить управление политиками и идентификацией в ваш рабочий процесс.
|
|
|
|
|
|
- Для подтверждения своей подлинности субъект может предъявлять системе разные сущности. В зависимости от предъявляемых субъектом сущностей процессы аутентификации могут быть разделены на следующие категории:
|
|
|
+ Для многих организаций, Active Directory (AD) – центр управления идентификационными данными пользователей внутри предприятия. Все системы, к которым могут получать доступ пользователи AD, должны уметь работать с AD для выполнения аутентификации и проверки идентификационных данных.
|
|
|
|
|
|
-1. На основе знания чего-либо. Примерами могут служить пароль, персональный идентификационный код (PIN), а также секретные и открытые ключи, знание которых демонстрируется в протоколах типа запрос—ответ.
|
|
|
+-- Прямая интеграция
|
|
|
|
|
|
-2. На основе обладания чем-либо. Обычно это магнитные карты, смарт-карты, сертификаты и устройства touch memory.
|
|
|
+ Linux системы могут быть соединены с Active Directory напрямую с помощью компонента System Security Services Daemon (SSSD). Компонент выступает в качестве шлюза аутентификации и проверки идентификационных данных в центральное хранилище идентификаций.
|
|
|
|
|
|
-3. На основе каких-либо неотъемлемых характеристик. Эта категория включает методы, базирующиеся на проверке биометрических характеристик пользователя (голос, радужная оболочка и сетчатка глаза, отпечатки пальцев, геометрия ладони и др.) В данной категории не используются криптографические методы и средства. Аутентификация на основе биометрических характеристик применяется для контроля доступа в помещения или к какой-либо технике.
|
|
|
+
|
|
|
|
|
|
- При сравнении и выборе протоколов аутентификации необходимо учитывать следующие характеристики:
|
|
|
+-- Непрямая интеграция
|
|
|
+ Прямая интеграция ограничена использованием только аутентификации и идентификационных данных, относящихся к пользователям. Система не получает политики и данные, контролирующие доступ в корпоративных окружениях. Системы Linux могут получать политики (например на sudo), правила контроля доступа хоста, automount, netgroups, SELinux и другие возможности из центрального сервера идентификации. Сервер управления идентификацией обеспечивает централизованное управление системами Linux, давая им идентификаторы, права и предоставляя централизованно управляемые политики для Linux, перечисленные выше. В большинстве корпоративных окружений, пользователи Active Directory должны иметь доступ и к Linux ресурсам. Это может быть достигнуто с помощью установки доверенных отношений между серверами IdM и AD. Диаграмма ниже показывает как пользователи из леса Active Directory получают доступ к системам Linux, входя в домен IdM.
|
|
|
|
|
|
-1. Наличие взаимной аутентификации. Это свойство отражает необходимость обоюдной аутентификации между сторонами аутентификационного обмена.
|
|
|
+
|
|
|
|
|
|
-2. Вычислительная эффективность. Количество операций, необходимых для выполнения протокола.
|
|
|
+## Идентификация и аутентификация пользователей при работе подсистемы разграничения доступа в ОС Linux
|
|
|
|
|
|
-3. Коммуникационная эффективность. Данное свойство отражает количество сообщений и их длину, необходимую для осуществления аутентификации.
|
|
|
+ При построении подсистемы разграничения доступа в Linux важным этапом в процессе загрузки ОС является этап после загрузки системы по завершению процесса init при запуске системной утилиты login - т. е. этап непосредственно и/а пользователя в ОС. При этом саму подсистему разграничения доступа удобно строить на базе загружаемого модуля ядра Linux, этот модуль должен загружаться в ядро ОС на одном из последних этапов работы init, но до монтирования корневой файловой системы на запись.
|
|
|
+ После завершения работы процесса init модуль ядра будет находиться в состоянии ожидания каких-либо внешних воздействий (например, вызова какого-либо системного вызова и/или обращение к модулю из usermode-утилит) - при этом для правильной регистрации пользователя необходимо аутентифицировать его в т.ч. в модуле ядра (чтобы в нужный момент модуль ядра мог знать совершал ли вход в систему тот или иной пользователь и можно ли выполнять какие-либо процессы в ОС с его правами).
|
|
|
+ Для этого необходимо создать PAM-модуль аутентификации, а логика работы процедуры и/а должна стать следующей:
|
|
|
|
|
|
-4. Наличие третьей стороны. Примером третьей стороны может служить доверенный сервер распределения симметричных ключей или сервер, реализующий дерево сертификатов для распределения открытых ключей.
|
|
|
+- запускается утилита login
|
|
|
|
|
|
-5. Гарантии безопасности. Примером может служить применение шифрования и цифровой подписи.
|
|
|
+- утилита login делегирует функции и/а внешнему PAM-модулю, при этом:
|
|
|
|
|
|
- Классификация протоколов аутентификации:
|
|
|
+ конкретный PAM-модуль предварительно должен быть прописан в соответствующем конфигурационном файле (как правило /etc/pam.d/common_auth или /etc/pam.d/login в зависимости от ОС, PAM-модуль обычно должен прописываться вместо штатного модуля pam_unix.so);
|
|
|
+
|
|
|
+ PAM-модуль предварительно должен быть записан в каталог к другим PAM-модулям(/etc/security/).
|
|
|
|
|
|
-
|
|
|
+- PAM-модуль запрашивает у пользователя login (или аппаратный идентификатор) и пароль;
|
|
|
|
|
|
-## Классификация протоколов аутентификации
|
|
|
+- PAM-модуль рассчитывает хеш от предъявленных пользователем значений login (аппаратного идентификатора) и пароля и передает его модулю ядра по протоколу взаимодействия usermode-приложений с ядром ОС (протокол netlink);
|
|
|
|
|
|
- защищенных компьютерных сетей доступ клиента к серверу разрешается по паролю. Однако все чаще применяются более эффективные средства аутентификации, например, программные и аппаратные системы аутентификации на основе одноразовых паролей, смарт-карт, Р/УУ-кодов и цифровых сертификатов.
|
|
|
- Процедуру простой аутентификации пользователей в сети можно представить следующим образом. При попытке входа в сеть пользователь набирает на клавиатуре ПЭВМ свой идентификатор и пароль. Эти данные поступают для обработки на сервер аутентификации. В базе данных сервера по идентификатору пользователя находится соответствующая запись, из нее извлекается пароль и сравнивается с тем паролем, который ввел пользователь. Если они совпали, то аутентификация прошла успешно, пользователь получает легальный статус, а также права и ресурсы сети, которые определены для его статуса системой авторизации.
|
|
|
+- Модуль ядра ищет в своих структурах пользователя по login (аппаратному идентификатору) и сравнивает полученное от PAM значение хеша со значением в своей БД, при этом:
|
|
|
|
|
|
- Схема простой аутентификации с использованием пароля:
|
|
|
+ Если хеш совпадает - PAM-модулю по netlink от модуля ядра должно возвращаться имя пользователя, которому соответствует хеш в БД пользователей. Данного пользователя PAM-модуль пропускает и запускает его shell;
|
|
|
+ Если хеш не совпадает - PAM-модулю по netlink от модуля ядра возвращается указание вывести ошибку (код ошибки) и не аутентифицировать пользователя в системе (не запускать его сессию и shell в рамках этой сессии);
|
|
|
+ В любом из описанных случаях в модуле ядра в соответствующие структуры должны заноситься данные о:
|
|
|
+состоянии аутентифицированности в данный момент определенного пользователя
|
|
|
+событиях во время процедуры и/а (успешная/неудачная попытка и/а и т.п..)
|
|
|
|
|
|
-
|
|
|
|
|
|
- Односторонняя аутентификация предусматривает обмен информацией только в одном направлении. Данный тип аутентификации позволяет:
|
|
|
+ Также необходимо понимать, что наиболее важным элементов всей подсистемы разграничения доступа является наличие аппаратного компонента, с помощью которого на ранних этапах загрузки будет осуществляться:
|
|
|
|
|
|
-— подтвердить подлинность только одной стороны информационного обмена;
|
|
|
-— обнаружить нарушение целостности передаваемой информации;
|
|
|
-— обнаружить проведение атаки типа «повтор передачи»;
|
|
|
-— гарантировать, что передаваемыми аутентификационными данными может воспользоваться только проверяющая сторона.
|
|
|
+ контроль целостности важных объектов, используемых в дальнейшем подсистемой разграничения доступа (модуль ядра, БД пользователей, PAM-модули и прочие утилиты, взаимодействующие в модулем ядра);
|
|
|
|
|
|
- Двусторонняя аутентификация по сравнению с односторонней содержит дополнительный ответ проверяющей стороны доказывающей стороне, который должен убедить ее, что связь устанавливается именно с той стороны, которой были предназначены аутентификационные данные.
|
|
|
+ контроль целостности файлов, в которых прописывается порядок загрузки ОС и вставлена загрузка модуля ядра до монтирования корневой файловой системы на запись (например, /boot/initrd, порядок загрузки записывается в initrd в файл init);
|
|
|
|
|
|
- В зависимости от используемых криптографических алгоритмов протоколы строгой аутентификации можно разделить на следующие группы:
|
|
|
+ контроль целостности ядра ОС (например, /boot/vmlinux);
|
|
|
|
|
|
-
|
|
|
+ контроль целостности настроек загрузчика (например, /boot/grub/grub.cfg) и самого загрузчика, записанного в загрузочный сектор раздела.
|
|
|
|
|
|
- В качестве биометрических признаков, которые активно используются при аутентификации потенциального пользователя, можно выделить следующие:
|
|
|
+ Без таких контрольных процедур при использовании существующих штатных средств защиты в ОС всегда существует возможность обхода или отключения этих средств защиты на ранних этапах загрузки, что нивелирует любые механизмы защиты, реализуемые с помощью подсистемы разграничения доступа в ОС, т. к. появляется возможность данную подсистему просто отключить.
|
|
|
+
|
|
|
+## Регистрация в системе
|
|
|
+
|
|
|
+ В правильно установленной операционной системе Linux должна существовать как минимум одна учётная запись для обычного пользователя. Во всех дальнейших примерах у нас будет участвовать Мефодий Кашин, владелец учётной записи "methody" в системе "Some Linux". Вы можете пользоваться для выполнения примеров любой учётной записью, которая создана в Вашей системе (естественно, кроме root).
|
|
|
+
|
|
|
+` Welcome to Some Linux / tty1
|
|
|
+localhost login: bebra
|
|
|
+
|
|
|
+Password:
|
|
|
+Login incorrect
|
|
|
+
|
|
|
+login: `
|
|
|
+
|
|
|
+В ответ на это система запрашивает пароль
|
|
|
+
|
|
|
+` login: bebra
|
|
|
+Password:
|
|
|
+[bebra@localhost bebra]$ `
|
|
|
+
|
|
|
+ В этот раз регистрация прошла успешно, о чём свидетельствует последняя строка примера - приглашение командной строки. Приглашение -- это подсказка, выводимая командной оболочкой и свидетельствующая о том, что система готова принимать команды пользователя. Приглашение может быть оформлено по-разному, более того, пользователь может сам управлять видом приглашения, но почти наверняка в приглашении содержатся входное имя и имя хоста -- в нашем примере это "bebra" и "localhost" соответственно. Заканчивается приглашение чаще всего символом "$".
|
|
|
+
|
|
|
+## Идентификация
|
|
|
+
|
|
|
+ Когда система выводит на экран приглашение командной строки после того, как правильно введены имя пользователя и пароль, это означает, что произошла идентификация пользователя (authentication, "проверка подлинности"). Пароль может показаться излишней сложностью, но у системы нет другого способа удостовериться, что за монитором находится именно тот человек, который имеет право на использование данной учётной записи.
|
|
|
|
|
|
-1. отпечатки пальцев;
|
|
|
-2. геометрическая форма кисти руки;
|
|
|
-3. форма и размеры лица;
|
|
|
-4. особенности голоса;
|
|
|
-5. узор радужной оболочки и сетчатки глаз;
|
|
|
-6. «клавиатурный почерк»;
|
|
|
-7. расположение зубов (стоматологическая матрица ротовой полости человека).
|
|
|
|
|
|
|
|
|
## Литература
|
|
|
-[Хабр](https://habr.com/ru/company/dataart/blog/262817/)
|
|
|
+[okbsapr](https://www.okbsapr.ru/library/publications/kanner_2012_3/)
|
|
|
+[Хабр](https://habr.com/ru/company/infobox/blog/230781/)
|
|
|
[studref](https://studref.com/334328/informatika/identifikatsiya_autentifikatsiya)
|
|
|
|
|
|
## Вопросы
|
|
|
1. [Что такое аутентификация] ** Это процедура проверки подлинности, док-ва что пользователь именно тот, за кого себя выдает**
|
|
|
2. [Что такое Авторизация] ** Процедура предоставления субъекту определенных прав доступа к ресурсам системы после прохождения им процедуры аутентификации. **
|
|
|
-3. [К биометрическим системам защиты информации относятся системы идентификации по...] ** Отпечатки пальцев,форма и размеры лица,особенности голоса,узор радужной оболочки и сетчатки глаз и тд... **
|
|
|
-4. [В чем разница между двусторонней аутентификации и односторонней] **Двусторонняя аутентификация по сравнению с односторонней содержит дополнительный ответ проверяющей стороны доказывающей стороне, который должен убедить ее, что связь устанавливается именно с той стороны, которой были предназначены аутентификационные данные. **
|
|
|
-5. [Что включает в себя односторонняя аутентификация] **подтверждение подлинности только одной стороны информационного обмена;обнаружение нарушений целостности передаваемой информации;обнаружение проведения атаки типа «повтор передачи»**
|
|
|
+3. [Что такое PAM модуль] ** основная система аутентификации в ОС семейства Unix**
|
|
|
+4. [Что такое идентификатор пользователя] **Уникальное число, однозначно идентифицирующее учётную запись пользователя в Linux**
|
|
|
+5. [Что такое входное имя и имя хоста] **доменное имя, назначенное хост-компьютеру; имя, используемое при создании учетной записи**
|