Курс лекций «Проблемы безопасности в информационных технологиях»



жүктеу 4.51 Mb.
бет17/44
Дата13.09.2017
өлшемі4.51 Mb.
түріКурс лекций
1   ...   13   14   15   16   17   18   19   20   ...   44
    Навигация по данной странице:
  • S ticky bit

Защита в ОС UNIX


Защита операционных систем семейства Unix базируется на трёх основных механизмах:


  • идентификация и аутентификация пользователя при входе в систему;

  • разграничение прав доступа к файловой системе, в основе которого лежит реализация дискреционной модели доступа;

  • аудит, т.е. регистрация событий.

Для различных клонов ОС семейства Unix возможности механизмов защиты могут незначительно различаться, но основные принципы совпадают.

Построение файловой системы и разграничение доступа к файловым объектам имеет особенности, присущие данному семейству ОС. Все дисковые накопители (разделы) объединяются в единую файловую систему путем операции монтирования. При этом содержимое монтируемого раздела отображается в выбранный каталог файловой системы. Элементами файловой системы являются также все устройства, подключаемые к защищаемому компьютеру (монтируемые на файловую систему). Поэтому разграничение доступа к ним осуществляется через файловую систему. «Всё есть файл» – это и лозунг и парадигма ОС семейства Unix.

Каждый файловый объект имеет т.н. индексный дескриптор, в котором среди прочего хранится информация о разграничении доступа к данному файловому объекту (по сути, ACL). Права доступа делятся на три категории: доступ для владельца, доступ для группы и доступ для остальных пользователей. В каждой категории определяются права на чтение, запись и исполнение (в случае каталога – просмотр).

Каждый пользователь имеет уникальный символьный идентификатор (имя) и числовой идентификатор (UID). Символьный идентификатор предъявляется пользователем при входе в систему, числовой используется операционной системой для определения прав пользователя в системе (доступ к файлам и т.д.). Пользователи, которым разрешен вход в систему, перечислены в учетном файле пользователей /etc/passwd. Этот текстовый файл содержит следующие данные: имя пользователя, зашифрованный пароль, идентификатор пользователя (UID), идентификатор группы (GID), поле комментария (User ID Info), начальный текущий каталог и имя исполняемого файла, используемого в качестве интерпретатора команд. Пароль шифруется, например, с использованием DES-алгоритма1.

Операционная система Unix поддерживает для любого файла несколько характеристик, определяющих санкционированность доступа, тип файла, его размер и местоположение на диске. При каждом обращении к файлу система проверяет право пользоваться им. Операционная система Unix допускает выполнение трех типов операций над файлами: чтение, запись и выполнение (Read–Write–eXecute). Чтение файла означает, что доступно его содержимое, а запись – что возможны изменения содержимого файла. Запись (изменение содержимого) каталога означает, в частности, возможность удаления файлов, содержащихся в данном каталоге. Выполнение приводит либо к загрузке файла в ОЗУ с последующим его исполнением, либо к выполнению содержащихся в файле команд какого-либо языка сценариев, например, интерпретатора команд shell. Разрешение на выполнение каталога означает, что в нем допустим поиск с целью формирования полного имени на путь к файлу. Любой из файлов в ОС Unix имеет определённого владельца и привязку к некоторой определённой группе. Файл наследует их от процесса, создавшего файл. Пользователь и группа, идентификаторы которых связаны с файлом, считаются его владельцами.

В ОС Unix используется четыре типа файлов: обычные, специальные, каталоги, а в некоторых версиях ОС и FIFO-файлы (First InFirst Out). Обычные файлы содержат данные пользователей. Специальные файлы предназначены для организации взаимодействия с устройствами ввода-вывода. Доступ к любому устройству реализуется как обслуживание запроса к специальному (дисковому) файлу. Каталоги используются системой для поддержания файловой структуры. Особенность каталогов состоит в том, что пользователь может читать их содержимое, но выполнять записи в каталоги (изменять структуру каталогов) может только ОС. В ОС Unix организуются именованные программные каналы (pipe), являющиеся соединительным средством между стандартным выводом одной программы и стандартным вводом другой.

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


  • владелец файла (user owner) (процессы, имеющие идентификатор пользователя, совпадающий с идентификатором владельца файла);

  • члены группы владельца файла (group) (процессы, имеющие идентификатор группы, совпадающий с идентификатором группы, которой принадлежит файл);

  • прочие (other) (процессы, не попавшие в первые две категории).

В командах, изменяющих права доступа, может также использоваться символ ‘a(от all – все).

Т.к. права на файл и/или каталог в Unix задаются трёмя битами для каждой из трёх категорий (user-group-other), удобным оказалось представлять эти права в виде восьмеричных чисел (23=8). Категории перечисляются слева (старшие, права для владельца) направо (младшие, права для other). Например, если для файла socktest.pl права представлены, как в примере ниже:
$ ls -l socktest.pl -rwxr-xr-x 1 nick users 1874 Jan 19 10:23 socktest.pl*
то в числовом (восьмеричном представлении) это будет 0755:
Триплет для user: rwx => 4 + 2 + 1 = 7;

Триплет для group: r-x => 4 + 0 + 1 =5;

Триплет для other: r-x => 4 + 0 + 1 =5.
0777, следовательно, будет означать полный доступ к файлу для всех категорий пользователей (владелец-группа-остальные). Задать такой доступ можно, например командой chmod a+rwx socktest.pl. Полный доступ для владельца и отсутствие любого доступа для группы и остальных: chmod 0700 socktest.pl.

Кроме основных 3x3 девяти бит, определяющих доступ к файлам и каталогам в файловой системе, в Unix используются некоторые дополнительные биты. Один из них называется Sticky bit. В современной и наиболее часто используемой интепретации sticky bit используется в основном для директорий (каталогов), чтобы защитить в них файлы. Из такой директории пользователь может удалить только те файлы, владельцем которых он является. Примером может служить директория /tmp, в которой запись открыта для всех пользователей, но при этом нежелательно удаление чужих файлов. В Unix-е право удалить файл является свойством (атрибутом) директории (бит write). Без sticky bit, имея write на каталог, пользователь имеет право удалить любой файл в этом каталоге. Установка атрибута производится утилитой chmod – в восьмеричной нотации это 01000 – младший бит триплета перед триплетом прав владельца: chmod 1xxx socktest.pl.

Следует отметить, что назначение прав в файловых системах Unix-подобных ОС не имеет наследования, т.е., права, назначенные где-то «выше» по каталогу, «вниз» по каталогу не распространяются. Есть только системное умолчание-шаблон – маска прав, которые назначаются при создании каталога или файла.

Кроме изменения прав на файл (chmod), возможно изменение его владельца (chown) и группы (chgrp). К примеру, выполнив последовательность команд chmod 0700 file; chown otheruser file исходный пользователь полностью лишает себя доступа к file.

По соглашению, принятому в ОС Unix, привилегированный пользователь (обычно root) имеет идентификатор (ID), равный нулю. Процесс, с которым связан нулевой идентификатор пользователя, считается привилегированным. И, независимо от кода защиты файла, привилегированный процесс имеет право доступа к файлу для чтения и записи. Если в коде защиты хотя бы одной категории пользователей (процессов) есть разрешение на выполнение файла, привилегированный процесс тоже имеет право выполнять этот файл.

С точки зрения безопасности необходимо отметить, что в ОС семейства Unix, вследствие реализуемой ею концепции администрирования (не централизованная), невозможно обеспечить замкнутость (или целостность) программной среды. Это связано с невозможностью установки атрибута «исполнение» на каталог (для каталога данный атрибут ограничивает возможность «обзора» содержимого каталога). Поэтому при разграничении администратором доступа пользователей к каталогам, пользователь, как владелец создаваемого им файла, может занести в свой каталог исполняемый файл и, как его владелец, установить на файл атрибут исполнение (eXecute), после чего запустить записанную им программу. Эта проблема непосредственно связана с реализуемой в ОС концепцией защиты информации.

Не в полном объеме реализуется дискреционная модель доступа, в частности, не могут разграничиваться права доступа для пользователя root (UID=0), т.е. данный субъект доступа исключается из схемы управления доступом к ресурсам. Соответственно все запускаемые им процессы имеют неограниченный доступ к защищаемым ресурсам. С этим недостатком системы защиты связано множество атак, в частности:


  • несанкционированное получение прав root;

  • запуск с правами root собственного исполняемого файла (локально либо внедрённого удаленно), при этом несанкционированная программа получает полный доступ к защищаемым ресурсам и т.д.

Следует отметить, что в современных Unix всесилие root-а стараются по возможности ограничить, причём зачастую весьма кардинальным способом: root, как пользователь, в системе может полностью отсутствовать или быть запрещённым по умолчанию (как альтернатива используется механизм sudo). Так, например, поступили разработчики дистрибутива Linux Ubuntu, MAC OS X (в версии для рабочей станции). Похожим образом действовала фирма Microsoft в своей пользовательской ОС Windows 7. Права, требующие повышенных привилегий, обычный пользователь получает только при запуске определённых программ, таких как, passwd (программа смены пароля). В Windows пошли ещё дальше, в ней (подтверждаемое) повышение привилегий теперь не придаётся процессу как таковому, а только той конкретной функции, которая этих привилегий требует. Т.е., привилегии повышаются не в момент запуска passwd, а тогда, когда эта утилита вызывает собственно функцию по изменению пароля. Повышение привилегий не для отдельной функции, а всему процессу в целом, чревато следующей неприятностью: запустив программу passwd, в которой существует уязвимость, например, связанная с переполнением буфера, злоумышленник, использовав эту уязвимость, может получить полноценный shell с правами root-а.

Также следует отметить, что в ОС семейства Unix невозможно встроенными средствами гарантированно удалять остаточную информацию. Для этого в системе абсолютно отсутствуют соответствующие механизмы. Большинство ОС данного семейства не обладают возможностью контроля целостности файловой системы, т.е. не содержат соответствующих встроенных средств. В лучшем случае дополнительными утилитами может быть реализован контроль конфигурационных файлов ОС по расписанию в то время, как важнейшей возможностью данного механизма можно считать контроль целостности программ (приложений) перед их запуском, контроль файлов данных пользователя и т.д.

Что касается регистрации (аудита), то в ОС семейства Unix не обеспечивается регистрация выдачи документов на «твёрдую копию», а также некоторые другие требования к регистрации событий.

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

Из приведенного анализа видно, что многие механизмы, необходимые с точки зрения выполнения формализованных требований, большинством ОС семейства Unix не реализуется в принципе, либо реализуется лишь частично.

Одним из примеров Unix-подобной системы, в которой предприняты дополнительные меры по обеспечению безопасности, можно назвать ОС OpenBSD. За всё время существования этой системы в ней были обнаружены всего две критические уязвимости, которые возможно было использовать удалённо. Вот некоторое перечисление характеристик безопасности OpenBSD:


  • Запрет загрузки модулей ядра;

  • Удаление символьной информации о ядре;

  • Отключение защиты памяти ядра от записи;

  • Запрет модификации памяти ядра из прикладного уровня;

  • Отсутствуют «люки» к ядру из прикладного режима;

  • Запрет на исполнение кода в стеке и куче;

  • Контроль целостности кучи;

  • Рандомизация адресного пространства;

  • Защита обработчиков исключений;

  • Шифрованная ФС;

  • Автоматическое затирание удаляемых файлов;

  • Шифрование файла подкачки;

  • Системный диск только на чтение;

  • Встроенный брандмауэр;

  • Рандомизация ID в IP,RPC,DNS...;

  • Загрузка в однопользовательском режиме.

Надо отдать должное и усилиям, предпринимаемым фирмой Microsoft в области обеспечения безопасности её ОС: если ещё в версии Windows 2003 многие из вышеперечисленных свойств либо отсутствовали либо были реализованы не должным образом, то уже в Windows 2008, Windows 2008 R2 почти всё из вышеперечисленного было включено в её более современные серверные операционные системы.






Достарыңызбен бөлісу:
1   ...   13   14   15   16   17   18   19   20   ...   44


©kzref.org 2019
әкімшілігінің қараңыз

    Басты бет