Исследование уровня безопасности операционной системы Linux
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
й системы всегда есть файлы, которые не должны изменяться в процессе функционирования системы, например, исполняемые файлы или файлы, которые должны быть откорректированы только однажды при настройке системы и не должны изменяться впоследствии, примером могут служить конфигурационные файлы. Есть и такие, которые могут быть дополнены, но не могут быть удалены или перезаписаны. Наличие средств, гарантирующих выполнение перечисленных условий, позволяет очень сильно повысить безопасность файловой системы, сохранив первоначальную целостность данных при различных типах атак.
Начиная с версии ядра 1.1, в файловой системе Linux помимо прав доступа присутствует поддержка расширенных атрибутов файлов. В последних версиях ядра 2.4 присутствует поддержка следующих атрибутов:
- Atime (A). Каждый раз, когда система обращается к файлу, происходит изменение ячейки времени последнего обращения к файлу. Установка атрибута atime позволяет избежать обновления времени последнего обращения и увеличить производительность файловой системы, особенно в тех случаях, когда обращения к файлам происходят очень часто. Однако, отсутствие времени последней модификации файла представляет угрозу изменения файла без последующей регистрации этого действия, что может угрожать безопасности.
- Sync (S). Установка атрибута sync позволяет сразу фиксировать все изменения, происходящие с файлом, на жестком диске синхронно с процессом, который осуществляет эти изменения. Это обеспечивает более безопасную работу, но может также снизить производительность из-за прямой постоянной записи на диск.
- Append (a). Этот атрибут позволяет открывать файл только с целью его дополнения. Усечение или перезапись файла запрещается. Для каталога установка этого атрибута означает, что удалять файлы, содержащиеся в этом каталоге, запрещено, хотя создание новых и модификация существующих возможны.
- Immutable (i). Файл с установленным атрибутом immutable не может подвергаться никаким изменениям вообще. Если установить этот атрибут для каталога, процессы смогут модифицировать файлы, находящиеся в нем, но не смогут создавать или удалять файлы. Для обеспечения безопасности имеет большое значение.
- No Dump (d). Установка атрибута no dump дает указание процессу, осуществляющему создание дампа, игнорировать этот файл и не включать его в создание резервной копии.
- Compress (c). Этот атрибут позволяет производить прозрачное сжатие файлов перед записью их на диск. При доступе к файлу он декомпрессируется и конечному процессу представляется уже в нормальном виде.
- Secure Deletion (s). Если этот атрибут установлен, то при удалении файла все блоки, в которых он располагался, заполняются нулями, то есть производится полное удаление файла, а не только его дескриптора.
- Undelete (u). При удалении файла с этим атрибутом система сохраняет все блоки файла на диске, что позволяет при желании восстановить удаленный файл.
Последние версии ядер, начиная с 2.4, игнорируют значения последних трех атрибутов: compress, secure deletion и undelete. Разработчики посчитали, что их дальнейшее использование не имеет смысла.
Для изменения и просмотра установленных атрибутов в стандартный системный пакет Linux входят две программы chattr и lsattr. Первая позволяет изменять атрибуты, добавлять или снимать их, вторая позволяет получить список установленных атрибутов. Пример работы программы lsattr показан ниже.
[root@app tmpdir]# lsattr myfile*
---i---------- myfile
----a--------- myfile1
В примере первый файл имеет установленный атрибут immutable, второй атрибут atime. Подробно использование программ lsattr и chattr описывается в соответствующих man-руководствах.
При определенных условиях процессы, выполняемые от имени привилегированного пользователя, могут игнорировать эти атрибуты. С другой стороны, атрибуты ext2 учитываются некоторыми системными вызовами, такими как sys_open() для открытия файла или sys_truncate() для его отсечения, причем вне зависимости от идентификатора пользователя, вызываемого их процесса и прочих условий. Например, присутствие флага immutable в дескрипторе файла приводит к тому, что системные вызовы, касающиеся модификации файлов, просто перестают работать вне зависимости от других условий. Наличие данных атрибутов и специальных режимов работы ядра в Linux позволяет просто и эффективно укрощать абсолютные возможности, которыми обладает привилегированный пользователь. Цель комплексной настройки заключается в том, чтобы атрибуты накладывали ограничения для всех процессов независимо от их прав доступа и уровня привилегий. Они могут служить в качестве эффективной низкоуровневой защиты против атак на любой привилегированный процесс, в котором могут присутствовать какие-либо неизвестные уязвимости.
Однако, сама политика безопасности, построенная на установке атрибутов типа immutable и append, является только одной стороной монеты. Хотя эти атрибуты и предотвратят изменение защищенных ими файлов даже со стороны процессов, которые выполняются от имени привилегированного пользователя, в обычных обстоятельствах пользователь root все равно может убрать эти флаги и продолжить работу с файлами уже без этих атрибутов. Другими словами, ничто не мешает программе, исполняемой от имени пользователя root, перед началом работы выполнить проверку файла на наличие этих атрибутов и просто их отменить.
Дополняющим компонентом, или второй стороной монеты, можно считать специальные возможности ядер 2.4, позволяющие конфигурировать систему в режиме полной защиты фа?/p>