Защита информационных процессов в компьютерных системах

  1. Основные угрозы информации, обрабатываемой в компьютерных системах.
  2. Особенности построения систем защиты информации в зависимости от источника угроз.
  3. Использование средств разграничения доступа для повышения защищённости компьютерных систем.
  4. Использование мониторов безопасности повышения защищённости компьютерной системы.
  5. Особенности реализации политик безопасности в компьютерных системах.
  6. Изменение конфигурации оборудования для повышения защищённости компьютерных систем.
  7. Использования шифрования для повышения защищённости компьютерных систем.
  8. Использование криптографического хэширования для контроля целостности программ и данных
  9. Механизмы защиты баз данных. Разграничение доступа.
  10. Механизмы защиты баз данных. Механизм ролей.
  11. Обеспечение надёжности баз данных. Особенности резервного копирования. Журналирование изменений.
  12. Механизмы повышения защищённости, реализуемые в центральном процессоре.
  13. Механизмы повышения защищённости, реализуемые во внешних устройствах.
  14. Механизмы защиты файловых систем.
  15. Скрытые каналы по памяти и по данным. Борьба со скрытыми каналами.
  16. Межсетевые экраны. Назначение, основные виды, особенности использования.
  17. Виртуальные частные сети. Назначение, основные виды, особенности использования.
  18. Системы обнаружения атак. Назначение, основные виды, особенности использования.
  19. Кольцевая система защиты памяти процессов.
  20. Особенности совместного использования процессами общих объектов в памяти
  21. Уязвимости платформы Windows NT. Переполнение буфера.
  22. Уязвимости платформы Windows NT. Сплайсинг функций.

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

В законе РФ «О безопасности» дано определение угрозы безопасности как совокупности условий, факторов, создающих опасность жизненно важным интересам личности, общества и государства.

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

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

1. Виды угроз

Определив понятие «угроза государству, обществу и личности» в широком смысле, рассмотрим его относительно не посредственного воздействия на конфиденциальную информацию, обрабатываемую на каком-либо объекте (кабинете, предприятии, фирме). Анализируя возможные пути воздействия на информацию, представляемую как совокупность п информационных элементов, связанных между собой логическими связями (рис. 2.4), можно выделить основные нарушения:

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

Кроме того, с точки зрения анализа процесса обработки ин формации выделяют такую угрозу, как блокирование доступа к обрабатываемой информации.

2. Характер происхождения угроз

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

Случайными, или естественными, являются угрозы, не зависящие от воли людей. В настоящее время принята следующая классификация угроз сохранности (целостности) информации (рис. 2.5).

3. Источники угроз

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

4. Предпосылки появления угроз

Существуют следующие предпосылки, или причины, появления угроз:

Взаимодействие угроз можно представить на рис. 2.6.

Перечисленные разновидности предпосылок интерпретируются следующим образом:

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

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

Последовательность и общее содержание проектирования индивидуальных систем защиты информации

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

Очевидно, что при проектировании СЗИ, как и других сложных систем, необходимо учитывать два основных показателя для оценки оптимальности: требуемый уровень защищенности информации и размеры имеющихся для построения СЗИ ресурсов (рис. 7.1).

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

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

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

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

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

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

Более детально принципы задания исходных данных для проектирования СЗИ будут рассмотрены ниже.

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

Типизация в самом общем виде определяется как разработка типовых конструкций или технологических процессов на основе общих для ряда изделий (процессов) технических характеристик. Типизация рассматривается как один из методов стандартизации.

Стандартизация — это процесс установления и применения стандартов, которые, в свою очередь, определяются как образцы, эталоны, модели, принимаемые за исходные для сопоставления с ними других подобных объектов. Стандарт же как нормативно-технический документ устанавливает комплекс норм, правил, требований к объекту стандартизации и утверждается компетентным органом.

Анализ концепции защиты информации вообще и подходов к архитектурному построению СЗИ в частности показывает, что с целью создания наилучших предпосылок для оптимизации СЗИ целесообразно выделить три уровня типизации и стандартизации:

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

Характерным для процесса типизации СЗИ является ужесточение требований по использованию типовых решений высокого уровня с ростом важности обрабатываемой информации. Примером здесь может служить строго регламентированное в соответствии с действующей нормативной базой использование механизмов и средств защиты информации, составляющей государственную тайну. Такой подход характерен, например, для шифрорганов систем шифрованной связи.

Другим примером типизации СЗИ на высшем уровне является классификация автоматизированных систем обработки информации в соответствии с руководящими документами Гостехкомиссии РФ (табл. 7.1).

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

Как было рассмотрено выше («Архитектура СЗИ»), в качестве структурно ориентированных можно выбрать компоненты СЗИ, каждый из которых ориентирован на защиту ин формации в конкретном типовом структурном элементе ОИ (ПЭВМ, ЛВС, СПД и т. д.). Другим вариантом является использование в качестве структурного элемента одного из рубежей защиты в соответствии с семирубежной моделью.

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

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

Наконец, типизация и стандартизация на низшем уровне предполагают разработку и стандартизацию типовых проектных решений по практической реализации средств защиты ин формации:

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

В соответствии с изложенным классификационная структура возможных вариантов подхода к проектированию СЗИ будет выглядеть так, как показано на рис. 7.2. Рекомендации по использованию вариантов можно найти в литературе [1].

Таким образом, обобщенный алгоритм проектирования СЗИ можно представить следующим образом:

Наряду с таким достоинством проектирования СЗИ с использованием ТПР, как относительная простота реализации, эти варианты имеют явные недостатки, связанные с возможным дублированием в рамках всей СЗИ отдельных механизмов защиты, входящих в состав типовых компонентов.

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

Алгоритм проектирования индивидуальных систем за щиты

Проектирование СЗИ принципиально ничем не отличается от проектирования любых других систем организационно-технологического типа. Тогда в соответствии с общеизвестной методологией проектирования больших систем последовательность разработки индивидуального проекта СЗИ может быть представлена на рис. 7.3.

1. Обоснование требований к защите и анализ се условий

2. Определение функций защиты информации

3. Определение перечня возможных КНПИ и ПНЦИ

4. Обоснование перечня подлежащих решению задач по защите

5. Выбор средств, необходимых для решения задач по защите

6. Оценка ожидаемой эффективности выбранных механизмов

7. Обоснование уточнений на проектирование

8. Обоснование структуры СЗИ

9. Технико-экономические оценки проекта

10. Решение организационно-правовых вопросов ЗИ

Рассмотрим общее содержание выделенных этапов проектирования.

Этап 1 — обоснование требований и анализ условий защиты информации:

—        анализ условий защиты информации на ОИ.

Этап 2 — определение функций защиты информации (обоснование перечня тех функций защиты, осуществление которых позволит обеспечить требуемый уровень защиты в потенциально возможных условиях функционирования ОИ).

Этап 3 — определение перечня потенциально возможных КНПИ и ПНЦИ, их классификация, определение характерис тик КНПИ.

Этап 4 — обоснование перечня подлежащих решению задач по защите:

Этап 5 — выбор средств, достаточных для решения выбранных задач по защите информации:

Этап 6—оценка эффективности защиты информации в условиях выбранных задач защиты информации:

Этап 7—обоснование уточнений задания на проектирование:

Этап 8 — обоснование структуры и технологии функционирования СЗИ:

—        обоснование технологии управления защитой информации.

Этап 9 — технико-экономические оценки проекта:

Этап 10 — решение организационно-правовых вопросов по защите информации:

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

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

В условиях отсутствия реальных СОИ оптимальным решением задачи является моделирование систем защиты информации.

Разграничение доступа может быть физическим и логическим.

Физическое разграничение доступа подразумевает выделение определённых пространственных зон (территорий, помещений) и определение круга лиц, которым разрешён доступ в ту или иную зону. Например, на территорию предприятия разрешён доступ только сотрудникам предприятия. Чтобы контролировать доступ (то есть пропускать «своих» и не пропускать «чужих») существует служба охраны и проходная, оснащённая теми или иными техническими средствами. Однако на территории предприятия могут быть места, куда допускаются не все сотрудники предприятия. Например, в помещения первого отдела разрешён вход только сотрудникам этого отдела. Для ограничения доступа в такие помещения могут использовать дополнительные посты охраны, специальные кодовые замки и другие технические устройства.

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

Однако чаще под разграничением доступа имеется в виду логическое управление доступом, то есть комплекс программных средств, позволяющий специфицировать и контролировать действия, которые субъекты (пользователи и процессы) могут выполнять над объектами (информацией и другими компьютерными ресурсами).

Логическое управление доступом — основной механизм многопользовательских систем, призванный обеспечить конфиденциальность и целостность объектов.

С формальной точки зрения задача управления доступом сводится к следующему. Пусть имеется совокупность субъектов (в дальнейшем для простоты под субъектами будем понимать только пользователей компьютера) и набор объектов (например, файлов на жёстком диске компьютера). Задача логического управления доступа состоит в том, чтобы для каждой пары «субъект — объект» определить множество допустимых операций (зависящее, может быть, от некоторых дополнительных условий) и контролировать  выполнение установленного порядка.

Отношение «субъекты — объекты» можно представить в виде матрицы доступа, в строках которой перечислены субъекты, в столбцах — объекты, а в пересечении строк и столбцов записаны разрешённые виды доступа и дополнительные условия.

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

Файл А Файл В Линия связи
Пользователь 1 Только чтение Только чтение Нет доступа
Пользователь 2 Только чтение Чтение и запись С 10:00 до 18:00
Пользователь 3 Полный доступ Полный доступ Круглосуточно

После того, как права субъектов в отношении объектов определены, встаёт задача контроля соблюдения этих прав. Для этого должны существовать программные средства, которые позволяют, с одной стороны, блокировать попытку запрещённого доступа, а с другой стороны, регистрировать действия пользователей (либо действия, выполняемые над определёнными объектами).

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

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

Следует отметить, что для аудита может использоваться не только информация, специально регистрируемая средствами контроля доступа, но и вообще любые данные, так или иначе отражающие характер действий пользователя (дата и время создания файлов, дата и время регистрации в системе, информация в заголовках электронных писем). Следует, однако, помнить, что такая информация может быть подделана злоумышленником. Например, в 1996 году личный секретарь вице — президента компании Oraclе предъявила судебный иск, обвиняя президента корпорации в незаконном увольнении после того, как она отвергла его ухаживания. В доказательство своей правоты женщина предъявила электронное письмо, якобы отправленное ей президентом компании. Однако президент предъявил файл с регистрационной информацией компании сотовой связи, из которого видно, что в указанное время он разговаривал по мобильному телефону, находясь вдалеке от рабочего места. Таким образом, в суде возникло противостояние «файл против файла». Суд решил, что подделано электронное письмо, так как секретарша знала пароль президента.  Таким образом, использование системной информации в качестве доказательств в суде связано с определёнными сложностями.

Права и полномочия доступа

Права доступа определяют, какие действия субъект (пользователь), может выполнить с объектом. Набор возможных действий зависит от вида объекта. Само понятие объекта меняется от сервиса к сервису. Для операционной системы к  объектам относятся файлы, папки, устройства и процессы

Например в ОС Windows существуют следующие права доступа к папкам:

·        чтение (Read). Право на чтение автоматически устанавливается при открытии доступа к папке. Такое право позволяет просматривать имена файлов и папок в этой папке, просматривать данные о файле и его атрибуты; запускать программные файлы;

·        изменение (Modify). Право на изменения включает в себя все права на чтение и, кроме того, позволяет добавлять файлы и другие папки, изменять данные в файлах и удалять файлы и другие папки;

·        полный доступ (full control). Включает все права на чтение и изменение плюс право изменять права для файлов и папок NTFS (об NTFS см. далее).

Применительно к процессам могу рассматриваться права на создание и уничтожение.

Современные операционные системы могут поддерживать и другие объекты

Для систем управления реляционными базами данных объектом может являться база данных, таблица, форма, процедура. Применительно к таблицам могут задаваться права на операции поиска, добавления, модификации и удаления данных. У других объектов другие виды доступа.

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

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

Группы пользователей. Ролевое управление доступом

Группы пользователей. Формирование действующих разрешений

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

Поэтому часто пользователей объединяют в группы. Права доступа к объектам устанавливаются всей группы. Кроме того, можно установить дополнительные права для отдельных пользователей.

Разрешения пользователя на доступ к объектам файловой системы работают по принципу дополнения (аддитивности). Это значит, что действующие разрешения, то есть те разрешения, которые пользователь реально имеет в отношении конкретного каталога или файла, образуются из всех прямых и косвенных разрешений, назначенных пользователю для данного объекта с логической функцией ИЛИ. Например, если пользователь имеет прямо назначенное разрешение для каталога на чтение, а косвенно через членство в группе ему дано разрешение на запись, то в результате пользователь сможет читать информацию в файлах каталога и записывать в них данные.

Однако правило сложения разрешений с помощью логического ИЛИ не выполняется, когда пользователь имеет определённое разрешение, а группе в этом разрешении отказано (или наоборот). В этом случае отказ в разрешении имеет более высокий приоритет, чем предоставление разрешения, то есть в результате пользователь не будет иметь разрешения.

Ролевое управление доступом

При большом количестве пользователей традиционные системы управления доступом становятся крайне сложными для администрирования. Необходимы решения в объектно-ориентировочном стиле, способные эту сложность понизить. Таким решением является ролевое управление доступом. Суть его в том, что между пользователями и их правами появляются промежуточные сущности (роли). Для каждого пользователя одновременно могут быть активными несколько ролей, каждая из которых даёт ему определённые права. С другой стороны, каждая роль может быть присвоена нескольким пользователям. Ролевой доступ развивается более 10 лет (сама идея ролей, разумеется, значительно старше) как на уровне операционных систем, так и в рамках СУБД и других сервисов. В частности, существует реализации ролевого доступа для Web — серверов.

В 2001 году Национальный институт стандартов и технологий США предложил проект стандарта ролевого управления доступом (http://csrc.nist.gov/rbacl). Каждой роли приписываются определённые права доступа. Например, роли «сотрудник» приписываются права просмотра информации о продукции предприятия и распоряжений администрации; а роли «бухгалтер» приписываются, кроме того, права изменения информации о зарплате сотрудников. С другой стороны, каждому пользователю  во время сеанса работы приписывается определённая роль (или несколько ролей). В соответствии с данной ролью пользователь и получает права доступа.

При ролевом управлении доступом должны соблюдаться принципы разделения обязанностей.

Статическое разделение обязанностей налагает ограничения на приписывание пользователей ролям. Например, если пользователь приписан роли «бухгалтер», то он не может быть приписан роли «архивариус».

Динамическое разделение обязанностей отличается от статического только тем, что рассматриваются роли, активные в течение одного сеанса пользователя. Например, один и тот же пользователь имеет право выступать и в роли «бухгалтер», и в роли «кассир», но не одновременно: чтобы стать «бухгалтером», он должен сначала закрыть кассу. Тем самым реализуется так называемое «временное ограничение доверия».

Сканеры уязвимостей позволяют проверить различные приложения в системе на предмет наличия «дыр», которыми могут воспользоваться злоумышленники. Также могут быть использованы низкоуровневые средства, такие как сканер портов, для выявления и анализа возможных приложений и протоколов, выполняющихся в системе.

Типы сканеров уязвимостей

Работу сканера уязвимостей можно разбить на 4 шага:

Сканеры могут быть вредоносными или «дружественными». Последние обычно останавливаются в своих действиях на шаге 2 или 3, но никогда не доходят до шага 4.

Среди сканеров уязвимостей можно выделить:

Программное обеспечение

Десятка лучших по мнению insecure.org сканеров уязвимости (2006 г.)[1]

Nessus: Оценка уязвимостей под UNIX

GFI LANguard: Коммерческий сканер сетевых уязвимостей под Windows

Retina: Коммерческий сканер для оценки уязвимостей

Core Impact: Автоматизированный продукт для тестирования несанкционированных проникновений в систему

ISS Internet Scanner: Оценка уязвимостей на уровне приложений

X-scan: Сканер для исследования сетевых уязвимостей

Sara: Security Auditor’s Research Assistant

QualysGuard: Сканер уязвимостей (веб-сервис)

SAINT: Security Administrator’s Integrated Network Tool

MBSA: Microsoft Baseline Security Analyzer

Прочие известные сканеры уязвимостей:

XSpider

OpenVAS

Сканер-ВС

Система обнаружения вторжений (СОВ) — программное или аппаратное средство, предназначенное для выявления фактов неавторизованного доступа в компьютерную систему или сеть либо несанкционированного управления ими в основном через Интернет. Соответствующий английский термин — Intrusion Detection System (IDS). Системы обнаружения вторжений обеспечивают дополнительный уровень защиты компьютерных систем.

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

Обычно архитектура СОВ включает:

сенсорную подсистему, предназначенную для сбора событий, связанных с безопасностью защищаемой системы

подсистему анализа, предназначенную для выявления атак и подозрительных действий на основе данных сенсоров

хранилище, обеспечивающее накопление первичных событий и результатов анализа

консоль управления, позволяющая конфигурировать СОВ, наблюдать за состоянием защищаемой системы и СОВ, просматривать выявленные подсистемой анализа инциденты

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

Виды систем обнаружения вторжений

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

Сетевая СОВ (Network-based IDS, NIDS) отслеживает вторжения, проверяя сетевой трафик и ведет наблюдение за несколькими хостами. Сетевая система обнаружения вторжений получает доступ к сетевому трафику, подключаясь к хабу или свитчу, настроенному на зеркалирование портов, либо сетевое TAP устройство. Примером сетевой СОВ является Snort.

Основанное на протоколе СОВ (Protocol-based IDS, PIDS) представляет собой систему (либо агента), которая отслеживает и анализирует коммуникационные протоколы со связанными системами или пользователями. Для веб-сервера подобная СОВ обычно ведет наблюдение за HTTP и HTTPS протоколами. При использовании HTTPS СОВ должна располагаться на таком интерфейсе, чтобы просматривать HTTPS пакеты еще до их шифрования и отправки в сеть.

Основанная на прикладных протоколах СОВ (Application Protocol-based IDS, APIDS) — это система (или агент), которая ведет наблюдение и анализ данных, передаваемых с использованием специфичных для определенных приложений протоколов. Например, на веб-сервере с SQL базой данных СОВ будет отслеживать содержимое SQL команд, передаваемых на сервер.

Узловая СОВ (Host-based IDS, HIDS) — система (или агент), расположенная на хосте, отслеживающая вторжения, используя анализ системных вызовов, логов приложений, модификаций файлов (исполняемых, файлов паролей, системных баз данных), состояния хоста и прочих источников. Примером является OSSEC.

Гибридная СОВ совмещает два и более подходов к разработке СОВ. Данные от агентов на хостах комбинируются с сетевой информацией для создания наиболее полного представления о безопасности сети. В качестве примера гибридной СОВ можно привести Prelude.

Пассивные и активные системы обнаружения вторжений

В пассивной СОВ при обнаружении нарушения безопасности, информация о нарушении записывается в лог приложения, а также сигналы опасности отправляются на консоль и/или администратору системы по определенному каналу связи. В активной системе, также известной как Система Предотвращения Вторжений (IPS — Intrusion Prevention system  (англ.)), СОВ ведет ответные действия на нарушение, сбрасывая соединение или перенастраивая межсетевой экран для блокирования трафика от злоумышленника. Ответные действия могут проводиться автоматически либо по команде оператора.

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

Свободно распространяемые СОВ

Snort NIDS

Bro NIDS

Prelude Hybrid IDS

OSSEC HIDS

Samhain HIDS

Suricata

Open Source Tripwire

Политика безопасности в компьютерных системах

Защищенная КС обязательно должна иметь средства разграничения доступа пользователей к ресурсам КС, проверки подлинности пользователя и противодействия выводу КС из строя.

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

» множество субъектов;

» множество объектов;

» множество возможных операций над объектами;

» множество разрешенных операций для каждой пары субъект-объект, являющееся подмножеством множества возможных состояний.

Элементы множества операций над объектами выбираются в зависимости от назначения КС, решаемых задач и конфиденциальности информации. Например, операции «создание объекта», «удаление объекта», «чтение данных», «запись данных» и т.д.

В защищенной КС всегда присутствует субъект, выполняющий контроль операций субъектов над объектами, например, в операционной системе Windows таким субъектом является псевдопользователь SYSTEM. Этот компонент фактически отвечает за реализацию политики безопасности, которая реализуется путем описания доступа субъектов к объектам.

Существуют два типа политики безопасности: дискретная (дискреционная) и мандатная (полномочная). Основой дискретной политики безопасности является дискреционное управление доступом, которое определяется двумя свойствами:

» все субъекты и объекты должны быть идентифицированы;

» права доступа субъекта к объекту определяются на основе некоторого задаваемого набора правил.

К достоинствам дискретной политики безопасности можно отнести относительно простую реализацию соответствующих механизмов защиты. Этим обусловлен тот факт, что большинство используемых в настоящее время КС обеспечивают именно дискретную политику безопасности. В качестве примера реализации дискретной политики безопасности можно привести матрицу доступов, строки которой соответствуют субъектам системы, а столбцы — объектам; элементы матрицы представляют фиксированный набор или список прав доступа. К ее недостаткам относится статичность модели, не учитывающая динамику изменений состояния КС. Например, при подозрении на НСД к информации, необходимо оперативно изменить права доступа к ней, но сделать это с помощью матрицы доступа, которая формируется вручную, не просто.

Мандатная модель политики безопасности основывается на том, что:

» все субъекты и объекты должны быть идентифицированы;

» задан линейно упорядоченный набор меток секретности;

» каждому объекту присвоена метка секретности, определяющая ценность содержащейся в ней информации — его уровень секретности;

» каждому субъекту системы присвоена метка секретности, определяющая уровень доверия к нему — его уровень доступа.

В отличие от дискретной политики, которая требует определения прав доступа для каждой пары субъект-объект, мандатная политика, назначением метки секретности объекту, однозначно определяет круг субъектов, имеющих права доступа к нему. И. наоборот, назначением метки секретности субъекту, однозначно определяется круг объектов, к которым он имеет права доступа.

Технические средства защиты — это средства, в которых основная защитная функция реализуется некоторым техническим устройством (комплексом, системой).

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

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

Системную классификацию технических средств защиты удобно провести по следующей совокупности показателей:

5)            стоимость приобретения, установки и эксплуатации. Рассмотрим возможные значения перечисленных показателей.

1.            функциональное назначение

В зависимости от цели и места применения, выполняемых функций и физической реализуемости технические средства можно условно разделить на физические и аппаратные:

а)            аппаратные средства защиты:

б)            физические средства защиты:

2.            Сопряженность с основными средствами защиты

По степени взаимодействия с другими техническими устройствами средства защиты подразделяются:

—           встроенные (конструктивно включенные в состав аппаратуры технических средств ООИ).

3.            Сложность

В зависимости от принципов построения технического средства защиты различают:

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

4.            Тип средства

По принципу работы элементов устройств средства защиты подразделяются на механические, электрические, оптические, электронные, комбинированные. Современные технические средства защиты имеют, как правило, комбинированный тип (электромеханические, оптико-электронные и т. п.).

5.            Стоимость

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

Шифрование — это способ изменения сообщения или другого документа, обеспечивающее искажение (сокрытие) его содержимого. (Кодирование – это преобразование обычного, понятного, текста в код. При этом подразумевается, что существует взаимно однозначное соответствие между символами текста(данных, чисел, слов) и символьного кода – в этом принципиальное отличие кодирования от шифрования. Часто кодирование и шифрование считают одним и тем же, забывая о том, что для восстановления закодированного сообщения, достаточно знать правило подстановки(замены). Для восстановления же зашифрованного сообщения помимо знания правил шифрования, требуется и ключ к шифру. Ключ понимается нами как конкретное секретное состояние параметров алгоритмов шифрования и дешифрования. Знание ключа дает возможность прочтения секретного сообщения. Впрочем, далеко не всегда незнание ключа гарантирует то, что сообщение не сможет прочесть посторонний человек.). Шифровать можно не только текст, но и различные данные – от файлов баз данных и текстовых процессоров до файлов изображений.

Шифрование используется человечеством с того самого момента, как появилась первая секретная информация, т. е. такая, доступ к которой должен быть ограничен.

Идея шифрования состоит в предотвращении просмотра истинного содержания сообщения(текста, файла и т.п.) теми , у кого нет средств его дешифрования. А прочесть файл сможет лишь тот, кто сможет его дешифровать.

Шифрование появилось примерно четыре тысячи лет тому назад. Первым известным применением шифра (кода) считается египетский текст, датированный примерно 1900 г. до н. э., автор которого использовал вместо обычных (для египтян) иероглифов не совпадающие с ними знаки.

Один из самых известных методов шифрования носит имя Цезаря, который если и не сам его изобрел, то активно им пользовался. Не доверяя своим посыльным, он шифровал письма элементарной заменой А на D, В на Е и так далее по всему латинскому алфавиту. При таком кодировании комбинация XYZ была бы записана как АВС, а слово «ключ» превратилось бы в неудобоваримое «нобъ»(прямой код N+3).

Спустя 500 лет шифрование стало повсеместно использоваться при оставлении текстов религиозного содержания, молитв и важных государственных документов.

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

Основные понятия и определения криптографии

Криптография дает возможность преобразовать информацию таким образом, что ее прочтение (восстановление) возможно только при знании ключа.

Некоторые основные понятия и определения.

Алфавит — конечное множество используемых для кодирования информации знаков.

Текст — упорядоченный набор из элементов алфавита.

В качестве примеров алфавитов, используемых в современных ИС можно привести следующие:

  • алфавит Z33 — 32 буквы русского алфавита и пробел;
  • алфавит Z256 — символы, входящие в стандартные коды ASCII и КОИ-8;
  • бинарный алфавит — Z2 = {0,1};
  • восьмеричный алфавит или шестнадцатеричный алфавит;

Шифрование — преобразовательный процесс: исходный текст, который носит также название открытого текста, заменяется шифрованным текстом.

Дешифрование — обратный шифрованию процесс. На основе ключа шифрованный текст преобразуется в исходный.

Ключ — информация, необходимая для беспрепятственного шифрования и дешифрования текстов.

Криптографическая система представляет собой семейство T преобразований открытого текста. члены этого семейства индексируются, или обозначаются символом k; параметр k является ключом. Пространство ключей K — это набор возможных значений ключа. Обычно ключ представляет собой последовательный ряд букв алфавита.

Криптосистемы разделяются на симметричные и с открытым ключом ( или асимметрические) .

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

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

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

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

Криптостойкостью называется характеристика шифра, определяющая его стойкость к дешифрованию без знания ключа (т.е. криптоанализу). Имеется несколько показателей криптостойкости, среди которых:

  • количество всех возможных ключей;
  • среднее время, необходимое для криптоанализа.

Преобразование Tk определяется соответствующим алгоритмом и значением параметра k. Эффективность шифрования с целью защиты информации зависит от сохранения тайны ключа и криптостойкости шифра.

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

Для современных криптографических систем защиты информации сформулированы следующие общепринятые требования:

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

Хеширование (иногда хэширование, англ. hashing) — преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш-функциями или функциями свёртки, а их результаты называют хешем, хеш-кодом или дайджестом сообщения (англ. message digest).

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

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

Контрольные суммы

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

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

Платой за столь высокую скорость является отсутствие криптостойкости — лёгкая возможность подогнать сообщение под заранее известную сумму. Также обычно разрядность контрольных сумм (типичное число: 32 бита) ниже, чем криптографических хешей (типичные числа: 128, 160 и 256 бит), что означает возможность возникновения непреднамеренных коллизий.

Простейшим случаем такого алгоритма является деление сообщения на 32- или 16- битные слова и их суммирование, что применяется, например, в TCP/IP.

Как правило, к такому алгоритму предъявляются требования отслеживания типичных аппаратных ошибок, таких, как несколько подряд идущих ошибочных бит до заданной длины. Семейство алгоритмов т. н. «циклических избыточных кодов» удовлетворяет этим требованиям. К ним относится, например, CRC32, применяемый в аппаратуре Ethernet и в формате упакованных файлов ZIP.

Криптографические хеш-функции

Среди множества существующих хеш-функций принято выделять криптографически стойкие, применяемые в криптографии. Для того, чтобы хеш-функция H считалась криптографически стойкой, она должна удовлетворять трем основным требованиям, на которых основано большинство применений хеш-функций в криптографии:

Необратимость: для заданного значения хеш-функции m должно быть вычислительно неосуществимо найти блок данных X, для которого H(X) = m.

Стойкость к коллизиям первого рода: для заданного сообщения M должно быть вычислительно неосуществимо подобрать другое сообщение N, для которого H(N) = H(M).

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

Данные требования не являются независимыми:

Обратимая функция нестойка к коллизиям первого и второго рода.

Функция, нестойкая к коллизиям первого рода, нестойка к коллизиям второго рода; обратное неверно.

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

Атака «дней рождения» позволяет находить коллизии для хеш-функции с длиной значений n битов в среднем за примерно 2n / 2 вычислений хеш-функции. Поэтому n-битная хеш-функция считается криптостойкой, если вычислительная сложность нахождения коллизий для неё близка к 2n / 2.

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

Применение хеш-функций

Хеш-функции также используются в некоторых структурах данных — хеш-таблицаx, фильтрах Блума и декартовых деревьях. Требования к хеш-функции в этом случае другие:

хорошая перемешиваемость данных

быстрый алгоритм вычисления

Сверка данных

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

Проверка на наличие ошибок

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

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

Ускорение поиска данных

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

Бытовым аналогом хеширования в данном случае может служить помещение слов в словаре по алфавиту. Первая буква слова является его хеш-кодом, и при поиске мы просматриваем не весь словарь, а только нужную букву.

В современных условиях любая деятельность сопряжена с оперированием больших объемов информации, которая производится широким кругом лиц. Защита данных от несанкционированного доступа – приоритетная задача при проектировании любых ИС.

Следствием возросшего значения инфы стали высокие требования к конфиденциальности данных. СУБД, особенно реляционные, стали доминирующим инструментом в этой области.

Обеспечение информационной безопасности СУБД приобретает решающее значение при выборе конкретного средства обеспечения необходимого уровня безопасности организации в целом.

Для СУБД важны три аспекта безопасности:

Конфиденциальность – это защита от несанкционированного доступа к инфе.

Общая идея защиты БД: следование рекомендациям для класса безопасности С2 в «критериях оценки надежности компьютерных систем».

Политика безопасности определена администратором БД. Однако решения защиты данных не должна ограничиваться рамками СУБД. Абсолютная защита данных не существует. Отсюда имеем, относительную защиту.

Относительная защита – это гарантия защиты на тот период времени, пока несанкционированный доступ влечет какие-либо последствия.

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

Конфиденциальная информация – информация, требующая защиты.

Доступ к инфе – ознакомление с ней, ее модификация и уничтожение.

Правила разграничения доступа – существование правил, реагирующие права субъектов к объктам.

Санкционированный доступ – доступ к инфе, который не нарушает правил разграничения доступа.

Несанкционированный доступ – доступ к инфе, который нарушает правила с использованием штатных средств, представляемых средствами вычислительных средств или автоматизированных систем.

Идентификация – присвоение объектам и субъектам доступа идентификатора, сравнение предъявляемого индефикатора с перечнем присвоенных идентификаторов.

Аутентификация – проверка принадлежности субъекту доступа, предъявленного им идентификатора, подтверждение подлинности.

В СУБД на этапе подключения к БД производится идентификация и проверка подлинности юзера. В дальнейшем юзер или процесс получают доступ к данным согласно набору полномочий.

В случае разрыва соединения юзера и БД текущая транзакция откатывается и при восстановлении соединения снова требуется идентификация и проверка полномочий.

Уровень полномочий субъекта.

Совокупность прав доступа субъекта (привилегии).

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

Юзеры СУБД.

Прикладные программисты – создание программ, юзающих БД. В смысле защиты данных прогер: пользователь, имеющий привилегии в создании объектов и манипулирования, так и юзером, имеющим привилегии только манипулирования.

Конечные юзеры БД – работают с БД через терминал или Doc-станцию, имеют строго ограниченный набор привилегий манипулирования данных. Этот набор может определяться при конфигурировании интерфейса конечного юзера и не изменяется. Политику безопасности определяет администратор безопасности или администратор БД.

Администраторы БД – создают БД, технический пароль над функционированием, обеспечивают необходимое быстродействие системы.

Обязанности администратора: обеспечение юзерам доступа к необходимым им данным, написание необходимых юзеру внешних представлений данных.

Администратор определяет правила безопасности и целостности данных.

Дискреционная защита.

Дискреционное управление доступом – это разграничение доступа между поименованными субъектами и объектами.

Субъект с определенным правом доступа может передавать это право любому другому субъекту.

Эта защита – многоуровневая логическая защита.

Логическая защита СУБД – набор привилегий или ролей по отношению к защищаемому объекту. К ней можно отнести и владение таблицей.

Инфа о зарегистрированных юзерах хранится в системном каталоге. Следуя технологии открытых систем, субъект доступа может обращаться по средствам СУБД и БД только из программ, поставляемых в дистрибутиве или подготовленных им самим. Только с помощью штатных средств системы.

Все субъекты контроля системы разделены для системы на ряд категорий:

Connect – соединение с БД, выполнение запросов к данным. Все действия регламентированы выданными привилегиями.

RESOURCE – привилегированные юзеры, имеющие право создания собственных объектов в БД.

Юзер – владелец объекта, обладает полным набором привилегий для управления объектом.

DBA – администратор БД. Включает возможности предыдущих категорий и вводит или удаляет субъект защиты или изменяет их категорию. Привилегии юзеру могут быть назначены администратором явно и не явно (через роль).

Роль – еще один возможный именованный носитель привилегий.

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

Управление доступом на основе ролей (англ. Role Based Access Control, RBAC) — развитие политики избирательного управления доступом, при этом права доступа субъектов системы на объекты группируются с учетом специфики их применения, образуя роли.

Формирование ролей призвано определить четкие и понятные для пользователей компьютерной системы правила разграничения доступа. Ролевое разграничение доступа позволяет реализовать гибкие, изменяющиеся динамически в процессе функционирования компьютерной системы правила разграничения доступа.

Такое разграничение доступа является составляющей многих современных компьютерных систем. Как правило, данный подход применяется в системах защиты СУБД, а отдельные элементы реализуются в сетевых операционных системах. Ролевой подход часто используется в системах, для пользователей которых четко определен круг их должностных полномочий и обязанностей.

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

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

Базовая модель RBAC

Для определения модели RBAC используются следующие соглашения:

S = Субъект (англ. Subject) = Человек или автоматизированный агент (множество пользователей);

R = Роль (англ. Role) = Рабочая функция или название, которое определяется на уровне авторизации (множество ролей);

P = Разрешения (англ. Permissions) = Утверждения режима доступа к ресурсу (множество прав доступа на объекты системы);

SE = Сессия (англ. Session) = Соответствие между S, R и/или P

SA = Назначение субъекта (англ. Subject Assignment)

PA: R → 2p — функция, определяющая для каждой роли множество прав доступа; при этом для каждого p ∈ P существует r ∈ R такая, что p ∈ PA(r); (англ. Permission Assignment)

RH = Частично упорядоченная иерархия ролей (англ. Role Hierarchy). RH может быть еще записана так: ≥

Один субъект может иметь несколько ролей.

Одну роль могут иметь несколько субъектов.

Одна роль может иметь несколько разрешений.

Одно разрешение может принадлежать нескольким ролям.

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

Используя нотацию теории множеств:

, при этом разрешения назначаются связям ролей в отношении «многие ко многим».

, при этом субъекты назначаются связям ролей и субъектов в отношении «многие ко многим».

Обозначение: x ≥ y означает, что x наследует разрешения y.

Субъект может иметь множество одновременных сессий с различными разрешениями.

Возможности и применение

Технология управления доступом на основе ролей достаточно гибка и сильна, чтобы смоделировать как избирательное управление доступом (DAC)[3], так и мандатное управление доступом (MAC)[4]

До разработки RBAC, единственными известными моделями управления доступом были MAC и DAC: если модель была не MAC, то она была DAC, и наоборот. Исследования в 90-х показали, что RBAC не попадает ни в ту, ни в другую категорию.

Роли создаются внутри организации для различных рабочих функций. Определенным ролям присваиваются полномочия (permissions) для выполнения тех или иных операций. Штатным сотрудникам (или другим пользователям системы) назначаются фиксированные роли, через которые они получают соответствующие привилегии для выполнения фиксированных системных функций. В отличие от управления доступом на основе контекста (англ. context-based access control, CBAC), реализация RBAC в чистом виде не принимает во внимание текущую ситуацию (такую как, например, откуда было установлено соединение).

RBAC отличается от списков контроля доступа (англ. access control lists, ACL), используемых в традиционных избирательных системах управления доступом, тем, что может давать привилегии на сложные операции с составными данными, а не только на атомарные операции с низкоуровневыми объектами данных. Например, список контроля доступа может предоставить или лишить права записи в такой-то системный файл, но он не может ограничить то, каким образом этот файл может быть изменен. Система, основанная на RBAC, позволяет создать такую операцию как открытие «кредита» в финансовом приложении или заполнение записи «тест на уровень сахара в крови» в медицинском приложении. Присвоение привилегии на выполнение такой-либо операции многозначно, так как операции являются дробящимися в пределах приложения.

Концепции иерархии ролей и ограничений позволяют создать или смоделировать контроль доступа на основе решетки (англ. lattice-based access control, LBAC) средствами RBAC. Таким образом, RBAC может быть основанием и расширением LBAC.

В организациях с разнородной IT-инфраструктурой, содержащих десятки и сотни систем и приложений, помогает использование иерархии ролей и наследования привилегий. Без этого использование RBAC становится крайне запутанным. В статье «Дополнительные роли: практический подход к обслуживанию пользователей предприятия»[5] обсуждаются стратегии, альтернативные большому масштабу присвоения привилегий пользователям.

Современные системы расширяют старую модель NIST[6] ограничениями RBAC для развертывания на больших предприятиях. Существует несколько академических документов и по меньшей мере одна коммерческая система — Beyond NIST.

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

RBAC широко используется для управления пользовательскими привилегиями в пределах единой системы или приложения. Список таких систем включает в себя Microsoft Active Directory, SELinux, FreeBSD, Solaris, СУБД Oracle, PostgreSQL 8.1, SAP R/3, Lotus Notes и множество других.

Систе́ма управле́ния ба́зами да́нных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных.

Основные функции СУБД

Обычно современная СУБД содержит следующие компоненты:

Резервное копирование (англ. backup) — процесс создания копии данных на носителе (жёстком диске, дискете и т. д.), предназначенном для восстановления данных в оригинальном месте их расположения в случае их повреждения или разрушения.

Цель

Резервное копирование необходимо для возможности быстрого и недорогого восстановления информации (документов, программ, настроек и т. д.) в случае утери рабочей копии информации по какой-либо причине.

Кроме этого решаются смежные проблемы:

Дублирование данных

Передача данных и работа с общими документами

Требования к системе резервного копирования

Надёжность хранения информации — обеспечивается применением отказоустойчивого оборудования систем хранения, дублированием информации и заменой утерянной копии другой в случае уничтожения одной из копий (в том числе как часть отказоустойчивости).

Простота в эксплуатации — автоматизация (по возможности минимизировать участие человека: как пользователя, так и администратора).

Быстрое внедрение — простая установка и настройка программ, быстрое обучение пользователей.

Виды резервного копирования

Полное резервирование (Full backup);

Дифференциальное резервирование (Differential backup);

Добавочное резервирование (Incremental backup);

Пофайловый метод;

Блочное инкрементальное копирование (Block level incremental)

Журнализация изменений — функция СУБД, которая сохраняет информацию, необходимую для восстановления базы данных в предыдущее консистентное состояние в случае логических или физических отказов.

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

порядковый номер, тип и время изменения;

идентификатор транзакции;

объект, подвергшийся изменению (номер хранимого файла и номер блока данных в нём, номер строки внутри блока);

предыдущее состояние объекта и новое состояние объекта.

Формируемая таким образом информация называется журнал изменений базы данных. Журнал содержит отметки начала и завершения транзакции, и отметки принятия контрольной точки (см. ниже).

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

СУБД с отложенной записью периодически выполняет контрольные точки. Во время выполнения этого процесса все незаписанные данные переносятся на внешнюю память, а в журнал пишется отметка принятия контрольной точки. После этого содержимое журнала, записанное до контрольной точки может быть удалено.

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

В случае логического отказа или сигнала отката одной транзакции журнал сканируется в обратном направлении, и все записи отменяемой транзакции извлекаются из журнала вплоть до отметки начала транзакции. Согласно извлеченной информации выполняются действия, отменяющие действия транзакции, а в журнал записываются компенсирующие записи. Этот процесс называется откат (rollback).

В случае физического отказа, если ни журнал, ни сама база данных не повреждена, то выполняется процесс прогонки (rollforward). Журнал сканируется в прямом направлении, начиная от предыдущей контрольной точки. Все записи извлекаются из журнала вплоть до конца журнала. Извлеченная из журнала информация вносится в блоки данных внешней памяти, у которых отметка номера изменений меньше, чем записанная в журнале. Если в процессе прогонки снова возникает сбой, то сканирование журнала вновь начнется сначала, но фактически восстановление продолжиться с той точки, откуда оно прервалось. Мультиплексирование

Для увеличения отказоустойчивости СУБД может записывать одновременно несколько идентичных копий журнала изменений. Если в случае отказа одна из копий журнала окажется недоступной, СУБД восстановит базу данных используя любую из доступных копий. Такая стратегия называется мультиплексированием журнала изменений.

Архивирование

Как правило, журнал изменений перезаписывается сначала, как только заканчивается пространство внешней памяти, распределенное под него. Это позволяет восстановить базу данных до актуального и консистентного состояния, но только в том случае, если сама база данных не потеряна, пусть даже и не в актуальном состоянии.

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

Защищённый режим (режим защищённой виртуальной адресации) — режим работы процессора. Разработан фирмой Digital Equipment (DEC) для 32-разрядных компьютеров VAX-11, а также фирмой Intel для своих процессоров. Несмотря на то, что защищённый режим частично был реализован уже в процессоре 80286, там существенно отличался способ работы с памятью, так как процессоры еще были 16-битные и не была реализована страничная организация памяти. Применяется в процессорах и других производителей. Данный режим позволил создать многозадачные операционные системы — Microsoft Windows, UNIX и другие.

Особенности процессора 80286

В процессоре 80286, помимо реального режима, был реализован также защищённый режим. В защищённом режиме процессор может адресовать до 16 Мбайт виртуальной памяти за счёт изменения механизма адресации. Переключение из реального режима в защищённый происходит программно и относительно просто, однако для обратного перехода необходим аппаратный сброс процессора. Для отслеживания текущего режима работы процессора используется регистр слово состояния машины (MSW). Программы реального режима без модификаций в защищённом режиме исполняться не могут, также как и программы BIOS машины.

Суть защищённого режима в следующем: программист и разрабатываемые им программы используют логическое адресное пространство, размер которого может составлять 16 мегабайт. Логический адрес преобразуется в физический адрес автоматически с помощью схемы управления памятью (MMU). Благодаря защищённому режиму, в памяти может храниться только та часть программы, которая необходима в данный момент, а остальная часть может храниться во внешней памяти (например, на жёстком диске). В случае обращения к той части программы, которой нет в памяти в данный момент, операционная система может приостановить программу, загрузить требуемую секцию кода из внешней памяти и возобновить выполнение программы. Следовательно, становятся допустимыми программы, размер которых больше объема имеющейся памяти, и пользователю кажется, что он работает с большей памятью, чем на самом деле.

Физический адрес формируется следующим образом. В сегментных регистрах хранится селектор, содержащий индекс дескриптора в таблице дескрипторов (13 бит), 1 бит, определяющий к какой таблице дескрипторов будет производиться обращение (к локальной или к глобальной) и 2 бита запрашиваемого уровня привилегий. Далее происходит обращение к соответствующей таблице дескрипторов и соответствующему дескриптору, который содержит начальный 24-битный адрес сегмента, размер сегмента и права доступа, после чего вычисляется необходимый физический адрес путём сложения адреса сегмента со смещением из 16-разрядного регистра.

Особенности процессоров 80386 — 80486

С появлением 32-разрядных процессоров 80386 фирмы Intel процессоры могут работать в трех режимах: реальном, защищённом и виртуального процессора 8086.

В защищённом режиме используются полные возможности 32-разрядного процессора — обеспечивается непосредственный доступ к 4 Гбайт физического адресного пространства и многозадачный режим с параллельным выполнением нескольких программ (процессов). Собственно говоря, многозадачный режим организует многозадачная операционная система, однако микропроцессор предоставляет необходимый для этого режима мощный и надежный механизм защиты задач друг от друга с помощью четырехуровневой системы привилегий. Так же в этом режиме доступна страничная организация памяти, повышающая уровень защиты задач друг от друга и эффективность их выполнения.

В процессоре i386 компания Intel учла необходимость лучшей поддержки реального режима, потому что программное обеспечение времени его появления не было готово полностью работать в защищённом режиме. Поэтому, например, в i386, возможно переключение из защищённого режима обратно в реальный (при разработке 80286 считалось, что это не потребуется, поэтому на компьютерах с процессором 80286 возврат в реальный режим осуществляется схемно — через сброс процессора).

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

Страничная организация памяти

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

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

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

Устройства внешней памяти, которые в свою очередь, можно разделить на два класса:

устройства памяти с произвольным доступом, главным образом магнитные диски. К этому же классу относятся дискеты, магнитооптические и оптические диски. (Не все устройства данного типа являются дисками. Например, в 60-е и 70-е годы существовали магнитные барабаны, в которых каждому логическому сектору соответствовала одна дорожка на барабане и одна головка чтения-записи. Такие устройства обеспечивали гораздо более высокую скорость доступа, чем тогдашние магнитные диски, хотя и были намного более дорогими в расчете на килобайт емкости). Удачным универсальным обозначением для этого класса устройств является принятое в документации фирмы IBM сокращение DASD (Direct Access Storage Device — запоминающее устройство прямого доступа);

устройства памяти с последовательным доступом. В основном, это лентопротяжные устройства (стримеры и др.).

Устройства последовательного ввода/вывода: печатающие устройства, телетайпы, терминалы и т.д.

Векторные и растровые графические терминалы.

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

Сетевые адаптеры.

Устройства звукового ввода/вывода.

Устройства графического ввода/вывода: сканнеры или видеодекодеры (ввод), плоттеры, графические принтеры или видеокодеры (вывод).

Специализированная контрольно-измерительная аппаратура.

Драйверы внешних устройств

Драйвер (driver) представляет собой специализированный программный модуль, управляющий внешним устройством. Драйверы обеспечивают единый интерфейс к различным устройствам, тем самым «отвязывая» пользовательские программы и ядро ОС от особенностей аппаратуры.

Слово driver происходит от глагола to drive (вести) и переводится с английского языка как извозчик или шофер: тот, кто ведет транспортное средство.

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

Еще одна важная функция драйвера — это разделение доступа к устройству в средах с вытесняющей многозадачностью. Допускать одновременный неконтролируемый доступ к устройству для нескольких параллельно исполняющихся процессов просто нельзя, потому что для большинства внешних устройств даже простейшие операции ввода/вывода не являются атомарными.

Например, в большинстве аппаратных реализаций последовательного порта RS232 передача байта состоит из четырех шагов: записи значения в регистр данных, записи команды «передавать» в регистр команды, ожидания прерывания по концу передачи и проверки успешности передачи путем считывания статусного регистра устройства. Нарушение последовательности шагов может приводить к непредсказуемым последствиям — например, перезапись регистра данных после подачи команды может приводить к передаче искаженных данных и т.д.

Нельзя также забывать о неприятностях более высокого уровня — например, смешивании вывода разных процессов на печати или устройстве внешней памяти. Поэтому оказывается необходимо связать с каждым внешним устройством какой-то разграничитель доступа во времени. В современных ОС эта функция возлагается именно на драйвер. Обычно один из модулей драйвера представляет собой процесс-монитор (fork-процесс в VAX/VMS, стратегическую функцию в Unix, OS/2 и Windows NT), выполняющий асинхронно поступающие запросы на доступ к устройству. Подробнее этот механизм обсуждается в разделах 7.3.3 и 7.3.5.

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

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

При определении интерфейса драйвера разработчики ОС должны найти правильный баланс между противоречивыми требованиями: стремлением как можно сильнее упростить драйвер, чтобы облегчить его разработку и (косвенно) уменьшить вероятность опасных ошибок;

желанием предоставить гибкий и интеллектуальный интерфейс к разнообразным устройствам.

Защита и шифрование

Защита в NTFS построена на модели объектов Windows 2000. Файлы и каталоги защищены от доступа пользователей, не имеющих соответствующих прав. Открытый файл реализуется в виде объекта  «файл» с дескриптором защиты, хранящимся на диске как часть файла. Прежде чем процесс сможет открыть описатель какого-либо объекта, в том числе и объекта «файл», система защиты Windows 2000 должна убедится, что у этого процесса есть соответствующие полномочия. Дескриптор защиты в сочетании с требованием регистрации пользователя при входе в систему гарантирует, что ни один процесс не получит доступа к файлу без разрешения системного администратора или владельца файла.

Пользователи часто хранят на своих компьютерах конфиденциальную информацию. Хотя данные на серверах компаний обычно надежно защищены, информация, хранящаяся на портативном компьютере, может попасть в чужие руки в случае потери или кражи компьютера. Права доступа к файлам NTFS в таком случае не защитят данные, поскольку полный доступ к томам NTFS можно получить независимо от их защиты – достаточно воспользоваться программами, умеющими читать файлы NTFS вне среды Windows 2000. Кроме этого, права доступа к файлам NTFS становятся бесполезны при использовании другой системы Windows 2000 и учетной записи администратора, т.к. учетная запись администратора обладает привилегиями захвата во владение и резервного копирования, любая из которых позволяет получить доступ к любому защищенному объекту в обход его параметров защиты.

NTFS поддерживает механизм Encrypting File System (EFS), с помощью которого пользователи могут шифровать конфиденциальные данные. EFS полностью прозрачен для приложений. Это означает, что данные автоматически расшифровываются при чтении их приложением, работающим под учетной записью пользователя, который имеет права на просмотр этих данных, и автоматически шифруются при изменении их авторизованным приложением.

NTFS не допускает шифрования файлов, расположенных в корневом каталоге системного тома или в каталоге \Winnt, поскольку многие находящиеся там файлы нужны в процессе загрузки, когда EFS ещё не активна.

EFS использует криптографические сервисы, предоставляемые Windows 2000 в пользовательском режиме, и состоит из драйвера устройства режима ядра, тесно интегрированного с NTFS и DLL5-модулями пользовательского режима, которые взаимодействуют с подсистемой1 локальной аутентификации и криптографическими DLL.

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

Encrypting File System (EFS) — система шифрования данных, реализующая шифрование на уровне файлов в операционных системах Microsoft Windows NT (начиная с Windows 2000 и выше), за исключением «домашних» версий (Windows XP Home Edition, Windows Vista Basic и Windows Vista Home Premium). Данная система предоставляет возможность «прозрачного шифрования» данных, хранящихся на разделах с файловой системой NTFS, для защиты потенциально конфиденциальных данных от несанкционированного доступа при физическом доступе к компьютеру и дискам.

Аутентификация пользователя и права доступа к ресурсам, имеющие место в NT, работают, когда операционная система загружена, но при физическом доступе к системе возможно загрузить другую ОС, чтобы обойти эти ограничения. EFS использует симметричное шифрование для защиты файлов, а также шифрование, основанное на паре открытый/закрытый ключ для защиты случайно сгенерированного ключа шифрования для каждого файла. По умолчанию закрытый ключ пользователя защищён с помощью шифрования пользовательским паролем, и защищённость данных зависит от стойкости пароля пользователя.

Описание работы

EFS работает, шифруя каждый файл с помощью алгоритма симметричного шифрования, зависящего от версии операционной системы и настроек (начиная с Windows XP доступна теоретическая возможность использования сторонних библиотек для шифрования данных). При этом используется случайно сгенерированный ключ для каждого файла, называемый File Encryption Key (FEK), выбор симметричного шифрования на данном этапе объясняется его скоростью и большей надёжностью по отношению к асимметричному шифрованию.

FEK (случайный для каждого файла ключ симметричного шифрования) защищается путём асимметричного шифрования, использующего открытый ключ пользователя, шифрующего файл, и алгоритм RSA (теоретически возможно использование других алгоритмов асимметричного шифрования). Зашифрованный таким образом ключ FEK сохраняется в альтернативном потоке $EFS файловой системы NTFS. Для расшифрования данных драйвер шифрованной файловой системы прозрачно для пользователя расшифровывает FEK, используя закрытый ключ пользователя, а затем и необходимый файл с помощью расшифрованного файлового ключа.

Поскольку шифрование/расшифрование файлов происходит с помощью драйвера файловой системы (по сути надстройки над NTFS), оно происходит прозрачно для пользователя и приложений. Стоит заметить, что EFS не шифрует файлы, передаваемые по сети, поэтому для защиты передаваемых данных необходимо использовать другие протоколы защиты данных (IPSec или WebDAV).

Интерфейсы взаимодействия с EFS

Для работы с EFS у пользователя есть возможность использовать графический интерфейс проводника или утилиту командной строки.

Использование графического интерфейса

Для того, чтобы зашифровать файл или папку, содержащую файл, пользователь может воспользоваться соответствующим окном диалога свойства файла или папки, установив или сняв флажок «шифровать содержимое для защиты данных», при этом для файлов начиная с Windows XP можно добавить открытые ключи других пользователей, которые тоже будут иметь возможность расшифровать данный файл и работать с его содержимым (при наличии соответствующих разрешений). При шифровании папки шифруются все файлы, находящиеся в ней, а так же те, которые будут помещены в неё позднее.

При работе с проводником Windows возможно (по умолчанию) отображение зашифрованных папок и файлов другим (по умолчанию зелёным) цветом, позволяющим визуально отличить защищённое таким образом содержимое. При копировании зашифрованных файлов на раздел, где шифрование не поддерживается (например с файловой системой FAT32 и т. д.) будет выдано предупреждение о том, что файл будет расшифрован.

Методом редактирования реестра возможно добавить в контекстное меню проводника (и других, поддерживающих эту функциональность файловых менеджеров) пунктов «зашифровать» и «расшифровать», что повышает удобство работы при частом использовании этих функций, для чего необходимо создать (или изменить существующий) параметр реестра типа DWORD EncryptionContextMenu на 00000001, находящийся в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced.

Интерфейс командной строки

Для работы с EFS пользователем имеется также возможность использовать интерфейс командной строки — команда cipher. При выполнении данной команды без параметров будет выведено содержимое текущей папки с меткой U перед файлом если он не зашифрован, и E если зашифрован.

Команда зашифрования файла/папки имеет вид:

cipher /E <путь к папке>,

Команда расшифрования файла/папки имеет вид:

cipher /D <путь к папке>.

Данная утилита имеет ряд других возможностей, список которых может быть получен при помощи команды cipher /?, среди которых перешифрование файлов с новым ключом, генерация нового ключа шифрования, добавление агента восстановления и т. д.

Скрытый канал — это коммуникационный канал, пересылающий информацию методом, который изначально был для этого не предназначен.

Впервые понятие скрытого канала было введено в работе Батлера Лэмпсона «A Note of the Confinement Problem» 10 октября 1973 года, как «(каналы), не предназначенные для передачи информации совершенно, такие как воздействие служебной программы на загрузку системы»[1]. Чаще всего скрытый канал является паразитом по отношению к основному каналу: скрытый канал уменьшает пропускную способность основного канала. Сторонние наблюдатели обычно не могут обнаружить, что помимо основного канал передачи данных есть ещё дополнительный. Только отправитель и получатель знают это. Например, в стеганографии скрытые сообщения кодировались внутри графических изображений или других данных таким образом, что на глаз изменений было не заметить, однако получатель сообщения мог раскодировать зашифрованное сообщение.

Отличительные черты

Скрытый канал носит своё название в силу того факта, что он спрятан от систем разграничения доступа даже безопасных операционных систем, так как он не использует законные механизмы передачи, такие как чтение и запись, и потому не может быть обнаружен или проконтролирован аппаратными механизмами обеспечения безопасности, которые лежат в основе защищённых операционных систем. В реальных системах скрытый канал практически невозможно установить, и также его часто можно обнаружить с помощью наблюдения за быстродействием системы; кроме того, недостатками скрытых каналов являются низкое отношение сигнал/шум и низкие скорости передачи данных (порядка нескольких бит в секунду). Их также можно удалить с защищённых систем вручную с высокой степенью надёжности, если воспользоваться признанными стратегиями анализа скрытых каналов.

Скрытые каналы часто путают с использованием законных каналов, при котором происходит атака на псевдо-защищённые системы с низкой степенью доверенности, используя такие схемы как стеганография или даже менее сложные схемы, предназначенные для того, чтобы спрятать запрещённые объекты внутри объектов с легальной информацией. Подобные использования законных каналов с применением схем скрытия данных не являются скрытыми каналами и могут быть предотвращены доверенными системами с высокой степенью защищённости.

Скрытые каналы могут проходить сквозь защищённые операционные системы, и необходимы особые меры для их контроля. Единственным проверенным методом контроля скрытых каналов является так называемый анализ скрытых каналов. В то же время, защищённые операционные системы могут с лёгкостью предотвратить неверные (или незаконные) использования легальных каналов. Часто анализ легальных каналов на предмет скрытых объектов неверно представляют как единственную успешную меру против незаконного использования легальных каналов. Поскольку на практике это означает необходимость анализировать большое количество программного обеспечения, ещё в 1972 было показано что подобные меры неэффективны [2]. Не зная этого, многие верят в то, что подобный анализ может помочь справиться с рисками, связанными с легальными каналами.

Стандарт TCSEC

TCSEC — это набор стандартов, установленных Министерством обороны США.

Лэмпсоновское определение скрытого канала было перефразировано в TCSEC [2] так, чтобы имелись в виду способы передачи информации от более защищённого уровня к менее защищённому. В среде разделённых вычислений сложно полностью отделить один процесс от эффектов, которые другой процесс мог оказать на операционную среду. Скрытый канал создаётся процессом-отправителем, который модулирует некоторое состояние (такое как свободное пространство, доступность некоторого сервиса, времени ожидания запуска и т. д.), которое может быть обнаружено процессом-получателем.

В Критериях определяют два вида скрытых каналов:

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

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

Критерии, также известные как Оранжевая книга,[3] требуют, чтобы анализ скрытых каналов памяти был классифицирован как требование для системы класса B2, а анализ скрытых каналов времени как требование для класса B3.

Устранение скрытых каналов

Возможность наличия скрытых каналов не может быть устранена полностью, но её можно существенно уменьшить аккуратным проектированием системы и её анализом.

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

Похожим случаем является технология «port knocking». Обычно при передаче информации распределение запросов во времени не важно, и за ним не наблюдают, но при использовании «port knocking» оно становится существенным.

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

Основной задачей сетевого экрана является защита компьютерных сетей или отдельных узлов от несанкционированного доступа. Также сетевые экраны часто называют фильтрами, так как их основная задача — не пропускать (фильтровать) пакеты, не подходящие под критерии, определённые в конфигурации.

Некоторые сетевые экраны также позволяют осуществлять трансляцию адресов — динамическую замену внутрисетевых (серых) адресов или портов на внешние, используемые за пределами ЛВС.

Другие названия

Брандма́уэр (нем. Brandmauer) — заимствованный из немецкого языка термин, являющийся аналогом английского firewall в его оригинальном значении (стена, которая разделяет смежные здания, предохраняя от распространения пожара). Интересно, что в области компьютерных технологий в немецком языке употребляется слово «firewall».

Файрво́лл, файрво́л, файерво́л, фаерво́л — образовано транслитерацией английского термина firewall, эквивалентного термину межсетевой экран.

Разновидности сетевых экранов

Сетевые экраны подразделяются на различные типы в зависимости от следующих характеристик:

обеспечивает ли экран соединение между одним узлом и сетью или между двумя или более различными сетями;

происходит ли контроль потока данных на сетевом уровне или более высоких уровнях модели OSI;

отслеживаются ли состояния активных соединений или нет.

В зависимости от охвата контролируемых потоков данных сетевые экраны делятся на:

традиционный сетевой (или межсетевой) экран — программа (или неотъемлемая часть операционной системы) на шлюзе (сервере передающем трафик между сетями) или аппаратное решение, контролирующие входящие и исходящие потоки данных между подключенными сетями.

персональный сетевой экран — программа, установленная на пользовательском компьютере и предназначенная для защиты от несанкционированного доступа только этого компьютера.

Вырожденный случай — использование традиционного сетевого экрана сервером, для ограничения доступа к собственным ресурсам.

В зависимости от уровня, на котором происходит контроль доступа, существует разделение на сетевые экраны, работающие на:

сетевом уровне, когда фильтрация происходит на основе адресов отправителя и получателя пакетов, номеров портов транспортного уровня модели OSI и статических правил, заданных администратором;

сеансовом уровне (также известные как stateful) — отслеживающие сеансы между приложениями, не пропускающие пакеты нарушающих спецификации TCP/IP, часто используемых в злонамеренных операциях — сканировании ресурсов, взломах через неправильные реализации TCP/IP, обрыв/замедление соединений, инъекция данных.

уровне приложений, фильтрация на основании анализа данных приложения, передаваемых внутри пакета. Такие типы экранов позволяют блокировать передачу нежелательной и потенциально опасной информации, на основании политик и настроек.

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

В зависимости от отслеживания активных соединений сетевые экраны бывают:

stateless (простая фильтрация), которые не отслеживают текущие соединения (например, TCP), а фильтруют поток данных исключительно на основе статических правил;

stateful, stateful packet inspection (SPI) (фильтрация с учётом контекста), с отслеживанием текущих соединений и пропуском только таких пакетов, которые удовлетворяют логике и алгоритмам работы соответствующих протоколов и приложений. Такие типы сетевых экранов позволяют эффективнее бороться с различными видами DoS-атак и уязвимостями некоторых сетевых протоколов. Кроме того, они обеспечивают функционирование таких протоколов, как H.323, SIP, FTP и т. п., которые используют сложные схемы передачи данных между адресатами, плохо поддающиеся описанию статическими правилами, и, зачастую, несовместимых со стандартными, stateless сетевыми экранами.

Достоинства и недостатки, связанные с применением файрво́ла

Достоинства:

может значительно повысить безопасность сети и уменьшить риск для хостов подсети, фильтруя заведомо незащищенные службы. В результате, сетевая среда подвергается меньшему риску, поскольку через файрво́л смогут пройти только указанные протоколы;

может препятствовать получению из защищенной подсети или внедрению в защищенную подсеть информации с помощью любых уязвимых служб;

дает возможность контролировать доступ к системам сети;

может регистрировать все попытки доступа и предоставлять необходимую статистику об использовании Internet;

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

предоставляет средства регламентирования порядка доступа к сети, тогда как без файрво́л этот порядок целиком зависит от совместных действий пользователей.

Недостатки:

может заблокировать некоторые необходимые пользователю службы, такие как Telnet, FTP, Windows, NFS, и т.д.;

не защищает объект от проникновения через «люки» (back doors);

не обеспечивает защиту от внутренних угроз;

не защищает от загрузки пользователями зараженных вирусами программ из архивов Internet или от передачи таких программ через электронную почту;

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

все средства безопасности сосредоточены в одном месте, а не распределены между системами.

Типы межсетевых экранов

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

Уровень сетей и пакетные фильтры

Файрволлы уровня сети, также называемые пакетными фильтрами, действуют на сравнительно низком уровне протокола TCP/IP, не позволяя пакетам пройти сквозь экран, если они не удовлетворяют требованиям, на которые настроен файрволл. Администратор может назначать правила сам, либо они могут создаваться автоматически. Термин «пакетный фильтр» возник в контексте операционных систем BSD.

Современные файрволлы могут фильтровать трафик на основе многих свойств пакета, таких как IP адрес, источник, порт или адрес назначения и так далее. Также можно установить фильтрацию по протоколам, значениям TTL, сетям происхождения и по многим другим свойствам.

Уровень приложений

Эти экраны работают на прикладном уровне связки TCP/IP (например трафик браузера, либо весь FTP или Telnet трафик), и могут перехватить все пакеты, направляемые как приложением, так и к нему. В принципе, такие файрволы могут предотвратить весь нежелательный внешний трафик от достижения защищенных систем.

Прокси

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

VPN (англ. Virtual Private Network — виртуальная частная сеть) — обобщённое название технологий, позволяющих обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (например, Интернет). Несмотря на то, что коммуникации осуществляются по сетям с меньшим неизвестным уровнем доверия (например, по публичным сетям), уровень доверия к построенной логической сети не зависит от уровня доверия к базовым сетям благодаря использованию средств криптографии (шифрования, аутентификации, инфраструктуры открытых ключей, средств для защиты от повторов и изменений передаваемых по логической сети сообщений).

В зависимости от применяемых протоколов и назначения, VPN может обеспечивать соединения трёх видов: узел-узел, узел-сеть и сеть-сеть.Содержание [убрать]

Уровни реализации

Обычно VPN развёртывают на уровнях не выше сетевого, так как применение криптографии на этих уровнях позволяет использовать в неизменном виде транспортные протоколы (такие как TCP, UDP).

Пользователи Microsoft Windows обозначают термином VPN одну из реализаций виртуальной сети — PPTP, причём используемую зачастую не для создания частных сетей.

Чаще всего для создания виртуальной сети используется инкапсуляция протокола PPP в какой-нибудь другой протокол — IP (такой способ использует реализация PPTP — Point-to-Point Tunneling Protocol) или Ethernet (PPPoE) (хотя и они имеют различия). Технология VPN в последнее время используется не только для создания собственно частных сетей, но и некоторыми провайдерами «последней мили» на постсоветском пространстве для предоставления выхода в Интернет.

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

Структура VPN

VPN состоит из двух частей: «внутренняя» (подконтрольная) сеть, которых может быть несколько, и «внешняя» сеть, по которой проходит инкапсулированное соединение (обычно используется Интернет). Возможно также подключение к виртуальной сети отдельного компьютера. Подключение удалённого пользователя к VPN производится посредством сервера доступа, который подключён как к внутренней, так и к внешней (общедоступной) сети. При подключении удалённого пользователя (либо при установке соединения с другой защищённой сетью) сервер доступа требует прохождения процесса идентификации, а затем процесса аутентификации. После успешного прохождения обоих процессов, удалённый пользователь (удаленная сеть) наделяется полномочиями для работы в сети, то есть происходит процесс авторизации.

Классификация VPN

Классифицировать VPN решения можно по нескольким основным параметрам:

По степени защищенности используемой среды

Защищённые

Наиболее распространённый вариант виртуальных частных сетей. С его помощью возможно создать надежную и защищенную на основе ненадёжной сети, как правило, Интернета. Примером защищённых VPN являются: IPSec, OpenVPN и PPTP.

Доверительные

Используются в случаях, когда передающую среду можно считать надёжной и необходимо решить лишь задачу создания виртуальной подсети в рамках большей сети. Проблемы безопасности становятся неактуальными. Примерами подобных VPN решений являются: Multi-protocol label switching (MPLS) и L2TP (Layer 2 Tunnelling Protocol). (точнее сказать, что эти протоколы перекладывают задачу обеспечения безопасности на другие, например L2TP, как правило, используется в паре с IPSec).

По способу реализации

В виде специального программно-аппаратного обеспечения

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

В виде программного решения

Используют персональный компьютер со специальным программным обеспечением, обеспечивающим функциональность VPN.

Интегрированное решение

Функциональность VPN обеспечивает комплекс, решающий также задачи фильтрации сетевого трафика, организации сетевого экрана и обеспечения качества обслуживания.

По назначению

Intranet VPN

Используют для объединения в единую защищённую сеть нескольких распределённых филиалов одной организации, обменивающихся данными по открытым каналам связи.

Remote Access VPN

Используют для создания защищённого канала между сегментом корпоративной сети (центральным офисом или филиалом) и одиночным пользователем, который, работая дома, подключается к корпоративным ресурсам с домашнего компьютера, корпоративного ноутбука, смартфона или интернет-киоскa.

Extranet VPN

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

Internet VPN

Используется для предоставления доступа к интернету провайдерами, обычно в случае если по одному физическому каналу подключаются несколько пользователей.

Client/Server VPN

Он обеспечивает защиту передаваемых данных между двумя узлами (не сетями) корпоративной сети. Особенность данного варианта в том, что VPN строится между узлами, находящимися, как правило, в одном сегменте сети, например, между рабочей станцией и сервером. Такая необходимость очень часто возникает в тех случаях, когда в одной физической сети необходимо создать несколько логических сетей. Например, когда надо разделить трафик между финансовым департаментом и отделом кадров, обращающихся к серверам, находящимся в одном физическом сегменте. Этот вариант похож на технологию VLAN, но вместо разделения трафика, используется его шифрование.

По типу протокола

Существуют реализации виртуальных частных сетей под TCP/IP, IPX и AppleTalk. Но на сегодняшний день наблюдается тенденция к всеобщему переходу на протокол TCP/IP, и абсолютное большинство VPN решений поддерживает именно его. Адресация в нём чаще всего выбирается в соответствии со стандартом RFC5735, из диапазона Приватных сетей TCP/IP

По уровню сетевого протокола

По уровню сетевого протокола на основе сопоставления с уровнями эталонной сетевой модели ISO/OSI.

Примеры VPN

IPSec (IP security) — часто используется поверх IPv4.

PPTP (point-to-point tunneling protocol) — разрабатывался совместными усилиями нескольких компаний, включая Microsoft.

PPPoE (PPP (Point-to-Point Protocol) over Ethernet)

L2TP (Layer 2 Tunnelling Protocol) — используется в продуктах компаний Microsoft и Cisco.

L2TPv3 (Layer 2 Tunnelling Protocol version 3).

OpenVPN SSL VPN с открытым исходным кодом, поддерживает режимы PPP, bridge, point-to-point, multi-client server

Многие крупные провайдеры предлагают свои услуги по организации VPN-сетей для бизнес-клиентов.

Система обнаружения вторжений (СОВ) — программное или аппаратное средство, предназначенное для выявления фактов неавторизованного доступа в компьютерную систему или сеть либо несанкционированного управления ими в основном через Интернет. Соответствующий английский термин — Intrusion Detection System (IDS). Системы обнаружения вторжений обеспечивают дополнительный уровень защиты компьютерных систем.

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

Обычно архитектура СОВ включает:

сенсорную подсистему, предназначенную для сбора событий, связанных с безопасностью защищаемой системы

подсистему анализа, предназначенную для выявления атак и подозрительных действий на основе данных сенсоров

хранилище, обеспечивающее накопление первичных событий и результатов анализа

консоль управления, позволяющая конфигурировать СОВ, наблюдать за состоянием защищаемой системы и СОВ, просматривать выявленные подсистемой анализа инциденты

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

Виды систем обнаружения вторжений

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

Сетевая СОВ (Network-based IDS, NIDS) отслеживает вторжения, проверяя сетевой трафик и ведет наблюдение за несколькими хостами. Сетевая система обнаружения вторжений получает доступ к сетевому трафику, подключаясь к хабу или свитчу, настроенному на зеркалирование портов, либо сетевое TAP устройство. Примером сетевой СОВ является Snort.

Основанное на протоколе СОВ (Protocol-based IDS, PIDS) представляет собой систему (либо агента), которая отслеживает и анализирует коммуникационные протоколы со связанными системами или пользователями. Для веб-сервера подобная СОВ обычно ведет наблюдение за HTTP и HTTPS протоколами. При использовании HTTPS СОВ должна располагаться на таком интерфейсе, чтобы просматривать HTTPS пакеты еще до их шифрования и отправки в сеть.

Основанная на прикладных протоколах СОВ (Application Protocol-based IDS, APIDS) — это система (или агент), которая ведет наблюдение и анализ данных, передаваемых с использованием специфичных для определенных приложений протоколов. Например, на веб-сервере с SQL базой данных СОВ будет отслеживать содержимое SQL команд, передаваемых на сервер.

Узловая СОВ (Host-based IDS, HIDS) — система (или агент), расположенная на хосте, отслеживающая вторжения, используя анализ системных вызовов, логов приложений, модификаций файлов (исполняемых, файлов паролей, системных баз данных), состояния хоста и прочих источников. Примером является OSSEC.

Гибридная СОВ совмещает два и более подходов к разработке СОВ. Данные от агентов на хостах комбинируются с сетевой информацией для создания наиболее полного представления о безопасности сети. В качестве примера гибридной СОВ можно привести Prelude.

Пассивные и активные системы обнаружения вторжений

В пассивной СОВ при обнаружении нарушения безопасности, информация о нарушении записывается в лог приложения, а также сигналы опасности отправляются на консоль и/или администратору системы по определенному каналу связи. В активной системе, также известной как Система Предотвращения Вторжений (IPS — Intrusion Prevention system  (англ.)), СОВ ведет ответные действия на нарушение, сбрасывая соединение или перенастраивая межсетевой экран для блокирования трафика от злоумышленника. Ответные действия могут проводиться автоматически либо по команде оператора.

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

История разработок СОВ

Первая концепция СОВ появилась благодаря Джеймсу Андерсону и статье [1]. В 1984 Фред Коэн (см. Обнаружение вторжений) сделал заявление о том, что каждое вторжение обнаружить невозможно и ресурсы, необходимые для обнаружения вторжений, будут расти вместе с степенью использования компьютерных технологий.

Дороти Деннинг, при содействии Питера Неймана, опубликовали модель СОВ в 1986, сформировавшую основу для большинства современных систем. [2] Ее модель использовала статистические методы для обнаружения вторжений и называлась IDES (Intrusion detection expert system — экспертная система обнаружения вторжений). Система работала на рабочих станциях Sun и проверяла как сетевой трафик, так и данные пользовательских приложений. [3]

IDES использовала два подхода к обнаружению вторжений: в ней использовалась экспертная система для определения известных видов вторжений и компонент обнаружения, основанный на статистических методах и профилях пользователей и систем охраняемой сети. Тереза Лунт [4] предложила использовать искусственную нейронную сеть как третий компонент для повышения эффективности обнаружения. Вслед за IDES в 1993 вышла NIDES (Next-generation Intrusion Detection Expert System — экспертная система обнаружения вторжений нового поколения).

MIDAS (Multics intrusion detection and alerting system), экспертная система, использующая P-BEST и LISP, была разработана в 1988 году на основе работы Деннинга и Неймана. [5] В этом же году была разработана система Haystack, основанная на статистических методах. [6]

W&S (Wisdom & Sense — мудрость и чувство), основанный на статистических методах детектор аномалий, был разработан в 1989 году в Лос-Аламосской Национальной лаборатории.[7] W&S создавал правила на основе статистического анализа и затем использовал эти правила для обнаружения аномалий.

В 1990, в TIM (Time-based inductive machine) было реализовано обнаружение аномалий с использованием индуктивного обучения на основе последовательных паттернов пользователя на языке Common LISP. [8] Программа была разработана для VAX 3500. Примерно в то же время был разработан NSM (Network Security Monitor — монитор сетевой безопасности), сравнивающий матрицы доступа для обнаружения аномалий на рабочих станциях Sun-3/50.[9] В том же 1990 году был разработан ISOA (Information Security Officer’s Assistant), содержащий в себе множество стратегий обнаружения, включая статистику, проверку профиля и экспертную систему. [10] ComputerWatch, разработанный в AT&T Bell Labs, использовал статистические методы и правила для проверки данных и обнаружения вторжений. [11]

Далее, в 1991, разработчики Университета Калифорнии разработали прототип распределенной системы DIDS (Distributed intrusion detection system), которая также являлась экспертной системой. [12] Также в 1991 сотрудниками Национальной Лаборатории Встроенных Вычислительных Сетей (ICN) была разработана система NADIR (Network anomaly detection and intrusion reporter). На создание этой системы оказало большое влияние работа Деннинга и Люнт. [13] NADIR использовала основанный на статистике детектор аномалий и экспертную систему.

В 1998 году Национальная лаборатория им. Лоуренса в Беркли представила Bro, использующий собственный язык правил для анализа данных libpcap. [14] NFR (Network Flight Recorder), разработанный в 1999, также работал на основе libpcap. [15] В ноябре 1998 был разработан APE, снифер пакетов, тоже использующий libpcap. Спустя месяц APE был переименован в Snort. [16]

В 2001 году была разработана система ADAM IDS (Audit data analysis and mining IDS). Система использовала данные tcpdump для создания правил. [17]

Свободно распространяемые СОВ

Snort NIDS

Bro NIDS

Prelude Hybrid IDS

OSSEC HIDS

Samhain HIDS

Suricata

Open Source Tripwire

Коммерческие СОВ

(fr) CATNET

Check Point IPS Blade

Check Point IPS

McAfee IPS

IBM ISS Proventia IPS

Кольца защиты — архитектура информационной безопасности и функциональной отказоустойчивости, реализующая аппаратное разделение системного и пользовательского уровней привилегий. Структуру привилегий можно изобразить в виде нескольких концентрических кругов. В этом случае системный режим (режим супервизора или нулевое кольцо, т.н. «кольцо 0»), обеспечивающий максимальный доступ к ресурсам, является внутренним кругом, тогда как режим пользователя с ограниченным доступом — внешним. Традиционно семейство микропроцессоров x86 обеспечивает четыре кольца защиты.

Архитектуре колец защиты обычно противопоставляют системы, основанные на мандатной адресации, обеспечивающей доступ к объекту по его описанию (англ. Capability-based security).

Реализация

Поддержка нескольких колец защиты была одной из революционных концепций, включённых в операционную систему Multics, предшественника сегодняшних UNIX-подобных операционных систем. Однако, большинство UNIX-систем используют только 2 кольца, даже если аппаратные средства поддерживают больше режимов центрального процессора.

Многие современные архитектуры центральных процессоров (включая популярную архитектуру x86) включают некоторые формы защиты. Но несмотря на это, операционная система Windows NT, также как и UNIX, полностью не используют эти возможности. Предшественница Windows NT операционная система OS/2 использовала три кольца: кольцо 0 для кода ядра и драйверов устройств, кольцо 2 для привилегированного кода (программы с доступом к операциям ввода-вывода), и кольцо 3 для непривилегированного кода (почти все пользовательские программы).

Оригинальная система Multics имела восемь колец защиты, но многие современные системы имеют как правило меньше. Процессор всегда знает в каком кольце исполняется код, благодаря специальным машинным регистрам. В некоторых системах области виртуальной памяти также связаны с номерами колец, и более привилегированному кольцу даются специальные права (такие как адресация реальной памяти в обход механизма виртуальной памяти).

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

Защита кольца может сочетаться с режимами процессора (режим master/kernel/privileged против режима slave/user/unprivileged) в некоторых системах. Операционные системы, выполняющиеся на аппаратном обеспечении, поддерживающем такие режимы, могут использовать оба способа защиты или только один из них.

Эффективное использование архитектуры колец защиты требует тесного взаимодействия между аппаратными средствами и операционной системой. Операционные системы, разрабатывающиеся так, чтобы они работали на большом количестве платформ, могут иметь различную реализацию механизма колец на каждой платформе. Часто модель безопасности упрощают до двух уровней доступа: уровня «ядра» и уровня «пользователя», даже если аппаратные средства обеспечивают большую степень детализации уровней выполнения.

Режим супервизора

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

Термином режим супервизора разработчики и производители процессоров как правило называют наиболее привилегированный режим работы процессора. Чаще всего этот режим используется для выполнения ядра операционной системы. Обычно этот режим по функциональности соответствует 0-му кольцу защиты (Ring 0) в x86 процессорах, т.е. предоставляет неограниченный доступ ко всем возможностям процессора, работе с периферией и так далее. Код, работающий в данном режиме, как правило, занимается управлением доступными аппаратными ресурсами, разделением их использования между отдельными задачами (процессами) и так далее, что и привело к такому названию режима.

Режим гипервизора

Некоторые современные процессоры могут предоставлять дополнительный режим работы, известный как режим гипервизора. Как правило данный режим реализуется с целью поддержки технологий виртуализации на уровне аппаратного обеспечения. Это позволяет достигнуть не только одновременного выполнения нескольких задач, но и одновременного выполнения нескольких операционных систем на одном процессоре без существенных потерь производительности и без изменения самих операционных систем. Как правило при использовании данного режима полный доступ ко всем ресурсам возможен именно из режима гипервизора. В таком случае режим супервизора уже не является максимально привилегированным и ограничивает многие привилегированные операции. При выполнении привилегированных операций операционными системами в режиме супервизора управление передается специальной программе — гипервизору. Гипервизор осуществляет арбитраж использования имеющихся аппаратных ресурсов несколькими операционными системами аналогично тому как сами операционные системы осуществляют распределение ресурсов между несколькими задачами. По сути, гипервизор обычно является небольшим ядром, которое управляет распределением ресурсов между несколькими операционными системами и работает уровнем ниже, чем сами операционные системы. В силу этого в терминологии x86 данный режим как правило называют кольцом -1 (Ring -1).

Режим системного управления

Режим системного управления (англ.) (System Management Mode) – самый привилегированный режим выполнения на процессорах архитектуры x86/x86-64[1] (впервые появился в 386SL). Режим SMM («Кольцо -2») более привилегированный, чем «Кольцо 0» и аппаратный гипервизор (VT/AMD-v) «Кольцо -1». В этом режиме приостанавливается нормальное выполнение кода, и начинается выполнение специального кода из системного ОЗУ (SMRAM) недоступного в других режимах. Этот код получает доступ ко всей системной памяти, включая ядро и память гипервизора.

Джоанна Рутковска опубликовала информацию об уязвимости «Blue Pill» позволяющей выполнить произвольный код в режиме SMM.

Совместный доступ процессов к данным через механизм проецирования

В Windows всегда было много механизмов, позволяющих приложениям легко и быстро разделять какие-либо данные. К этим механизмам относятся RPC, COM, OLE, DDE, оконные сообщения (особенно WM_COPYDATA), буфер обмена, почтовые ящики, сокеты и т. д. Самый низкоуровневый механизм совместного использования данных на одной машине — проецирование файла в память. На нем так или иначе базируются все перечисленные мной механизмы разделения данных Поэтому, если Вас интересует максимальное быстродействие с минимумом издержек, лучше всего применять именно проецирование.

Совместное использование данных в этом случае происходит так: два или более процесса проецируют в память представления одного и того же объекта «проекция файла», т. e. одни и те же страницы физической памяти. В результате, когда один процесс записывает данные в представление общего объекта «проекция файла», изменения немедленно отражаются на представлениях в других процессах. Но при этом все процессы должны использовать одинаковое имя объекта «проекция файла»

А вот что происходит при запуске приложения. При открытии ЕХЕ-файла на диске система вызывает CreateFile, с помощью CreateFileMapping создает объект «проекция файла» и, наконец, вызывает MapVtewQfFileEx (с флагом SEC_IMAGE) для отображения ЕХЕ-файла на адресное пространство только что созданного процесса. Map ViewOfFileEx вызывается вместо MapViewOfFile, чтобы представление файла было спроецировано по базовому адресу, значение которого хранится в самом ЕХЕ-файле. Потом создается первичный поток процесса, адрес первого байта исполняемого кода в спроецированном представлении заносится в регистр указателя команд (IP), и процессор приступает к исполнению кода.

Если пользователь запустит второй экземпляр того же приложения, система увидит, что объект «проекция файла” для нужного ЕХЕ-файла уже существует и не станет создавать новый объект. Она просто спроецирует еще одно представление файла — на этот раз в контексте адресного пространства только что созданного второго процесса, т. e. одновременно спроецирует один и тот же файл на два адресных пространства. Это позволяет эффективнее использовать память, так как оба процесса делят одни и те же страницы физической памяти, содержащие порции исполняемого кода.

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

Переполнение буфера (Buffer Overflow) — явление, возникающее, когда компьютерная программа записывает данные за пределами выделенного в памяти буфера.

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

Переполнение буфера является наиболее популярным способом взлома компьютерных систем, так как большинство языков высокого уровня используют технологию стекового кадра — размещение данных в стеке процесса, смешивая данные программы с управляющими данными (в том числе адреса начала стекового кадра и адреса возврата из исполняемой функции).

Переполнение буфера может вызывать аварийное завершение или зависание программы, ведущее к отказу обслуживания (denial of service, DoS). Отдельные виды переполнений, например переполнение в стековом кадре, позволяют злоумышленнику загрузить и выполнить произвольный машинный код от имени программы и с правами учетной записи, от которой она выполняется.

Известны примеры, когда переполнение буфера намеренно используется системными программами для обхода ограничений в существующих программных или программно-аппаратных средствах. Например, операционная система iS-DOS (для компьютеров ZX Spectrum) использовала возможность переполнения буфера встроенной TR-DOS для запуска своего загрузчика в машинных кодах (что штатными средствами в TR-DOS сделать невозможно).

Безопасность

Программа, которая использует уязвимость для разрушения защиты другой программы, называется эксплойтом. Наибольшую опасность представляют эксплойты, предназначеные для получения доступа к уровню суперпользователя или, другими словами, повышения привилегий. Эксплойт переполнения буфера достигает этого путём ввода специально изготовленных входных данных. Такие данные переполняют выделенный буфер и изменяют данные, которые следуют за этим буфером в памяти.

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

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

Даже опытным программистам бывает трудно определить, насколько то или иное переполнение буфера может быть уязвимостью. Это требует глубоких знаний об архитектуре компьютера и о целевой программе. Было показано[кем?], что даже настолько малые переполнения, как запись одного байта за пределами буфера, могут представлять собой уязвимости.

Переполнения буфера широко распространены в программах, написанных на относительно низкоуровневых языках программирования, таких как язык ассемблера, Си и C++, которые требуют от программиста самостоятельного управления размером выделяемой памяти. Устранение ошибок переполнения буфера до сих пор является слабо автоматизированным процессом. Системы формальной верификации программ не очень эффективны при современных языках программирования.

Многие языки программирования, например, Java и Lisp, управляют выделением памяти автоматически, и используют комбинацию статического анализа и проверки корректности действий программы во время выполнения. Это делает ошибки, связанные с переполнением буфера, маловероятными или невозможными. Perl для избежания переполнений буфера обеспечивает автоматическое изменение размера массивов. Однако системы времени выполнения и библиотеки для таких языков всё равно могут быть подвержены переполнениям буфера, вследствие возможных внутренних ошибок в реализации этих систем проверки. В Windows доступны некоторые программные решения, которые предотвращают выполнение кода за пределами переполненного буфера, если такое переполнение было осуществлено. Среди этих решений — DEP в Windows XP SP2, OSsurance и Anti-Execute.

Перехват (англ. hooking) — технология, позволяющая изменить стандартное поведение тех или иных компонентов информационной системы.

Назначение технологии перехвата

Очень часто в системном программировании возникает задача изменения стандартного поведения системных функций. Например довольно интересным применением данной технологии является переопределение оконной процедуры у GUI приложений Windows (сабклассинг). Это нужно, если программист хочет организовать собственную обработку какого-либо оконного сообщения и только потом передать стандартной оконной процедуре. После сабклассинга цикл обработки сообщений будет выглядеть так:

ДО САБКЛАССИНГА:

Сообщение Windows->Окно (оконная процедура)

ПОСЛЕ:

Сообщение Windows->Наша оконная процедура->Окно (оконная процедура)

Например, в Уроках Iczelion’а[1] описан пример того, как сабклассинг может использоваться для организации контроля ввода в элементы управления. Технологии перехвата нужны не только в этом случае, но и например для предварительной обработки результатов системных функций поиска файлов FindFirst и FindNext, EnumProcess, которая перечисляет процессы в Windows и т. д. Причем в этих целях такие технологии применяют как антивирусные средства[2], так и различного рода вирусы, руткиты и прочие виды вредоносного программного обеспечения.

Очень часто перехват бывает важен для организации отладки программ и является одной из основных технологий, применяемых в отладчиках. В данном случае эта технология позволяет контролировать одной программе выполнение другой. Для этих целей предусмотрен системный вызов ptrace, который позволяет подключаться к процессам, отслеживать значения регистров у контекста отлаживаемого процесса и в том числе контролировать другие системные вызовы. Он является основой для реализации такой возможности отладчиков как точки останова. Данный системный вызов хорошо документирован и присутствует во всех главных *Nix системах: Linux, FreeBSD, Solaris.[3] Чаще всего используется совместно с системным вызовом fork, который и вызывает ptrace, указывая в параметрах вызова, что запускаемый процесс — дочерний. Microsoft Windows также предоставляет для схожих целей т. н. DebugAPI[4].

Виды перехвата системных функций

Основными методами перехвата являются:

Подмена адреса настоящей функции (модификация IAT таблиц, модификация SSDT/IDT таблиц)

Непосредственное изменение функции (сплайсинг, перехват в режиме ядра с модификацией тела функции)

Непосредственная подмена всего компонента приложения/системы (например библиотеки с целевой функцией)

Методы можно также разделить по критерию режима выполнения:

Пользовательские (ring3) методы: модификация IAT таблиц, сплайсинг. Их особенность в том, что невозможно что-либо изменить в поведении ядра операционной системы и его расширений.

Режима ядра:модификация SSDT/IDT таблиц, перехват в режиме ядра с модификацией тела функции. Позволяет модифицировать структуры данных и код любой части операционной системы и приложений.

Сплайсинг

Сплайсинг — метод перехвата API функций путем изменения кода целевой функции. Обычно изменяются первые 5 байт функции. Вместо них вставляется переход на функцию, которую определяет программист. Чтобы обеспечить корректность выполнения операции, приложение, которое перехватывает функцию, обязано дать возможность выполниться коду, который был изменен в результате сплайсинга. Для этого приложение сохраняет заменяемый участок памяти у себя, а после отработки функции перехвата восстанавливает измененный участок функции и дает полностью выполниться настоящей функции.[5]

Особенности технологии

Для того чтобы программа могла использовать данную технологию, она должна иметь встроенный дизассемблерный движок и специальный дизассемблер длин, который позволит находить нужную функцию и корректно её изменять. Эта технология крайне платформенно-зависима, а потому требует тщательного контроля и проверки системы на соответствие версий, а также проверки самой функции на соответствие целевой. Системные функции могут меняться при выходе патчей и обновлений Windows (особенно Service Pack для Windows), а также в результате модификаций со стороны других приложений. Ошибки при работе с данной технологией могут приводить к BSOD. В то же время эта технология позволяет осуществлять глобальный перехват API функций, влияя таким образом на все процессы в системе.

Сферы применения сплайсинга и методы обнаружения

Он применяется:

В ПО, которому необходимо осуществлять функции мониторинга системы

Механизмом хуков в Windows

Различного рода вредоносными программами. Это основная технология сокрытия для руткитов пользовательского уровня

Основной метод обнаружения факта сплайсинга — это сравнение машинного кода функции, проверяемой на сплайсинг, и кода системной функции, полученного в заведомо чистой системе. Также в обнаружении сплайсинга функции может помочь контроль адресов перехода.

Сравнение с другими технологиями

Изменение IAT таблиц процесса[6]. Данная технология не позволяет изменить поведение самой системной функции, а лишь дает возможность «обмануть» выбранное приложение, заставив его использовать вашу функцию. IAT таблица — таблица адресов функций, импортируемых процессом. Технология носит лишь локальный характер, хотя может быть применена сразу к группе приложений. Может быть довольно быстро обнаружена из-за необходимости загрузки DLL[7] в адресное пространство целевого процесса. Сплайсинг же не требует DLL и внедрения в чужой процесс, обладает возможностью глобального захвата функции. У сплайсинга есть ещё одно преимущество: не все системные функции импортируются процессом через IAT. Например, функция может быть загружена вызовом GetProcAddress. Использование же непосредственной модификации кода функции снимает подобное ограничение.

Перехват в режиме ядра. Позволяет перехватывать любые функции, в том числе и экспортируемые ядром. Наиболее труден для обнаружения в случае успеха, так как позволяет фальсифицировать любые данные, предоставляемые операционной системой. Требует написания специального компонента для взаимодействия с ядром драйвера. Может привести к BSOD при неправильном программировании в режиме ядра. Может быть обнаружен на фазе загрузки драйвера в ядро или при проверке активных драйверов, а также при проверке ядра на изменения[8]. Более трудный в программировании метод, чем сплайсинг, но более гибкий, так как позволяет перехватить функции самого ядра, а не только WinAPI функции, которые служат лишь посредником между ядром и программой, которая что-либо запрашивает у операционной системы.

Замена самой библиотеки с функцией. Весьма радикальное решение проблемы, обладающее рядом существенных недостатков:

Требует замены файла на диске, что может быть запрещено и пресечено самой системой. Например, замену системных файлов Windows не позволит выполнить защита файлов Windows (WFP), хотя её можно и отключить. Такое действие может быть также обнаружено при статическом анализе системы ревизорами.

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

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

Перехват в режиме ядра

Он основан на модификации структур данных ядра и функций. Главными мишенями воздействия являются таблицы

IDT Таблица диспетчеризации прерываний. Довольно важным для перехвата является прерывание, обрабатывающее обращение к таблице служб SSDT (0x2E)[9].

SSDT (System Service Dispatch Table) Таблица диспетчеризации системных сервисов. Обращаясь к ней, система по номеру запрещенного сервиса может получить адрес соответствующего сервиса ядра и вызвать его. А таблица SSPT содержит общий размер параметров, передаваемых системному сервису.

psActiveprocess Структура ядра, хранящая список процессов в системе.

IRP Таблица драйвера, которая хранит указатели на функции обработки IRP-пакетов.

EPROCESS Структура ядра, хранящая большое количество информации о процессе, включая, например, PID (идентификатор процесса).

Такого рода руткиты называются DKOM-руткитами, то есть руткитами, основанными на непосредственной модификации объектов ядра. В руткитах для систем Windows Server 2003 и XP эта технология была модернизирована, так как в этих ОС появилась защита от записи некоторых областей памяти ядра[9]. Windows Vista и 7 получили дополнительную защиту ядра PatchGuard, однако все эти технологии были преодолены руткитописателями[10]. В то же время перехват системных функций в режиме ядра — основа проактивных систем защиты и гипервизоров.

Иные формы перехвата

Можно выделить и другие формы перехвата:

Перехват сетевых соединений и пакетов.[11]

Перехват паролей. Например, при помощи шпионажа за клавиатурным вводом при помощи кейлоггера.

Перехват обращений браузера к сайтам при помощи HTTP Proxy или расширений браузера. Позволяет проанализировать и/или подменить данные, которыми обмениваются браузер и сервер.

Здесь описана лишь часть применений данной технологии.

Примеры программ, использующих перехват

Антивирус NOD32

Гипервизор XEN

Утилиты Марка Руссиновича Filemon, Regmon, Process Explorer

Руткит Rustock.C