Обеспечение безопасности системы

Как настроить ЗОСРВ «Нейтрино», чтобы сделать её ещё беопаснее

Статья включает:

Общие вопросы безопасности ОС
Удаленные и локальные атаки
Эффективность атак
Вирусы
Общие вопросы безопасности для ЗОСРВ «Нейтрино»
Безопасность в ЗОСРВ «Нейтрино»
Передача сообщений
Сервис pdebug
Сервис qconn
Qnet
IPSec
Настройка межсетевого экрана

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

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

Общие вопросы безопасности ОС

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

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

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

Удаленные и локальные атаки

Можно поделить угрозы безопасности, называемые также эксплойтами (exploit), на две крупные категории.

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

Удаленные эксплойты

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

Например, вы запускаете сервер bind на порте 53 (разрешение имен DNS) компьютера, подключенного к сети. Допустим, конкретная версия программного обеспечения имеет уязвимость, из-за которой намеренно неправильно сформированный атакующим запрос может привести к запуску командного процессора от имени учетной записи root для другого порта машины. Атакующий может использовать эту уязвимость для подключения и эффективного "владения" данным компьютером.

Такой тип эксплойта часто называется атакой с переполнением буфера (buffer overrun) или с разрушением стека (stack-smashing). Более подробно этот вид атак описан в статье Aleph One: Smashing the Stack for Fun and Profit (Алеф Уан: Разрушение стека для забавы и выгоды). Для простого разрешения этой проблемы нужно просто знать, какие порты прослушиваются каждым из серверов, и нужно использовать самые последние версии программного обеспечения. Если машина подключена к сети, то не запускайте на ней больше служб, чем это действительно необходимо.

Локальные эксплойты

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

Многие локальные атаки являются следствием неправильного конфигурирования системы (например, неправильно установлены права доступа к файлам) или из-за переполнения буфера при запуске исполняемой программы от имени пользователя root (когда идентификатор пользователя назначается программе путем установки бита setuid). В мире встраиваемых систем – где обычно используется ЗОСРВ «Нейтрино» – эта проблема для локальных пользователей неактуальна, тем более что для многих систем вообще не поставляется командный процессор (оболочка).

Эффективность атак

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

атаки с целью получения контроля над ресурсами компьютера (takeover attack).
Результатом этого вида атак является получение полного доступа к ресурсам компьютера, по крайней мере, получение возможности выполнять действия, не предсказуемые для владельца, но вполне осознанно выполняемые атакующим.
атаки типа "Отказ в обслуживании", или DOS-атаки (Denial Of Service).
Эти атаки приводят к нарушению нормального функционирования. В качестве примера можно привести массовое и частое "пингование" машины (использование извне команды ping) с целью замедления реакции машины на запросы из сети вплоть до полной невозможности пользоваться сетью. С DOS-атаками исключительно трудно иметь дело. Реагировать на них можно лишь по фактическому результату, и нельзя предпринять никаких подготовительных действий.

Для примера, существует очень мало систем, которые злонамеренный локальный пользователь может "поставить на колени". Эти атаки часто можно минимизировать, используя, например, встроенную команду ulimit командной оболочки.

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

Вирусы

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

В качестве точек входа для вирусов используются:

Для вируса хосты являются интерфейсами с системными вызовами, которые доступны из точки входа (инфицированная программа), например, программа sendmail или HTTP-сервер. Хосты имеют привязку к платформе, поэтому, например, вирус для Linux вероятнее всего прекратит работу хоста под управлением ЗОСРВ «Нейтрино», как только он попытается сделать что-нибудь разрушительное.

Вирусы, которые распространяются через электронную почту, привязаны к конкретной ОС. Обычно их целью является ОС Windows, и они не могут нанести вреда системам на базе ЗОСРВ «Нейтрино» по причине несовместимости. Большинство систем семейства UNIX не восприимчивы к вирусам, поскольку возможность провести (большие) разрушительные воздействия ограничена самим хостом. Мы пока еще не слышали ни об одном вирусе, который мог бы инфицировать систему на основе ЗОСРВ «Нейтрино».

Кроме того, поскольку установленные системы на основе ЗОСРВ «Нейтрино» настолько сильно специализированы для выполнения конкретных приложений, что в них зачастую просто не содержится программного обеспечения, открытого для вирусных атак (возможности входа пользователя в систему, Web-браузеры, электронная почта, серверы Telnet и FTP).

Общие вопросы безопасности для ЗОСРВ «Нейтрино»

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

Для того чтобы ЗОСРВ «Нейтрино» была более гибкой в использовании и максимально привычной и знакомой при эксплуатации, мы позаимствовали из UNIX общую модель обеспечения безопасности. В нее включены понятия учетных записей пользователей и установления прав доступа к файлам, что обычно достаточно для всех наших клиентов. Во встраиваемых устройствах очень легко без дополнительных затрат ввести ограничения любой степени по доступу к системе. В отличие от встраиваемых, сверхбезопасными системами, требующими сертификации, обычно являются серверы.

Более подробно об этом см. раздел Управление учетными записями пользователей и раздел Владение файлами и права доступа.

Безопасность в ЗОСРВ «Нейтрино»

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

Передача сообщений

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

Сервис pdebug

Удаленный агент отладки pdebug запускается на целевой системе и взаимодействует с отладчиком gdb на хосте. Агент pdebug может быть запущен как специализированный сервер на порте, быть порожденным процессом от сервиса inetd на входящие соединения или порожденным процессом от сервиса qconn.

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

Сервис qconn

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

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

Qnet

Qnet – это прозрачный сетевой протокол ЗОСРВ «Нейтрино». Он описан в разделе Прозрачная распределенная сеть Qnet данного руководства.

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

Для того чтобы сделать протокол Qnet более безопасным, используйте ключи maproot и mapany, с помощью которых входящие соединения (с учетной записью root или какой-либо другой) отображаются на идентификатор заданного пользователя. Подробнее об этом см. в разделе по файлу lsm-qnet.so.

IPSec

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

AH (Authentication Header, аутентификационный заголовок)
гарантирует целостность IP-пакетов и защищает их от изменений и подмены на промежуточных этапах передачи за счет присоединения криптографической контрольной суммы, вычисляемой с помощью односторонней хеш-функции.
ESP (Encapsulated Security Payload, протокол шифрования)
защищает содержимое IP-пакетов от прослушивания за счет шифрования криптографическим алгоритмом с секретным ключом.

У протокола IPsec есть два режима работы:

транспортный
защищает соединение типа peer-to-peer между узлами конечных пользователей;
туннельный
поддерживает операции инкапсуляции типа IP-in-IP, предназначен для организации безопасных шлюзов, например, VPN-конфигураций.


Note: Поддержка протокола IPsec может изменяться по мере доработки протокола.

Более подробно об этом см. в разделе IPsec в руководстве по библиотекам справочной системы комплекта разработчика ЗОСРВ «Нейтрино». По вопросу включения протокола IPsec см. раздел Распознавание устройств.

Настройка межсетевого экрана

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

Для создания межсетевого экрана в среде ЗОСРВ «Нейтрино» применяется комбинация двух механизмов:

Более подробную информацию см. в документации OpenBSD: pf-faq.pdf.




Предыдущий раздел: перейти