Как объект защиты информации

Вид материалаДокументы

Содержание


42. Защита файловой системы Windows 2000 Professional. Защита паролей.
43. Файловая система OS Linux. Основные концепции файловой системы.
Основные концепции файловой системы
44. Виртуальная Файловая Система (VFS).
45. Файловые системы EXT2 (The Second Extended File System).
Подобный материал:
1   2   3   4   5   6   7   8
41. Администрирование дисков в Windows 2000.

Опытные пользователи Windows NT успели привыкнуть к утилите Disk Administrator, с помощью которой можно было создавать, удалять и менять параметры томов на физических дисках. В Windows 2000 ее заменил модуль административной консоли Disk Management. Для работы с ним следует открыть папку Administrative Tools и выбрать Computer Management-Storage-Disk Management.

Disk Management и Disk Administrator во многом похожи. Новое средство по-прежнему поддерживает RAID уровней 0, 1 и 5, дисковые массивы с чередованием и с четностью (состоят из трех и более дисков, на один из которых записывается информация, позволяющая восстановить данные при выходе из строя любого диска), дисковые массивы с чередованием без четности (данные размещаются с чередованием на нескольких физических дисках), а также дублирование (для каждого тома создается зеркальная копия на другом физическом диске). Кроме того, поддерживаются многодисковые тома, объединяющие свободное пространство на нескольких дисках в один логический том.


42. Защита файловой системы Windows 2000 Professional. Защита паролей.

Windows 2000 - Защита паролей

Способов взлома локальной Windows NT множество. Это и получение паролей других пользователей, в том числе администратора, это и сброс или замена пароля администратора, это и повышение до максимума пользовательских привилегий непосредственно из-под своей учетной записи, имеющей изначально весьма ограниченные права, это и осуществление доступа к чужим файлам и многое другое. Из всех этих способов самый, на мой взгляд, элегантный и неразрушающий - получение полного списка паролей локальной машины. Ситуаций, когда взлом вероятен или даже необходим, тоже немало.

Собственно говоря, само понятие "взлом" может применяться и к абсолютно законным случаям, когда, прикрываются фразой "восстановление забытых паролей". Ведь именно такая задача нередко стоит и перед самими системными администраторами, поскольку случаев, когда администратор уволился, не сказав все пароли своему преемнику, достаточно много. И используются при этом самые натуральные и достаточно известные хакерские методы. А уж пользователей, которые забыли понаставленные пароли, больше в разы.

Вторая сторона во всем этом неблагодарном деле - умение по мере сил и возможностей противостоять взлому. Любой администратор самой маленькой локальной сети обязан это делать. Но не надо забывать и про то, что всякого рода любопытным личностям или даже силовым структурам (легальным и нелегальным) может понадобиться доступ и к вашему домашнему личному или мобильному ПК, если только информация на нем представляет хоть какую-то ценность. А потому быть как минимум в курсе наличия брешей в безопасности своей собственной системы желательно и самому обычному пользователю, а не только системному администратору.

Существуют два наиболее распространенных метода ограничения доступа к компьютеру с помощью настроек CMOS Setup: запрет изменения настроек CMOS Setup и требование ввода пароля при загрузке компьютера.

В обоих случаях для законного снятия блокировки необходимо знание установленного в системе пароля. Встречаются, конечно, и дополнительные меры защиты на уровне "железа", это, в частности, очень распространено в ноутбуках. Например, парольная защита, встроенная в жесткий диск, или даже механические замки. Нередко для предотвращения неавторизованного доступа к ноутбуку применяются специальные микросхемы, которые либо просто в защищенном виде хранят пароль BIOS, либо осуществляют какую-то более серьезную защиту, например поддержку аутентификации по смарт-картам или отпечаткам пальцев.

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


43. Файловая система OS Linux. Основные концепции файловой системы.

Файловая система OS Linux

Пеpвые веpсии Linux были pазpаботаны на базе опеpационной системы Minix. Было бы пpоще pазделить диски между двумя системами, чем pазpаботать новую файловую систему, поэтому Linus Torvalds pешил ввести поддеpжку в Linux файловой системы Minix. В то вpемя эта файловая система была достаточно эффективным пpогpаммным пpодуктом с относительно небольшим количеством ошибок.

Однако огpаничения, связанные со стpуктуpой файловой системы Minix, были довольно высоки, поэтому стали задумываться над pазpаботкой новой файловой системы для Linux.

Для упpощения внедpения новой файловой системы в ядpо Linux, была pазpаботана виpтуальная файловая система (VFS). Пеpвоначально VFS была написана Chris Provenzano, а затем пеpеписана Linus Torvalds пеpед ее интегpацией в ядpо.

После установки в ядpо VFS, в апpеле 1992 года была pазpаботана новая фаловая система EXTfs (Extended File System) и добавлена в веpсию Linux 0.96c. В новой файловой системе были сняты два существенных огpаничения системы Minix: ее максимальный объем мог достигать 2 гигабайт, а максимальная длина имени файла - 255 символов. Это было достижением по сравнению с файловой системой Minix, хотя некоторые проблемы все еще присутствовали. Не было поддержки раздельного доступа, модификации индексного дескриптора и модификации ячеек времени изменения файла. Эта файловая система использовала связанные списки для оперирования свободными блоками и индексными дескрипторами, что сильно влияло на производительность системы: со временем списки становились неупорядоченными и разсортированными, что приводило к фрагментированию файловой системы.

Решением этих проблем явился выпуск в январе 1993 года альфа-версий двух новых файловых систем: Xia и EXT2fs (Second Extended File System). По большей части, файловая система Xia была основана на Minix c добавлением нескольких новых возможностей. В основном это было возможность работы с длинными именами файлов, поддержка дисковых разделов большего объема и поддержка трех ячеек времени изменения файла. С другой стороны, EXT2fs была основана на EXTfs с множеством улучшений и дополнений. Она также имела возможности для будущего развития.

Когда были выпущены эти две файловые системы, функционально они были приблизительно равны. Система Xia была более надежна, чем EXT2fs, за счет ее минимизации. По мере их более широкого применения были обнаружены ошибки в системе EXT2fs, и добавлено большое количество новых возможностей и улучшений. В настоящее время файловая система EXT2fs является очень надежной и стала стандартом де-факто файловой системы Linux.

Основные концепции файловой системы

Любая файловая система Linux включает в себя несколько основных концепций, связанных с операционной системой Unix: файлы представляются индексными дескрипторами (inode), каталоги это просто файлы, содержащие список записей, а доступ к устройствам может быть осуществлен посредством запросов через файлы устройств.
  • Индексные дескрипторы. Любой файл представлен структурой, называемой индексным дескриптором. Каждый дескриптор содержит описание файла, которое включает в себя тип файла, права доступа, владельцев, ячейки времени изменения файла, размер, указатели на блоки данных. адреса блоков данных, зарезервированных для файла, хранятся в его индексном дескрипторе. при запросе пользователем операции ввода/вывода к файлу, ядро преобразует текущее смещение в номер блока, использует этот номер в качестве указателя в таблице адресов блоков, а затем производит требуемую операцию ввода/вывода.
  • Каталоги. Каталоги являются элементами иерархического дерева. Любой каталог может содержать файлы и подкаталоги. Каталоги - это файлы отдельного типа. В действительности, каталог это файл, содержащий список записей. Каждая запись содержит номер индексного дескриптора и имя файла. Когда какой-либо процесс использует путь к файлу, ядро ищет в каталогах соответствующий номер индексного дескриптора. После того, как имя файла было преобразовано в номер индексного дескриптора, этот дескриптор помещается в память и затем используется в последующих запросах.
  • Ссылки. Концепция файловых систем Unix включает в себя понятие ссылки. Один индексный дескриптор может быть связан с несколькими именами файлов. Дескриптор содержит поле, хранящее число, с которым ассоциируется файл. Добавление ссылки заключается в создании записи каталога, где номер индексного дескриптора указывает на другой дескриптор, и увеличении счетчика ссылок в дескрипторе. при удалении ссылки ядро уменьшает счетчик ссылок и удаляет дескриптор, если этот счетчик станет равным нулю.

Такие ссылки называются жесткими и могут использоваться только внутри одной файловой системы (нельзя создать ссылку для файла из другой файловой системы). Более того, жесткая ссылка может указывать только на файл (жесткая ссылка на каталог может привести к зацикливанию в файловой системе).

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

В Unix-подобных операционных системах доступ к устройствам осуществляется через специальные файлы. Такой файл не занимает места в файловой системе. Он является только точкой доступа к драйверу устройства.

Существует два типа файлов устройств: символьные и блочные. При использовании символьного типа, имеется возможность обмена данными с устройством только в символьном режиме, в то время как файлы устройств блочного типа позволяют производить обмен только блоками с использованием буфера. При запросе ввода/вывода к файлу устройства, этот запрос перенаправляется к драйверу соответствующего устройства. Каждому подобному файлу соответствует старший номер, который определяет тип устройства, и младший номер, который определяет само устройство.


44. Виртуальная Файловая Система (VFS).

Принцип работы

Ядро системы Linux содержит код, выполняющий функции виртуальной файловой системы, которая используется при работе с файлами. Этот код обрабатывает запросы к файлам и вызывает необходимые функции соответствующей файловой системы для выполнения операции ввода/вывода.Такой механизм работы с файлами часто используется в Unix-подобных операционных системах для упрощения объединения и использования нескольких типов файловых систем.

Когда какой-либо процесс выдает системный вызов, связанный с работой файловой системы, ядро вызывает функцию, расположенную в VFS. Эта функция производит действия, не зависимые от структуры файловой системы, и перенаправляет вызов к функции этой файловой системы, которая выполняет операции, связанные с ее структурой. Код, реализующий операции с файловой системой, использует функции буфера для обращения к устройствам ввода/вывода.

Структура VFS

VFS содержит набор функций, которые должна поддерживать любая файловая система. Этот интерфейс состоит из ряда операций, которые оперируют тремя типами объектов: файловые системы, индексные дескрипторы и открытые файлы.

VFS содержит информацию обо всех типах поддерживаемых файловых систем. Здесь используется таблица, которая создается во время компиляции ядра. Каждая запись в такой таблице содержит тип файловой системы: она включает в себя наименование типа и указатель на функцию, вызываемую во время монтирования этой файловой системы. При монтировании файловой системы вызывается соответствующая функция монтирования. Эта функция используется для считывания суперблока, установки внутренних переменных и возврата дескриптора смонтированной системы в VFS. После того, как система смонтирована, функции VFS используют этот дескриптор для доступа к процедурам используемой файловой системы.

В VFS используются еще два типа дескрипторов: это inode и дескриптор открытого файла. Каждый из них содержит информацию, связанную с используемыми файлами и набором операций, используемых кодом файловой системы. В то время как дескриптор inode содержит указатели к функциям, используемым по отношению к любому файлу (например, create или unlink), то дескриптор файлов содержит указатели к функциям, оперирующим только с открытыми файлами (например, read или write).


45. Файловые системы EXT2 (The Second Extended File System).

До недавнего времени список истинно родных (native) файловых систем для Linux ограничивался единственной - ext2fs (правда, Linux способен загрузиться и работать с FAT-раздела, но об этом мне даже не хочется говорить). Название это расшифровывается как "вторая расширенная файловая система"; "расширенная" она - по сравнению с файловой системой ОС minix, послужившей прототипом Linux, "вторая" - потому что ранние версии Linux базировались на Extfs с более ограниченными возможностями.

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

Поскольку отложенность записи изменений файлов делает весьма высокой вероятность нарушения связи между их inodes и блоками данных. Конечно, времена, когда некорректный останов Linux-машины грозил полным разрушением файловой системы, остались в далеком прошлом. Однако в любом случае останов системы без штатного размонтирования файловых систем приводит к тому, что в них не устанавливается упомянутый выше "бит чистого размонтирования". А без этого утилиты обслуживания диска (такие, как программа проверки fsck) при перезагрузке не воспринимают их как целостные и начинают проверку, которая при современных объемах дисков может занять немалое время.

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

Во избежание недоразумений следует подчеркнуть, что журналирование направленно на обеспечение целостности файловой системы, но ни в коем случае не гарантирует сохранность пользовательских данных как таковых. Так, не следует ожидать, что журналирование волшебным образом восстановит не сохраненные перед сбоем изменения документа, загруженного в текстовый редактор. Более того, в большинстве журналируемых файловых систем фиксируются грядущие операции только над метаданными изменяемых файлов. Текущие версии ядра Linux поддерживают в качестве активных четыре журналируемые файловые системы: ReiserFS и Ext3fs, специфичные для этой ОС, XFS и JFS - результаты портирования в Linux файловых систем, разработанных первоначально для рабочих станций под ОС Irix (SGI) и AIX (IBM), соответственно.

ReiserFS

Файловая система ReiserFS оказалась для Linux исторически первой из журналируемых - она поддерживается каноническим ядром c l.org, начиная с первых версий ветви 2.4.x (в настоящее время существуют патчи, позволяющие использовать ее и с версиями ветви 2.2.xx). И была единственной, разработанной "с нуля" специально для этой ОС Хансом Райзером и его фирмой Namesys. Как и в большинстве рассмотренных, в ReiserFS осуществляется журналирование только операций над метаданными файлов. Что, при определенном снижении надежности, обеспечивает высокую производительность: по моим наблюдениям, на большинстве типичных пользовательских задач она лишь незначительно уступает Ext2fs. А на такой, достаточно обычной, операции, как копировании большого количества мелких файлов, существенно ее опережает.

Кроме этого, ReiserFS обладает уникальной (и по умолчанию задействованной) возможностью оптимизации дискового пространства, занимаемого мелкими, менее одного блока, файлами (а следует помнить, что в любой Unix-системе такие файлы присутствуют в изобилии): они целиком хранятся в своих inode, без выделения блоков в области данных - вместе с экономией места это способствует и росту производительности, так как и данные, и метаданные (в терминах ReiserFS - stat-data) файла хранятся в непосредственной близости и могут быть считаны одной операцией ввода/вывода.

Вторая особенность ReiserFS - то, что т.н. хвосты файлов, то есть их конечные части, меньшие по размеру, чем один блок, могут быть подвергнуты упаковке. Этот режим (tailing) также включается по умолчанию при создании ReiserFS, обеспечивая около 5% экономии дискового пространства. Что, правда, несколько снижает быстродействие, и потому режим тайлинга можно отменить при монтировании файловой системы. Однако упаковка хвостов автоматически восстанавливается после перекомпиляции ядра - что, как будет сказано чуть ниже, требует внимательного отношения.

ReiserFS не совместима с Ext2fs на уровне утилит обслуживания файловой системы. Однако соответствующий инструментарий, объединенный в пакет reiserfsprogs, уже давно включается в штатный комплект современных дистрибутивов (или, в крайнем случае, может быть получен с сайта Namesys).Более серьезная проблема с совместимостью - в том, что распространенные загрузчики Linux (и Lilo, и GRUB - хотя и по разным причинам) часто не способны загрузить ядро Linux с раздела ReiserFS, оптимизированного в режиме тайлинга. А поскольку, будучи отключен, этот режим обладает свойством самовосстановления, пользователь может столкнуться с тем, что после пересборки ядра система просто откажется загружаться. Именно поэтому выше я упоминал, что создание раздела под каталог /boot может быть необходимым.

Ext3fs

В отличие от ReiserFS, Ext3fs - не более чем журналируемая надстройка над классической Ext2fs, разработанная Стивеном Твиди в компании RedHat и поддерживаемая ядром Linux, начиная с версии 2.4.16. Как следствие такого происхождения, она сохраняет со своей прародительницей полную совместимость, в том числе и на уровне утилит обслуживания (начиная с версии 1.21 объединяющего их пакета e2fsprogs). И переход от ext2fs к ext3fs может быть осуществлен простым добавлением файла журнала к первой, не только без переформатирования раздела, но даже и без рестарта машины. Из этого вытекает первое преимущество ext3fs, особенно весомое в случае большого парка компьютеров. Второе же - чуть ли не максимальная надежность: ext3fs является единственной системой из рассматриваемых, в которой возможно журналирование операций не только с метаданными, но и с данными файлов.

В Ext3fs предусмотрено три режима работы - полное журналирование (full data journaling), журналирование с обратной записью (writeback), а также задействуемое по умолчанию последовательное (ordered). Режим полного журналирования, как легко догадаться из названия, распространяется и на метаданные, и на данные файлов. Все их изменения сначала пишутся в файл журнала и только после этого фиксируются на диске. В случае аварийного отказа журнал можно повторно перечитать, приведя данные и метаданные в непротиворечивое состояние. Этот механизм практически гарантирует от потерь данных, однако является наиболее медленным.

В режиме отложенной записи, напротив, в файл журнала записываются только изменения метаданных файлов, подобно всем рассмотренным ниже файловым системам. То есть никакой гарантии сохранности данных он не предоставляет, однако обеспечивает наибольшее (в рамках Ext3fs) быстродействие.

В последовательном режиме также физически журналируются только метаданные файлов, однако, связанные с ними блоки данных логически группируются в единый модуль, называемый транзакцией (transaction). И эти блоки записываются перед записью на диск новых метаданных на диск, что, хотя и не гарантирует сохранности данных, весьма последней способствует. Причем - при меньших накладных расходах по сравнению с полным журналированием, обеспечивая промежуточный уровень быстродействия.Однако, Ext3fs ни в одном из режимов не может похвастаться высокой производительностью при решении настольных пользовательских задач. А в режиме полного журналирования возможны ситуации, вызывающие на некоторое время полный паралич машины.

XFS

Файловая система XFS, в отличие от молодых ReiserFS и ext3fs, развивается для фирмой SGI на протяжении почти десяти лет - впервые она появилась в версии Irix 5.3, вышедшей в 1994 г. Но в Linux она была портирована лишь недавно (текущая ее версия - 1.1, свободно доступна с сайта SGI's XFS page - om/projects/xfs) и по сию пору не поддерживается официальным ядром.

XFS - единственная 64-разрядная файловая система из рассмотренных. Однако уникальность ее - не только в этом. Особенностями XFS являются:

* механизм allocation group, то есть деление единого дискового раздела на несколько равных областей, имеющих собственные списки inodes и свободных блоков, для распараллеливания дисковых операций;

* логическое журналирование только изменений метаданных, но - с частым сбросом их на диск для минимизации возможных потерь при сбоях;

* механизм delayed allocation - ассигнование дискового пространства при записи файлов не во время журналирования, а при фактическом сбросе их на диск, что, вместе с повышением производительности, предотвращает фрагментацию дискового раздела;

* списки контроля доступа (ACL, Access Control List) и расширенные атрибуты файлов (extended attributes), рассмотрение которых далеко выходит за рамки нынешней темы.

В результате XFS предстает как очень сбаллансированная файловая система: она почти столь же надежна, как Ext3fs, и не очень уступает ReiserFS в быстродействии на большинстве файловых операций. А при манипуляциях с (очень) большими файлами XFS - просто вне конкуренции: как легко догадаться по имени фирмы-разработчика, она ориентирована на работу с мультимедийными приложениями с их огромными потоками данных.

Все сказанное позволяет сделать вывод, что XFS - оптимальная файловая система для Linux. Однако следует учесть: в отличие от ReiserFS и ext2fs, поддержка которых является штатными опциями ядра Linux, XFS по сию пору (текущая версия - 2.4.19) не поддерживается каноническим ядром Линуса Торвальдса.Возможность работы с XFS обеспечивает специальный патч

(xfs-2.4.1X-all-i386.bz2) вместе с соответствующими утилитами поддержки: традиционные средства e2fsprogs, для XFS не пригодны. Утилиты поддержки для XFS объединены в

несколько пакетов, из которых абсолютно необходимым является xfsprogs.