При наличии файла SAM злоумышленник может получить доступ к хранящимся в нем учетным записям, используя такие программы, как LOphtCrack или Advanced NT Security Explorer. В связи с этим необходимо защищать SAM от несанкционированного доступа, запретив загрузку альтернативных ОС с других дисков в BIOS, установив соответствующие права доступа к файлам SAM в системе или используя специальную утилиту SYSKEY, дополнительно шифрующую содержимое файла SAM.
ОС платформы Win32 активно используют возможности защищенного режима процессора и позволяют эффективно защищать код и данные процессов от взаимного влияния друг на друга. Каждый процесс работает в собственном виртуальном адресном пространстве, доступ к которому других процессов запрещен, если только сам процесс-владелец не разрешит его.
Платформа Win32 предоставляет программный интерфейс CryptoAPI для кодирования информации по различным алгоритмам, как симметричным, так и асимметричным. CryptoAPI – это интерфейс прикладного программирования (API – Application Programming Interface) в операционной системе Windows, предоставляющий службы шифрования для операционной системы и приложений, работающих под ее управлением. Он содержит ряд функций, позволяющих приложениям шифровать данные и ставить цифровую подпись различными способами, обеспечивая защиту личных ключей. Однако, сами функции CryptoApi не выполняют никаких криптографических действий, а служат лишь посредниками между прикладной программой и CSP (Cryptographic Service Provider – поставщик службы шифрования). Программная часть криптопровайдера представляет собой dll-файл с функциями поддержки шифрования. Криптопровайдеры отличаются друг от друга составом функций, требованиями к оборудованию, алгоритмами, осуществляющими базовые действия (создание ключей, хеширование и пр.).
По составу функций и обеспечивающих их алгоритмов криптопровайдеры подразделяются на типы. Например, любой CSP типа PROV_RSA_FULL поддерживает как шифрование, так и цифровые подписи, использует для обмена ключами и создания подписей алгоритм RSA, для шифрования — алгоритмы RC2 и RC4, а для хеширования - MD5 и SHA.
В зависимости от версии операционной системы состав установленных криптопровайдеров может существенно изменяться. Однако на любом компьютере с Windows можно найти Microsoft Base Cryptographic Provider, относящийся к типу PROV_RSA_FULL. Именно с этим провайдером по умолчанию будут взаимодействовать все программы. Пользователь имеет возможность приобрести CSP другого производителя, тогда функции CryptoAPI будут работать с программами этого CSP. Пример использования функций CryptoAPI для кодирования файла симметричным алгоритмом RC4 приведен в листинге 2.
Листинг 2. Использование функций CryproAPI для кодирования файла
HCRYPTPROV hProv;
//Подключаемся к криптопровайдеру типа PROV_RSA_FULL
if(!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL,0))
{
puts("Ошибка инициализации CSP\n";
return;
}
//Открываем входной и выходной файл
HANDLE hInFile;
hInFile=CreateFile("d:\\NS. doc", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
HANDLE hOutFile;
hOutFile=CreateFile("d:\\crypt", GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 0, NULL);
HCRYPTKEY hKey;
//генерируем сессионный ключ для RC4
if(!CryptGenKey(hProv, CALG_RC4,CRYPT_EXPORTABLE,&hKey))
{ puts("ошибка генерации ключа RC4\n");
return;
}
BYTE buf[BUFFER_SIZE];
DWORD dwSzLow, dwSzHigh;
dwSzLow=GetFileSize(hInFile,&dwSzHigh);// получить размер входного файла
unsigned __int64 fSize=(dwSzHigh<<32)+dwSzLow;
while(fSize)
{
if(!ReadFile(hInFile, buf, BUFFER_SIZE,&dwLen, NULL)) //читаем блок данных
puts("Ошибка чтения данных\n");
dwSzLow=dwLen;
if(!CryptEncrypt(hKey,0,fSize<=BUFFER_SIZE,0,buf,&dwSzLow, sizeof(buf)))
//шифруем блок данных
puts("Ошибка шифрования\n");
if(!WriteFile(hOutFile, buf, dwSzLow,&dwSzLow, NULL))
puts("Ошибка записи\n");
fSize-=dwLen;
}
CloseHandle(hOutFile);
CloseHandle(hInFile);
CryptReleaseContext(hProv,0);
Аудит - очень важный элемент системы безопасности, позволяющий регистрировать в специальных журналах события, связанные с действиями пользователей в системе. ОС платформы Win32 поддерживают систему аудита, позволяющую выбрать типы отслеживаемых событий и регистрировать их в системных журналах. Основной инструмент аудита в Windows – утилита Event Viewer (Просмотр событий). Запуск этой утилиты осуществляется из папки Administrative Tools (Администрирование).

Рис.6.3. Внешний вид утилиты Event Viewer (Просмотр событий) Windows
Windows записывает события в три журнала:
· Системный журнал - (system log) содержит сообщения об ошибках, предупреждения и другую информацию, исходящую от операционной системы и компонентов сторонних производителей. Список событий, регистрируемых в этом журнале, предопределен операционной системой и компонентами сторонних производителей и не может быть изменен пользователем. Журнал находится в файле Sysevent. evt.
· Журнал безопасности - (Security Log) содержит информацию об успешных и неудачных попытках выполнения действий, регистрируемых средствами аудита. События, регистрируемые в этом журнале, определяются заданной администратором стратегией аудита. Журнал находится в файле Secevent. evt.
· Журнал приложений - (Application Log) содержит сообщения об ошибках, предупреждения и другую информацию, выдаваемую различными приложениями. Список событий, регистрируемых в этом журнале, определяется разработчиками приложений. Журнал находится в файле Appevent. evt.
Все журналы размещены в папке %Systemroot%\System32\Config.
![]() |
При выборе событий для проведения аудита следует учитывать возможность переполнения журнала. Для настройки каждого журнала можно использовать диалоговое окно Event Log Settings (Свойства журнала, рис. 6.4)
. С помощью этого окна можно управлять:
- размером архивируемых журналов (размер по умолчанию – 512 Кбайт, можно изменить размер от 64 до 4 Кбайт.); методикой замещения устаревших записей журнала:
Затирать старые события по необходимости – в случае заполнения журнала при записи новых событий операционная система удаляет самые старые события;
Затирать события старее N дней– в случае заполнения журнала при записи новых событий удаляются самые события, но только если они старше N дней, иначе новые события будут проигнорированы;
Не затирать события – в случае заполнения журнала новые события не фиксируются. Очистка журнала производится вручную.
Каждая запись в журнале содержит сведения о выполненном действии, о пользователе, который его выполнил, а также о дате и времени события. Можно проводить аудит как успешных, так и неудачных попыток выполнения некоторых действий. В журнал заносятся записи 5 различных типов:
Ошибка | Серьезные трудности, такие как потеря данных или функциональности. Например, если происходит сбой загрузки службы при запуске, в журнал заносится сообщение об ошибке. |
Предупреждение | События, которые в момент записи в журнал не были существенными, но могут привести к сложностям в будущем. Например, если на диске осталось мало свободного места, в журнал заносится предупреждение. |
Сведения | Событие, описывающее удачное завершение действия приложением, драйвером или службой. Например, после успешной загрузки драйвера в журнал заносится событие уведомления. |
Аудит успехов | Событие, соответствующее успешно завершенному действию, связанному с поддержкой безопасности системы. Например, в случае успешного входа пользователя в систему в журнал заносится событие типа «Аудит успехов» |
Аудит отказов | Событие, соответствующее неудачно завершенному действию, связанному с поддержкой безопасности системы. Например, в случае неудачной попытки доступа пользователя к сетевому диску в журнал заносится событие типа «Аудит отказов» |
Администратор имеет возможность определять набор подлежащих аудиту событий. В WindowsNT это осуществляется в диалоговом окне Audit Policy (Политика Аудита) утилиты User Manager for Domains (Менеджер пользователей)
Основные события, которые могут регистрироваться:
· Logon and Logoff – регистрация пользователя в системе или выход из нее, а также установка и разрыв сетевого соединения;
· File and Object Access – доступ к папкам, файлам и принтерам, подлежащим аудиту;
· Use of User Rights – использование привилегий пользователей (кроме прав, связанных с входом и выходом из системы);
· User and Group Management – создание, изменение и удаление учётных записей пользователей и групп, а также изменения в ограничениях учётной записи;
· Security Policy Changes — изменения в привилегиях пользователей, стратегии аудита и политике доверительных отношений;
· System Restart and Shutdown — перезапуск и завершение работы системы, возникновение ситуации, влияющей на безопасность системы;
· Process Tracking — события, связанные с запуском и завершением пользовательских процессов, их доступом к объектам.
Настройка аудита доступа пользователей к тому или иному файлу или папке осуществляется в окне свойств этого объекта, закладка Безопасность-> Дополнительно-> Аудит. С помощью оконного интерфейса здесь можно определить события, связанные с файлом или папкой, возникновение которых должно отражаться в журнале системы. Список возможных событий отображен на рис. 6.5.
Рис.6.5. Определение событий, связанных с файлом, подлежащих аудиту

6.2. Средства безопасности ОС семейства Unix.
С самых первых версий операционная система Unix разрабатывалась как многопользовательская многозадачная операционная система. Она должна была обеспечивать одновременную работу нескольких пользователей, работающих с различными приложениями. Таким образом, необходимо было защитить пользователей друг от друга и предотвратить несанкционированный доступ, случайный или злонамеренный. Поэтому системе безопасности в ОС семейства Unix отводится очень большое внимание. В настоящий момент существует много различных версий операционных систем семейства Unix, однако все они поддерживают единую модель безопасности. Некоторые современные версии систем поддерживают различные расширения и улучшения системы безопасности, ознакомиться с которыми администратор может из справочного руководства к данным системам. В дальнейшем будем рассматривать традиционную модель безопасности операционных систем семейства Unix.
Основу безопасности ОС семейства Unix составляют пользователи системы. Пользователи обладают определенными правами, они владеют файлами, от их имени запускаются системные и прикладные процессы. Причем набор функций, системных вызовов и операций, которые может выполнять процесс зависит от прав пользователя, запустившего этот процесс. Все зарегистрированные в системе пользователи учитываются в файле /etc/passwd. Каждый пользователь системы имеет регистрационное имя (login name). Однако система различает пользователей не по именам, а по ассоциированным с ними уникальным идентификаторам пользователей или UID (User Identifier). Также каждый пользователь является членом одной или нескольких групп. Группы описываются в файле /etc/group. Каждая группа имеет уникальное имя и уникальный идентификатор группы GID (Group Identifier). В файле /etc/passwd указывается идентификатор первичной группы пользователя. Таким образом UID и GID определяют, какими правами обладает пользователь в системе. Среди всех пользователей особое положение занимает пользователь с UID=0, или так называемый суперпользователь. Данный пользователь обычно имеет регистрационное имя root, однако в системе может быть несколько пользователей с UID=0 и различными именами. Суперпользователь обладает неограниченными правами и может выполнять над файлами и процессами любую допустимую операцию. Кроме того, некоторые системные вызовы и операции может выполнять только суперпользователь. Например, следующие операции доступны лишь суперпользователю: создание файлов устройств, изменение системного времени, увеличение лимитов на использование ресурсов, увеличение приоритетов процессов, задание сетевого имени, конфигурирование сетевых интерфейсов, останов и перезагрузка системы. Администратору следует проявлять большую осторожность при работе под именем суперпользователя, поскольку неосторожные действия могут привести к необратимым последствиям. Также во многих системах существует специальная привилегированная группа с GID=0 и именем wheel. Некоторые операции, например выполнение команды su, доступны только пользователям, являющимся членами этой группы. Кроме имени пользователя и идентификаторов в файле /etc/passwd содержатся также: зашифрованный пароль пользователя, домашний каталог пользователя и интерпретатор команд. Алгоритм шифрования пароля зависит от конкретной версии системы и является однонаправленным алгоритмом шифрования. Например, в системе FreeBSD используется алгоритм MD5. Следует особо отметить, что в открытом виде пароль никогда и нигде не хранится. При входе пользователя в систему введенный им пароль шифруется и сравнивается два зашифрованных варианта. Даже суперпользователь не может узнать пароль какого-либо пользователя, однако он может сменить пароль любого пользователя с помощью утилиты passwd. Данная утилита также позволяет обычным пользователям менять их пароли. Если в файле паролей вместо зашифрованного пароля стоит символ ‘*’, то такой пользователь не сможет войти в систему. Если же поле пароля пустое, то пользователь сможет войти в систему, введя пустой пароль. Даже в зашифрованном виде файл паролей предоставляет некоторую угрозу безопасности, поскольку возможен подбор паролей, например, с использованием словаря. Поэтому во многих системах пароли были перенесены из файла /etc/passwd в другие файлы. Например, во FreeBSD пароли находятся в файле /etc/master.passwd, а в Solaris и Linux в /etc/shadow. Оба этих файла доступны только суперпользователю и недоступны другим пользователям системы даже для чтения. При входе пользователя в систему запускается указанный в файле /etc/passwd интерпретатор команд. Обычно это один из стандартных командных интерпретаторов /bin/sh (Bourne shell), /bin/csh (C shell), /bin/ksh (Коrn shell) или /bin/bash (Bourne shell again), позволяющих пользователю вводить команды и запускать задачи. Для пользователей, которым не нужен интерпретатор в этом поле можно указать, например, /sbin/nologin, /nonexistent (для псевдопользователей) или /bin/date (для удаленных пользователей). В общем случае в этом поле может быть указана любая программа, важно то, что, завершив выполнение этой задачи, пользователь автоматически выйдет из системы. В файле /etc/shells содержится список программ, которые могут быть использованы в качестве командного интерпретатора.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |



