Безопасность операционных систем и сетей. Trustworthy Computing
Брандмауэр
Брандмауэр (firewall) – системное программное обеспечение для защиты локальной сети от внешних атак. Брандмауэр помещается между "доверенными" и "не доверенными" компьютерами – например, компьютерами данной локальной сети и всеми остальными. Брандмауэр ограничивает сетевой доступ между двумя различными доменами безопасности. Встроенный брандмауэр имеется во всех современных операционных системах и по умолчанию включен. Настоятельно рекомендуется не отключать его, что особенно существенно при выходе в Интернет.
Схема использования брандмауэра изображена на рис. 24.3.
увеличить изображение
Рис. 24.3. Схема использования брандмауэра для обеспечения сетевой безопасности.
Уверен, что все пользователи Windows среди читателей неоднократно обращали внимание на сообщение ОС о том, что попытка взлома Вашего компьютера была пресечена. Это – заслуга встроенного брандмауэра Windows.
Реализация брандмауэров, как правило, основана на фильтрации сетевых пакетов, пересылаемых с "надежных" и потенциально ненадежных IP-адресов.
Обнаружение попыток взлома
Действенной мерой безопасности является обнаружение попыток входа в компьютерные системы. Методы обнаружения:
- Аудит и ведение журнала (см. раздел Борьба с атаками );
- Использование tripwire - программ для UNIX, которые проверяют, не изменялись ли некоторые файлы и директории, например, файлы, содержащие пароли;
- Слежение за системными вызовами.
В таблица 1 приведен пример таблицы, используемой для слежения за системными вызовами UNIX.
Криптография
Криптография – это преобразование понятного текста в зашифрованный текст. Методы криптографии широко используются для защиты конфиденциальной информации.
Свойства хороших методов криптования:
- Относительно простой для авторизованных пользователей способ криптования и декриптования данных.
- Схема криптования должна зависеть не от секретного алгоритма, а от секретного параметра алгоритма, называемого ключом криптования ( encryption key ).
- Для несанкционированного пользователя должно быть крайне сложно определить ключ.
Технология Data Encryption Standard (DES) основана на подстановке символов и изменении их порядка на основе ключа, предоставляемого авторизованным пользователям через защищенный механизм. Такая схема лишь настолько безопасна, насколько безопасен сам механизм получения ключа.
Криптование на основе открытого ключа – другой широко распространенный метод криптографии - основано на принципе, при котором пользователю известны два ключа:
public key – открытый ключ для криптования данных.
private key – закрытый ключ,известный только пользователю и применяемый им для декриптования данных.
Метод открытого ключа воплощает еще одно важное требование к методам криптографии: метод должен быть основан на схеме криптования, которая публично доступна, но это не будет облегчать разгадывание схемы декриптования.
Примером криптования, используемым в Web-технологиях, является SSL (Secure Socket Layer) - семейство криптографических протоколов, предназначенное для обмена криптованными сообщениями через сокет. SSL используется для защищенного взаимодействия между Web-серверами и браузерами (например, ввода номеров кредитных карт). При обращении клиента к серверу последний проверяется с помощью сертификата. Взаимодействие между компьютерами использует криптографию на основе симметричного ключа.
Уровни безопасности компьютеров
Министерство обороны США классифицирует безопасность компьютеров по уровням: A, B, C, D.
Уровень безопасности D соответствует минимальному уровню безопасности.
На уровене безопасности C обеспечиваются периодические проверки компьютера с помощью аудита. Уровень С подразделяется на уровни C1 и C2. Уровень C1 обозначает взаимодействие пользователей с одинаковым уровнем безопасности. Уровень C2 допускает управление доступом на уровне пользователей.
Уровень безопасности B имеет все свойства уровня C, однако каждый объект может иметь уникальные метки чувствительности (sensitivity labels).Подразделяется на уровни B1, B2, B3.
На уровне безопасности A используются формальные методы спецификации и проектирования для обеспечения безопасности.
Безопасность в Windows NT
Конфигурируемое обеспечение безопасности допускает политики уровней от D до C2 (управление доступом на уровне пользователей).
Безопасность основана на учетных записях пользователей, причем каждый пользователь имеет свой идентификатор безопасности (security ID).
Используется субъектная модель для обеспечения безопасности доступа. Субьект отслеживает полномочия и управляет полномочиями для каждой программы, которую запускает пользователь.
Каждый объект в Windows NT имеет свой атрибут безопасности, определяемый дескриптором безопасности (security descriptor).Например, файл имеет дескриптор безопасности, который задает полномочия доступа для всех пользователей.
Безопасность в .NET
Из всех систем и платформ для разработки программного обеспечения, в .NET механизмы безопасности наиболее развиты. .NET предоставляет гибкую, конфигурируемую систему безопасности. Имеется три основных вида организации и проверок безопасности.
Code Access Security (безопасность доступа к коду) – конфигурирование и проверки безопасности для исполняемого кода (сборки). Проверки безопасности осуществляются при исполнении программы на стеке текущего потока. Полномочия безопасности (например, разрешение на открытие файла) проверяются не только для конкретного вызванного метода, но и для всех методов всех сборок, вызванных на стеке текущего потока. Если хотя бы для одного из них полномочия нарушены, программа прекращается генерацией исключения SecurityException.Такая схема позволяет исключить атаки типа elevation of privilege.
Evidence-Based Security (безопасность, основанная на свидетельствах) – схема безопасности для проверки доверия к вызываемой двоичной сборке. Термин evidence (свидетельство) в данном случае означает информацию о сборке, которую анализирует система поддержки выполнения, - например, наличие цифровой подписи, компания-разработчик и др. На основе этого анализа определяется базовый набор полномочий сборки.
Role-Based Security (безопасность, основанная на ролях) – схема для гибкого конфигурирования полномочий безопасности пользователей. Каждому пользователю может быть приписана роль (обозначаемая символьной строкой, например, "manager"),с которой может быть связан определенный набор полномочий безопасности.
Атрибуты безопасности. В .NET широко используется понятие атрибута – произвольной информации, аннотирующей именованную сущность (например, класс, метод или поле). В частности, имеется встроенная система атрибутов безопасности. Атрибуты безопасности проверяются при загрузке сборки в виртуальную машину времени выполнения.
Декларативное и императивное управление безопасностью. Атрибуты безопасности являются декларативным методом управления безопасностью. Другой метод, императивный, заключается в вызове системных методов (например, Demand ), проверяющих полномочия безопасности во время выполнения.
Более подробно вопросы безопасности и методы разработки безопасного кода описаны в современной, но ставшей уже классической книге [ 26 ] , авторы которой – признанные эксперты по безопасности фирмы Microsoft.