ВВЕДЕНИЕ .............................................................................................................. 4
ГЛАВА 1. ШТАТНЫЕ СРЕДСТВА БЕЗОПАСНОСТИ ОС LINUX ................. 6
2
3.3. Уязвимости механизма Capabilities ..................................................... 41
ЗАКЛЮЧЕНИЕ ..................................................................................................... 54
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ ............................................. 55
ПРИЛОЖЕНИЕ ..................................................................................................... 57
3
ВВЕДЕНИЕ
В настоящее время информационные системы (ИС) являются одним из
важнейших факторов обеспечения эффективности работы как коммерческих,
так и государственных организаций. Широкое использование ИС
обусловлено простотой и удобством обращения относительно традиционных
способов взаимодействия с информацией. Легко увидеть, что по причине
повсеместного внедрения и распространения ИС для задач хранения,
обработки и передачи информации, актуальность защиты ИС является
важной задачей на каждом предприятии, где она внедрена. Аудит
безопасности осуществляет объективную оценку уровня защищенности ИС,
что является одним из ключевых параметров для построения и модернизации
средств защиты информации в ИС.
Неотъемлемой частью ИС являются операционные системы,
установленные на ЭВМ, являющихся частью информационной системы, и
которые предоставляют инструментарий для работы с информационным
ресурсом ЭВМ. В настоящее время наиболее известными являются два
семейства операционных систем – Windows и UNIX-подобные системы.
Наиболее популярным свободным UNIX-подобным ядром является ядро
Linux, на основе которого создано множество операционных систем,
объединенных в семейство Linux. При этом система Windows шире
распространена в пользовательской среде для решения прикладных задач, а
ОС семейства Linux чаще используются на серверных машинах или на ЭВМ,
выполняющих производственные задачи.
Для нормальной работы предприятия важно своевременно находить и
осуществлять эффективное реагирование на найденные уязвимости ИС –
слабые места системы, с помощью которых можно нарушить
конфиденциальность, целостность и доступность информационных ресурсов.
Для нахождения таких слабых мест используются специальные прикладные
программы – сканеры уязвимостей и средства аудита. Использование таких
4
программ оказывает неоценимую помощь в обеспечении информационной
безопасности автоматизированной системы.
Также крайне важно осуществлять мониторинг средств защиты
информации в автоматизированной системе на предмет правильной их
организации и функционирования.
Штатным средством аудита в ОС Linux является утилита auditd.
Главным механизмом ее работы является отслеживание системных вызовов.
Это подразумевает в качестве результата определение факта реализации (или
попытки реализации) существующей в системе угрозы, но до этого момента
наличие угроз остается незамеченным со стороны средства аудита. Поэтому
является актуальным создание средства аудита, которое будет находить
уязвимости в системе, которые могут привести к нарушению
информационной безопасности. Такое средство позволит получить
возможность устранить угрозы ИБ до их реализации.
Целью дипломной работы является разработка программного
обеспечения для проведения аудита информационной безопасности
операционных систем семейства Linux.
Для достижения цели необходимо решить следующие задачи:
1. Анализ подсистем ОС семейства Linux, требующих аудита с целью
выявления возможных уязвимостей.
2. Обзор существующих средств и классификация методов проведения
аудита.
3. Изучение системы разработки приложений на основе сценариев
Tcl/Tk.
4. Создание программного обеспечения для проведения аудита
безопасности ОС семейства Linux.
5. Тестирование разработанного ПО, сравнение его работы со штатными
средствами аудита.
5
ГЛАВА 1. ШТАТНЫЕ СРЕДСТВА БЕЗОПАСНОСТИ ОС LINUX
1.1. Базовая система контроля доступа в Linux
В качестве базового варианта системы контроля доступа в
операционной системе UNIX используется достаточно простая модель
доступа, в которой для каждой пары «субъект-объект» задается режим
доступа. Для задания прав доступа у каждого объекта файловой системы
выделяется один владелец-пользователь и один владелец-группа.
Система обеспечивает дискреционную модель контроля доступа на
следующей основе:
− Каждый объект (файл) имеет владельца, пользователя и группу,
которые могут изменять доступ к данному объекту для себя, других
пользователей и групп.
− Каждый объект имеет атрибуты доступа на чтение (r), запись (w) и
исполнение (x) для трёх типов пользователей: владельца-
пользователя (u), владельца-группы (g), остальных пользователей
(o) – (u=rwx, g=rwx, o=rwx).
− Субъект может входить в несколько групп [1].
Владелец-пользователь определяет права доступа к объекту как
разрешения на чтение, запись и выполнение.
Для файлов право на чтение предоставляет доступ к информации,
которая находится в файле, право записи – доступ к изменению содержимого
файла, а право исполнения предоставляет возможность запуска файла как
программы из командной оболочки или через системный вызов exec().
Для каталогов право на чтение предоставляет возможность
просматривать его содержимое (перечень объектов каталога), право записи
дает возможность создавать и удалять файлы в этом каталоге (изменения
данного перечня). А право исполнения для каталога в данном случае
означает право переходить в этот каталог, то есть дает возможность
получения доступа к его объектам и их метаданным [3].
6
Каждый пользователь в системе определен с помощью специального
уникального идентификатора – UID, ему сопоставляются несколько групп,
которые, в свою очередь, определяются с помощью GID – идентификатора
группы.
Права доступа определяются для трех групп пользователей:
Владелец-пользователь;
Пользователи, являющиеся частью владельца-группы;
Остальные пользователи – не попавшие в первые две группы.
Права определяются тремя тройками бит в порядке rwx (рис. 1) –
наличие соответствующего права показывает значение бита, равное 1,
отсутствие права – значение 0.
10
1.3. Механизм Linux Security Modules
Linux Security Modules (LSM) — фреймворк, добавляющий в Linux
поддержку различных моделей безопасности. LSM является частью ядра
начиная с Linux версии 2.6. На основе LSM разработаны модули
безопасности SELinux и AppArmor, которые будут рассмотрены далее.
Модули работают параллельно с базовой моделью безопасности Linux
— дискреционной системой контроля доступа. Проверки LSM вызываются
на действия, разрешенные дискреционной СКД.
Применять механизм LSM можно по-разному. В большинстве случаев
это добавление мандатного управления доступом (как, например, в случае с
SELinux). Сами по себе LSM не обеспечивают систему определенной
дополнительной безопасностью, а лишь являются интерфейсом для её
поддержки. Система LSM обеспечивает реализацию функций перехватчиков,
которые хранятся в структуре политик безопасности, охватывающей
основные операции, защиту которых необходимо обеспечить. Контроль
доступа в систему осуществляется благодаря настроенным политикам. Кроме
того, можно придумать собственную модель безопасности, реализовать ее в
виде модуля и легко внедрить, используя фреймворк [6].
1.4. Система контроля доступа SELinux
SELinux (Security-Enhanced Linux) — реализация системы мандатного
контроля доступа, которая может работать параллельно с классической
избирательной системой контроля доступа.
С помощью SELinux можно задать явные правила того, как субъекты
(пользователи и программы) могут обращаться к объектам системы (файлы и
устройства). Таким образом, можно ограничить программы, прописав
возможности их поведения в виде политики, а операционная система
обеспечит её соблюдение.
В SELinux права доступа определяются наборами правил, или
политиками. Политики работают на уровне системных вызовов и
обрабатываются ядром, но можно реализовать и на уровне приложения.
11
Политики описываются при помощи специального языка описания правил
доступа [7].
Важно помнить, что SELinux срабатывает только после классической
схемы доступа. То есть, если есть некий файл, владелец/группа root:root и
права 0600, то какие бы SELinux-метки не стояли, простой пользователь не
сможет прочитать этот файл.
Алгоритм работы представлен на рисунке 3.
13
приложению в рамках системы предоставляются минимально необходимые
для работы возможности и привилегии. Другими словами, AppArmor
помещает приложение в своеобразную «песочницу», ограниченную строго
определенными возможностями, благодаря чему ущерб, нанесенный системе
через скомпрометированную программу в случае инцидента безопасности,
ограничивается лишь содержимым этой «песочницы» [10].
С архитектурной точки зрения, AppArmor представляет собой
прослойку между пользовательскими приложениями и ядром операционной
системы. Играя роль посредника, программа обрабатывает разрешаемые
профилем действия (обращения к файлам и вызовы POSIX), блокируя все
остальные. При этом выбор профиля для приложения делается на этапе
вызова функции exec().
15
быть использована злоумышленником, но при этом она же дает некоторые
широкие возможности [10].
Также отметим, что AppArmor дополняет дискреционную модель
доступа Unix: если доступ был разрешен системой, окончательное решение
остается за AppArmor, который сверяет разрешения со своей политикой
управления и доступа, в случае же неразрешения доступа дискреционной
системой, AppArmor доступа также не даст.
1.6. Механизм Capabilities
Capabilities (возможности) - это средства для управления
привилегиями, которые в традиционных Unix-подобных системах были
доступны только процессам, запущенным с правами root (uid = 0) [12].
Capabilities обеспечивают детальный контроль над разрешениями
суперпользователя, что позволяет избежать использования пользователя root.
Этот механизм позволяет дать процессу права на выполнение каких-
либо действий, недоступных обычному пользователю (например, изменение
системного времени, прямой доступ к аппаратуре, использование
зарезервированных портов TCP/UDP (номера меньше 1024), блокировка
страниц в физической памяти), но в то же время не предоставлять этому
процессу полный набор прав root.
Для того, чтобы выполнять проверки на соответствие прав, обычные
реализации Unix имели две категории процессов: привилегированные
процессы (privileged, у них EUID равен 0, соответствущий
суперпользователю root) и непривилегированные процессы (unprivileged, у
них EUID не равен 0). Привилегированные процессы осуществляют все
проверки прав в ядре, в то время как непривилегированные процессы
являются объектом для полноценной проверки всех прав на основе
параметров процесса (обычно: действующий идентификатор пользователя
UID, действующий идентификатор группы GID и список дополнительных
групп).
16
Начиная с ядра 2.2, Linux обеспечивает в системе capabilities, частичное
разделение привилегий, традиционно ассоциированных с
суперпользователем, в отдельный блок, который может быть независимо
включен или выключен.
С использованием этого механизма появляется возможность для
разработчиков программного обеспечения заменить использование мощного
атрибута setuid в системном бинарном файле более минималистичным
набором capabilities. Многие пакеты используют capabilities, такие как
CAP_NET_RAW, используемый для двоичного файла ping, предоставляемого
пакетом iputils. Это позволяет, например, выполнять ping обычным
пользователем (как в методе setuid), одновременно ограничивая последствия
для безопасности потенциальной уязвимости в ping.
Каждый процесс имеет три набора возможностей, содержащих ни
одного или несколько из перечисленных возможностей [12]:
− Effective (действующие): возможности используются ядром для
выполнения проверок прав процессов.
− Permitted (разрешенные): возможности, выделенные процессу
(например, ограниченный расширенный набор для действующего и
наследуемого наборов). Если процесс сбрасывает возможность из его
разрешенного набора, то он никогда не обретет ее повторно (пока не
исполнится программа set-UID-root).
− Inherited (унаследованные): возможности, зарезервированные через
execve(2).
В текущей реализации процессу выдаются все действующие и
разрешенные возможности (объекты для операции по ограничению набора
возможностей описаны ниже) при исполнении программы set-UID-root, или
если процесс с EUID равным 0 исполняет новую программу.
17
ГЛАВА 2. АУДИТ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ
2.1. Общие положения
2.1.1. Понятие аудита
Определение аудита и связанных с ним понятий приведено в ГОСТ Р
ИСО 19011-2012. Руководящие указания по аудиту систем менеджмента.
Аудит (audit): Систематический, независимый и документируемый
процесс получения свидетельств аудита и объективного их оценивания с
целью установления степени выполнения согласованных критериев аудита.
Критерии аудита (audit criteria): Совокупность политик, процедур или
требований, используемых в качестве эталона, в соотношении с которым
сопоставляют свидетельства аудита, полученные при проведении аудита.
Свидетельство аудита (audit evidence): Записи, изложение фактов или
другая информация, которые связаны с критериями аудита и могут быть
проверены. Свидетельство аудита может быть качественным или
количественным.
Выводы (наблюдения) аудита (audit findings): Результаты оценки
собранных свидетельств аудита на соответствие критериям аудита.
19
Мероприятия аудита по форме могут быть классифицированы
следующим образом:
− организационно-нормативным – при этом варианте осуществляются
проверки организационных мероприятий, направленных на
обеспечение информационной безопасности, а также нормативно-
правовая база, принятая в организации по данному направлению;
− техническим – при этом варианте осуществляются проверки средств и
методов обеспечения информационной безопасности.
По степени воздействия на объект аудита, мероприятия могут быть
классифицированы на:
− пассивные;
− активные.
− легальные;
− нелегальные.
− внешний;
− внутренний.
21
основанием для проведения проверки является оформленное требование
руководства организации.
В том случае, если аудит является внутренним, целью проведения
именно аудита с привлечением сторонних организаций является повышение
независимости, объективности и профессиональной компетентности
проверки, а также получение независимого заключения профессиональных
аудиторов по международным стандартам.
Внутренний аудит – проводится средствами сотрудников организации
без привлечения сил извне. Основанием для его проведения являются
внутренние регламентирующие документы компании, в которых может быть
прописано требование к такому аудиту как к непрерывному состоянию
проверки системы. При этом группа аудиторов должна выбираться из тех
сотрудников, которые не принимали участия в разработке и внедрении
проверяемой системы и управлении этой системой.
23
Недостатком такого подхода является возможное игнорирование
особенностей конкретной системы и контекста ее функционирования.
Официальный отчет, подготовленный в результате проведения данного
вида аудита, включает следующую информацию:
− степень соответствия проверяемой информационной системы
выбранным стандартам;
− степень соответствия собственным внутренним требованиям
компании в области информационной безопасности;
− количество и категории полученных несоответствий и замечаний;
− рекомендации по построению или модификации системы обеспечения
информационной безопасности, позволяющие привести её в соответствие с
рассматриваемым стандартом;
− подробная ссылка на основные документы заказчика, включая
политику безопасности, описания процедур обеспечения информационной
безопасности, дополнительные обязательные и необязательные стандарты и
нормы, применяемые к данной компании.
24
− Международный стандарт ISO/IEC 17799 «Информационные
технологии. Управление информационной безопасностью»
(Information Technology — Information Security Management).
− Международный стандарт WebTrust.
2.2.3 Комбинирование анализа рисков и стандартов
Комбинирование, как анализа рисков, так и стандартов
информационной безопасности является наиболее эффективным подходом к
проведению аудита [15]. В этом случае стандарты определяют базовые
требования, которые предъявляются к защите информации в системе. А
уточнение требований к системе на основе особенностей ее
функционирования производится на основе анализа рисков. Данный подход
является менее трудоемким, чем аудит, проводящийся на основе анализа
рисков, потому что основная часть требований к системе защиты уже
описана в стандартах ИБ, и при этом подходе устранен недостаток анализа
стандартов ИБ, а именно того, что в рамках использования требований
стандарта могут игнорироваться особенности конкретной исследуемой
системы.
Вместе с этими тремя подходами отдельно выделяют, так называемый,
«тест на проникновение». В отличие от вышеупомянутых подходов, этот
является разновидностью именно экспериментального исследования объекта,
которое проводится с целью определения недостатков системы защиты или
новых уязвимостей объекта аудита.
26
В связи с тем, что система аудита является низкоуровневым элементом
операционной системы Linux, для ее использования требуются серьезные
познания операционной системы и анализ файлов системных журналов. Но
при этом с ее помощью системный администратор может отследить все
события, которые могут быть трактованы как вызванные действиями
нарушителей систем безопасности.
Отметим особенности системы аудита, которые можно отнести к ее
недостаткам.
Аудит системы через отслеживание системных вызовов подразумевает
в качестве результата определение фактов несанкционированного
воздействия на систему и выявление нарушителей, осуществляющих такие
воздействия. То есть при использовании этого средства аудита возможность
определить уязвимость в системе появляется только после использования
нарушителем этой уязвимости, а именно когда нарушитель воспользуется
уязвимостью чтобы осуществить какой-либо из контролируемых auditd
системный вызов. При этом кроме устранения уязвимости может
потребоваться еще и устранение последствий ее использования
нарушителем.
Также важным моментом является тот факт, что auditd работает
постоянно согласно добавленным правилам. При этом если отслеживать
большое количество потенциальных уязвимостей, количество правил может
сильно разрастись и привести к серьезной загруженности системы, что может
помешать ее нормальной работе.
Разрабатываемое средство, не будучи направленным на отслеживание
конкретных попыток реализации угроз, позволяет выявить наличие в системе
определенного набора слабых мест, таких как объекты с потенциально
неправильно настроенными параметрами доступа, до их использования
нарушителем. После использования средства у администратора системы
будет возможность предотвратить несанкционированные действия путем
устранения уязвимости до реализации связанной с ней угрозы.
27
Также оно в отличие от auditd выполняется однократно и может быть
использовано регулярно, например, в нерабочее время без ущерба
работоспособности системы.
28
ГЛАВА 3. УЯЗВИМОСТИ ПОДСИСТЕМ БЕЗОПАСНОСТИ ОС LINUX
3.1. Проблемы дискреционной системы контроля доступа
Механизм дискреционного разграничения доступа является основным
механизмом контроля доступа в ОС Linux. Данный механизм реализуется в
виде прав доступа для файлов (объектов) ОС. Он является одним из
важнейших и наиболее серьезно освоенных механизмов разграничения
доступа. Также стоит отметить, что именно этот механизм работает первым
при попытке получения доступа к объекту файловой системы, что
накладывает на него важное требование: необходимо предоставить не
меньше прав, чем необходимо для корректной работы, так как другие
средства контроля доступа не могут добавить права, не предоставленные
дискреционной системой. В том числе в связи с этим здесь часто возникают
ошибки неверной установки прав на чтение, запись и исполнение тех или
иных видов файлов. Также возможны ситуации игнорирования
определенных частных случаев работы с вложенными каталогами и файлами
при некоторых настройках прав предшествующих каталогов.
Ошибочные установки прав доступа представляют собой различные
угрозы, при реализации которых может быть нарушены свойства
конфиденциальности, целостности и доступности объектов файловой
системы.
31
4. Проверка объектов, для которых в качестве владельца и группы-
владельца указаны объекты nobody и nogroup соответственно, что означает
отсутствие соответствующих характеристик объекта. При такой
конфигурации возникает сложность при управлении объектом и угроза
осуществления атак на операционную систему через такой файл. Проверка
уязвимости осуществляется с помощью команды find с опциями -user и –
group.
5. Поиск в домашних каталогах пользователей таких файлов, у
которых владелец домашнего каталога не является владельцем файла. При
такой ситуации в домашнем каталоге появляются файлы, управление
которыми со стороны владельца домашнего каталога становится
затруднительным. Проверка уязвимости осуществляется также с помощью
команды find с опцией –user.
6. Проверка разрешений для пользователей, описанных в файле
/etc/sudoers. Системный администратор может разрешить некоторым
пользователям специфические действия, необходимые для их работы
(например, осуществление некоторых команд, доступных только
суперпользователю, без ввода пароля root). При этом следует
контролировать, не превышены ли установленные разрешения. Проверка
уязвимости осуществляется командой sudo –lU.
7. Поиск объектов с определенными правами, которые не отвечают
требованиям безопасности. При этом аудитор вводит два (в реализуемом
варианте программного обеспечения восьмеричных) числа — маску
интересующих прав и собственно эти права. Например, при маске 0721 и
правах 0600 будет осуществлен поиск файлов с правами rw- для владельца,
отсутствием права записи для группы и отсутствием права на выполнение
для остальных пользователей. Также существует возможность выбрать
определенный тип файлов, права для которых будут исследоваться.
32
Вариантами данного поиска, которые можно считать стандартными
и требующими постоянного контроля, являются следующие случаи:
33
каталога. Неправильное наследование при этом может привести к тому, что у
некоторых пользователей будет больше прав, чем необходимо. Поиск файлов
типа «каталог» с маской 2000 и правами 2000.
6. Поиск файлов с установленным Sticky bit. При его наличии файлы
из каталога не могут быть удалены пользователями, не являющимися его
владельцами. Для общесистемных каталогов наличие такого бита означает
нарушение равенства использования объектов в системе. Для этого случая
осуществляется поиск файлов типа «каталог» с маской 1000 и правами 1000.
34
getfacl -R -s -p $dir | sed -n 's/^# file: //p'
2. Проверка наличия файлов по условию полного доступа по маске
(rwx). В этом случае возможна передача управления объектом субъекту,
получившему привилегии ACL. Для этого используется команда:
getfacl -R -s -p $dir | grep -e '^# file: *' -e 'mask∷*'
и после этого полученный список анализируется средствами Tcl.
3. Проверка наличия субъекта (или субъекта-группы) с полным
доступом (rwx) через механизм ACL. Осуществляется с помощью команды:
getfacl -R -s -p $dir
и последующей фильтрацией вывода по правам пользователей и групп и
анализом полученного списка.
35
мандатной системы требует гораздо больших усилий, в связи с чем могут
возникать ошибки этой настройки, что влечет неверное функционирование
механизмов вплоть до того, что уязвимостей может стать не меньше, чем
было до установки данных механизмов.
36
2. Проверка контекстов SELinux для файлов. Производится просмотр
пользователей SELinux для файлов исследуемых каталогов. Целью поиска
является нахождение пользователей root для контекстов SELinux, что
определяет места в системе, требующие отчетности пользователю root.
Проверка уязвимости осуществляется с помощью команды:
ls -Z
3. Проверка контекстов SELinux для процессов. Осуществляется
поиск запущенных от имени суперпользователя процессов. Эти процессы в
связи со своими привилегиями требуют пристального внимания, так как
имеют особую важность для работы системы. Используемая команда:
ps –aeZ | grep –s 'root'
4. Проверка политик для приложений. При этом осуществляется
отслеживание включенных и выключенных политик с помощью команды:
getsebool -a | sed 's/--> //' | grep $1
Базовые политики представлены в таблице 2. Эти политики по умолчанию
записаны в конфигурационный файл, из которого берется список политик
для проверки. В случае необходимости аудитор может исключить некоторые
из них из проверки, а также добавить другие.
Таблица 2. Ключевые политики SELinux [17].
Политика Статус Описание
allow_cvs_read_shadow off Позволяет демону cvs читать shadow
allow_daemons_dump_core on Разрешает всем демонам записывать
corefiles в корневой каталог
allow_daemons_use_tty on Разрешает демонам общаться с
терминалом через TTY
Разрешает выполнение анонимной
allow_execmem off памяти, например, для генерации
исполняемого кода или стека
allow_execstack off Разрешает выполнение стека через
mprotect
allow_gssd_read_tmp on Разрешает gssd читать каталог tmp
allow_kerberos off Позволяет системе нормально
работать в среде Kerberos
allow_mount_anyfile off Позволяет монтировать любой файл
37
allow_mounton_anydir on Позволяет монтировать любой
каталог
Разрешает всем доменам
allow_netlabel on использовать пакеты, отмеченные
netlabel
Разрешает samba изменять
allow_smbd_anon_write off общедоступные файлы,
используемые для передачи таких
файлов
allow_ssh_keysign off Разрешает аутентификацию на
основе ключа хоста
allow_tftp_anon_write off Разрешает tftp изменять
общедоступные файлы
allow_unlabeled_packets on Разрешает работу в системе с
неотмеченными пакетами
httpd_enable_homedirs off Разрешает httpd читать домашние
каталоги
httpd_tty_comm off Разрешает httpd соединение через
TTY
ssh_sysadm_login off Разрешает ssh вход в систему как
sysadm_r:sysadm_t
Разрешает пользователям staff_r
staff_read_sysadm_file off искать домашний каталог sysadm и
читать файлы в нем
user_net_control off Разрешает пользователям
контролировать сетевые интерфейсы
user_ping off Контроль использования
пользователями ping и traceroute
Разрешает пользователям читать и
user_rw_usb on записывать файлы в файловой
системе USB
Разрешает приложениям писать
write_untrusted_content off ненадежный контент. Если это
запрещено, интернет-контент не
будет сохранен
xdm_sysadm_login off Разрешает xdm входить в систему как
sysadm
38
Ключевыми будем считать порты с номерами: 21 (FTP), 22 (SSH),
23 (Telnet), 25 (SMTP), 53 (host), 80 (http), 110 (POP), 143 (IMAP), 443 (http
защищенный), 513 (rlogin), 514 (rsh), 631 (сетевая печать), 993 (IMAP
защищенный), 995 (SSL/TLS), 3306 (MySQL), 5900 (удаленный доступ). Эти
порты по умолчанию записаны в конфигурационный файл, из которого
берется список портов для проверки. В случае необходимости аудитор может
исключить некоторые из них из проверки, а также добавить другие.
3.2.2. Проверка настроек AppArmor
К проблемам обеспечения безопасности информации при работе с
механизмом AppArmor относим следующие особенности:
39
аудита. В случае, если для системы важна работа других профилей, аудитор
может отредактировать этот файл. Проверка осуществляется с помощью
команды apparmor_status и поиском в выводе команды требуемых путей к
профилям.
Таблица 3. Основные профили AppArmor.
Профиль AppArmor Целевое
приложение
/usr/lib/apache2/mpm-prefork/apache2 Apache
/usr/bin/chromium-browser
/usr/bin/opera Браузер
/usr/lib/firefox/firefox
/user/sbin/useradd Приложения для
/user/sbin/userdel редактирования
пользователей
/usr/bin/passwd Сервис парольной
политики
/sbin/syslogd Сервис
журналирования
/usr/lib/postfix/flush
/usr/lib/postfix/pipe
/usr/lib/dovecot/imap-login Почтовый сервис
/usr/lib/dovecot/pop3-login
/usr/sbin/sendmail
/etc/apparmor/profiles/extras/sbin.dhclient
usr/sbin/dhcpd DHCP
/sbin/dhcpcd
/usr/bin/xfs
/usr/sbin/in/ftpd Сервисы сетевых
/usr/sbin/smbd соединений
/usr/sbin/sshd
/bin/ping
/bin.netstat
/bin/netstat Приложения для
/usr/sbin/dnsmasq настроек сети
/usr/sbin/traceroute
/user/sbin/xinetd
41
ГЛАВА 4. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ДЛЯ ПРОВЕДЕНИЯ
АУДИТА СИСТЕМНОЙ БЕЗОПАСНОСТИ ОС LINUX
4.1. Структура программного обеспечения
4.1.1. Общая структура
Согласно поставленным цели и задачам было разработано программное
обеспечение на языке Tcl/Tk для проведения аудита системной безопасности
ОС семейства Linux.
Структура программы показана на рисунке 5.
gui.tcl
Файл с определением
графического интерфейса
sysfiles_rights.conf
main.tcl Файл с правами
Сценарии bash Основной файл ПО системных файлов
acl_check1.sh
acl_check2.sh Сценарии bash
acl_check3.sh base.tcl base_check2.sh
acl_check5.sh base_check3.sh
ACL.tcl Модуль базовой base_check4.sh
selinux_apps.conf
Модуль списков ACL СКД base_check5.sh
Файл со списком base_check6.sh
проверяемых
приложений
SELinux.tcl apparmor_apps.conf
AppArmor.tcl Файл о списком
selinux_ports.conf Модуль SELinux проверяемых приложений
Файл со списком Модуль AppArmor
проверяемых портов
capabilities.tcl Сценарии bash
Сценарии bash appar_check1.sh
Модуль capabilities appar_check2.sh
se_check2.sh
se_check3.sh appar_check3.sh
se_check4.sh
42
3. base.tcl – файл, который содержит процедуры, осуществляющие аудит
базовой системы контроля доступа;
4. ACL.tcl – файл, который содержит процедуры, осуществляющие аудит
списков ACL;
5. SELinux.tcl – файл, который содержит процедуры, осуществляющие
аудит системы SELinux;
6. AppArmor.tcl – файл, который содержит процедуры, осуществляющие
аудит системы AppArmor;
7. capabilities.tcl – файл, который содержит процедуру, осуществляющую
аудит механизма capabilities.
43
процедуры производится обращение к файлу сценария командной
оболочки bash base_check2.sh.
3. Поиск в заданном каталоге файлов с неверными правами владельца, а
именно файлов, у которых группа-владелец или остальные
пользователи имеют права, которые не имеет владелец; в рамках этой
процедуры производится обращение к файлу сценария командной
оболочки bash base_check3.sh.
4. Проверка наличия определенных в файле sysfiles_rights.conf
важных для системы файлов и корректной установки прав доступа к
ним; данная операция требует обращения к файлу сценария командной
оболочки bash base_check4.sh.
5. Поиск в заданном каталоге файлов, у которых в качестве владельца или
владельца-группы установлены субъекты nobody и nogroup
соответственно; здесь производится обращение к файлу сценария
командной оболочки bash base_check5.sh.
6. Поиск в домашних каталогах пользователей файлов, владельцами
которых не являются владельцы домашних каталогов; в рамках этой
процедуры производится обращение к файлу сценария командной
оболочки bash base_check6.sh.
7. Проверка разрешений sudoers для пользователей.
46
Интерфейс разработанного программного обеспечения для проведения
аудита интуитивно понятен и удобен при использовании.
48
Рис. 8 Окно программы при выборе проверок базовой СКД.
49
Рис. 10 Окно программы при выборе проверок SELinux.
51
В случае AppArmor такая проверка одна – «Проверка основных
профилей». Здесь управление входными данными осуществляется через
редактирование файла apparmor_apps.conf.
Подробности структуры входных данных предоставляются
пользователю в специально организованном для этого поле.
После нажатия кнопки «Начать проверку» осуществляется аудит
выбранной подсистемы и в поле под заголовком «Результат аудита»
вписывается результат аудита. При этом текст отчета о результате
выделяется разными цветами в зависимости от характера части текста:
− синим цветом выделяются заголовки проверок;
− красным – выявленные уязвимости;
− оранжевым – выявленные потенциальные уязвимости;
− зеленым – успешный результат аудита.
Пример выполнения аудита базовой СКД представлен на рисунке 13.
52
Также в программе существует возможность сохранения результата
аудита в отдельный файл. Для этого на окне присутствует кнопка «Сохранить
результат». При нажатии этой кнопки появляется окно выбора файла для
записи результата и происходит запись содержимого поля text в выбранный
файл. Окно выбора представлено на рисунке 14.
53
ЗАКЛЮЧЕНИЕ
1. Проведен анализ подсистем ОС Linux, требующих аудита с целью
выявления возможных уязвимостей. Рассмотрены дискреционная система
контроля доступа, включая базовую СКД и списки ACL, мандатная СКД
SELinux и система AppArmor, а также механизм Capabilities.
2. Проведен обзор понятия аудита информационной безопасности, а также
приведена классификация методов его проведения.
3. Разработано программное обеспечение для проведения аудита
информационной безопасности ОС Linux с применением языка сценариев
Tcl/Tk, выполняющее аудит следующих подсистем:
а) базовая СКД: поиск файлов с определенными правами доступа, с
неверными владельцами, проверка прав системных файлов;
б) списки ACL: проверка корректности установленных прав ACL;
в) SELinux: проверка контекстов SELinux для файлов и процессов,
политик для приложений и сетевых портов;
г) AppArmor: проверка основных профилей AppArmor, поиск
процессов без защиты AppArmor;
д) механизм Capabilities: поиск файлов с правами, расширенными с
помощью механизма.
По каждой из подсистем генерируется отчет об аудите в текстовом виде.
Предусмотрено наглядное выделение результата в зависимости от
успешности прохождения проверки.
4. Для проверки разработанного ПО в тестовом дистрибутиве ОС Linux
openSUSE Leap 15.0 был искусственно создан ряд уязвимостей, которые
были подвергнуты проверке. Среди них неверные права доступа по
механизмам базовой СКД и списков ACL для файлов разного типа,
неверные установки контекстов и политик SELinux, а также профилей
AppArmor. Программа успешно определила все уязвимости и составила
корректный отчет.
54
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Габидулин Э.М., Кшевецкий А.С., Колыбельников А.И., Владимиров
С.М. – М.: Гос. образовательное учреждение высш. проф. образования
"Московский физико-технический ин-т (гос. ун-т)", 2011. –365 с.
2. Рябченко Е.Ю. Архитектура и безопасность операционных систем.
Учебное пособие. – Казань: Казан. Ун-т, 2015. – 157 с.
3. Костромин В. А. Самоучитель Linux для пользователя. — СПб.: БХВ-
Петербург, 2003. – 672 с.
4. Списки контроля доступа ACL [Электронный ресурс] // Официальный
сайт поддержки Arch Linux. Дата обновления: 19.03.2019. URL:
https://wiki.archlinux.org/index.php/Access_Control_Lists_(Русский) (дата
обращения: 28.05.2019)
5. Соловьев А. Access Control List – Списки контроля доступа.
[Электронный ресурс] // Русскоязычное сообщество Ubuntu Linux. Дата
обновления: 23.04.2013. URL:
https://help.ubuntu.ru/wiki/access_control_list (дата обращения: 28.05.2019)
6. Садовников Д. Пишем модуль безопасности Linux [Электронный ресурс]
// SecurityLab.ru: информационный портал по безопасности. 2012. 18 мая.
URL: https://securitylab.ru/analytics/424663.php (дата обращения
28.05.2019)
7. Занько В. Настройка и использование SELinux. [Электронный ресурс] //
В. Занько, 2012. URL: https://opennet.ru/base/sec/selinux_setup.txt.html
(дата обращения: 2.06.2019)
8. Знакомимся с SELINUX и пытаемся понять, почему Дэн Уолш плачет
[Электронный ресурс] // Сообщество специалистов в области
информационной безопасности DefconRU. 2015. 22 августа. URL:
https://defcon.ru/os-security/1264/ (дата обращения 29.05.2019)
9. SELinux – описание и особенности работы с системой. Часть 1
[Электронный ресурс] // Хабр. Сообщество IT-специалистов. 2014. 20
55
января. URL: https://habr.com/ru/company/kingservers/blog/209644/ (дата
обращения 29.05.2019)
10. Ивашко Е. AppArmor – песочница для приложений. [Электронный
ресурс] // Е. Ивашко, 2009. URL:
www.ibm.com/developworks/ru/library/apparmor-1/ (дата обращения
30.05.2019)
11. Ивашко Е. Архитектура безопасности. [Электронный ресурс] // Е.
Ивашко, 2009. URL: www.ibm.com/developworks/ru/library/apparmor-3/
(дата обращения 30.05.2019)
12. Capabilities - overview of Linux capabilities. [Электронный ресурс] // Linux
Programmer’s Manual. Дата обновления: 11.05.2019. URL:
http://man7.org/linux/man-pages/man7/capabilities.7.html (дата обращения
28.05.2019)
13. ГОСТ Р ИСО 19011-2012. Руководящие указания по аудиту систем
менеджмента [Текст]. - Взамен ГОСТ P ИСО 19011-2003; М.: [б.и.], 2013.
– 35 с.
14. ГОСТ Р 53114-2008. Защита информации. Обеспечение информационной
безопасности в организации [Текст]. – Введен впервые; М.: [б.и.], 2009. –
15 с.
15. Макаренко С. И. Аудит информационной безопасности: основные этапы,
концептуальные основы, классификация мероприятий // Системы
управления, связи и безопасности. 2018. № 1. С. 1–29. URL:
http://sccs.intelgr.com/archive/2018-01/01-Makarenko.pdf (дата обращения
28.05.2019)
16. Red Hat Linux. Секреты профессионала [Текст]: научное издание: пер. с
англ. / Наба Баркакати. - М. ; СПб. ; Киев : Диалектика, 2004. - 1056 с.
17. Security Enhanced Linux Reference Policy [Электронный ресурс] //
Polarhome – gateway to freedom. Дата обновления: 18.09.2014. URL:
http://www.polarhome.com:923/doc/selinux-policy-
2.4.6/html/global_tunables.html (дата обращения 28.05.2019)
56
ПРИЛОЖЕНИЕ
Пример отчета об аудите базовой СКД, системы SELinux, механизма
capabilities, полученного с помощью разработанной программы.
АУДИТ БАЗОВОЙ СИСТЕМЫ КОНТРОЛЯ ДОСТУПА
57
Неверные права для файла /etc/logrotate.conf - 644. Рекомендуемые -
640
Неверные права для файла /etc/securetty - 644. Рекомендуемые - 600
Неверные права для файла /etc/pam.d - 755. Рекомендуемые - 750
Неверные права для файла /etc/security - 755. Рекомендуемые - 600
Неверные права для файла /etc/init.d - 755. Рекомендуемые - 750
Для файла /etc/group права настроены верно
Для файла /etc/passwd права настроены верно
Неверные права для файла /etc/shadow - 640. Рекомендуемые - 400
Для файла /var/log права настроены верно
Неверные права для файла /var/log/lastlog - 664. Рекомендуемые - 644
Неверные права для файла /var/log/messages - 640. Рекомендуемые - 644
Файл /var/log/secure не найден
Для файла /var/log/wtmp права настроены верно
Каталог /home/bulat
Найдены следующие файлы с другими владельцами:
/home/bulat/Desktop/tcl/newvtcl
/home/bulat/проекты/proj/newdir
/home/bulat/проекты/proj/newdir1
/home/bulat/проекты/proj/input.txt
/home/bulat/проекты/proj/newacl1.txt
/home/bulat/проекты/proj/newacl2.txt
/home/bulat/проекты/proj/newacl3.txt
/home/bulat/проекты/proj/result1.txt
58
(ALL) ALL
АУДИТ SELINUX
59
Исследуется: контексты SELinux для файлов
60
Политика для порта 80 установлена
Политика для порта 110 установлена
Политика для порта 143 установлена
Политика для порта 443 установлена
Политика для порта 513 не установлена
Политика для порта 514 не установлена
Политика для порта 631 не установлена
Политика для порта 993 установлена
Политика для порта 995 установлена
Политика для порта 3306 установлена
Политика для порта 5900 установлена
АУДИТ CAPABILITIES
Исследуется: файлы с capabilities
61