Как настроить ЗОСРВ «Нейтрино», чтобы сделать её ещё беопаснее
Статья включает:
Сейчас, когда все больше и больше компьютеров и других устройств подключаются к незащищенным сетям, вопросы безопасности становятся весьма актуальными. Слово "безопасность" может иметь много значений, но применительно к компьютерам под ней обычно понимается задача запрета неавторизованным пользователям выполнять на компьютере действия, которые вы им не разрешаете выполнять.
В книгах и Интернете можно найти обширную информацию, касающуюся безопасности. В данном разделе дается лишь краткое введение в тему о безопасности, представляются ссылки на внешние источники и ресурсы, а также обсуждаются особенности, применимые именно к ЗОСРВ «Нейтрино».
Совершенно очевидно, что безопасность является очень важным фактором. Никто не хочет, чтобы кто-то получил контроль над его устройством и мог бы нарушить нормальную работу устройства. Представьте, какие последствия могут быть в случае, если кто-то остановит систему управления воздушным движением или нарушит нормальную работу оборудования больницы.
Важность соблюдения мер безопасности для каждой отдельной машины зависит от контекста:
Частью мер по обеспечению безопасности является установление степени риска. Введение классификации угроз по категориям может помочь в анализе проблем и увидеть, на что нужно обращать внимание в первую очередь.
Можно поделить угрозы безопасности, называемые также эксплойтами (exploit), на две крупные категории.
Удаленные эксплойты
Удаленные эксплойты обычно гораздо опаснее, чем локальные. К счастью, воздействие удаленных эксплойтов гораздо легче предотвратить, и они менее распространены.
Например, вы запускаете сервер bind
на порте 53
(разрешение имен DNS) компьютера, подключенного к сети. Допустим, конкретная версия программного обеспечения имеет уязвимость, из-за которой намеренно неправильно сформированный атакующим запрос может привести к запуску командного процессора от имени учетной записи root для другого порта машины. Атакующий может использовать эту уязвимость для подключения и эффективного "владения" данным компьютером.
Такой тип эксплойта часто называется атакой с переполнением буфера (buffer
overrun
) или с разрушением стека (stack-smashing
). Более подробно этот вид атак описан в статье Aleph One: Smashing the Stack for Fun and Profit (Алеф Уан: Разрушение стека для забавы и выгоды). Для простого разрешения этой проблемы нужно просто знать, какие порты прослушиваются каждым из серверов, и нужно использовать самые последние версии программного обеспечения. Если машина подключена к сети, то не запускайте на ней больше служб, чем это действительно необходимо.
Локальные эксплойты
Локальные эксплойты гораздо более распространены, и их труднее предотвратить. Наличие локальной учетной записи подразумевает определенную степень доверия, и не всегда просто представить, как это кто-то может переступить через оказанное доверие. Большинство локальных эксплойтов включают в себя тот или иной вид превышения предоставленных полномочий, например, преобразование обычного пользователя в суперпользователя (учетная запись root
).
Многие локальные атаки являются следствием неправильного конфигурирования системы (например, неправильно установлены права доступа к файлам) или из-за переполнения буфера при запуске исполняемой программы от имени пользователя root
(когда идентификатор пользователя назначается программе путем установки бита setuid
). В мире встраиваемых систем – где обычно используется ЗОСРВ «Нейтрино» – эта проблема для локальных пользователей неактуальна, тем более что для многих систем вообще не поставляется командный процессор (оболочка).
Эксплойты можно также классифицировать по производимому эффекту.
Denial
Of
Service
). Используя приведенную классификацию, можно посмотреть на систему с точки зрения того, для каких атак система наиболее уязвима и что нужно сделать для предотвращения имеющейся уязвимости.
Под вирусом обычно понимается специальная инфицирующая программа, которая запускает на компьютере некоторый код (например, троянская программа). Для вирусов необходим хостовый компьютер и точка входа.
В качестве точек входа для вирусов используются:
ActiveX
) – ничего подобного нет в ЗОСРВ «Нейтрино»;
Для вируса хосты являются интерфейсами с системными вызовами, которые доступны из точки входа (инфицированная программа), например, программа sendmail
или HTTP-сервер. Хосты имеют привязку к платформе, поэтому, например, вирус для Linux вероятнее всего прекратит работу хоста под управлением ЗОСРВ «Нейтрино», как только он попытается сделать что-нибудь разрушительное.
Вирусы, которые распространяются через электронную почту, привязаны к конкретной ОС. Обычно их целью является ОС Windows, и они не могут нанести вреда системам на базе ЗОСРВ «Нейтрино» по причине несовместимости. Большинство систем семейства UNIX не восприимчивы к вирусам, поскольку возможность провести (большие) разрушительные воздействия ограничена самим хостом. Мы пока еще не слышали ни об одном вирусе, который мог бы инфицировать систему на основе ЗОСРВ «Нейтрино».
Кроме того, поскольку установленные системы на основе ЗОСРВ «Нейтрино» настолько сильно специализированы для выполнения конкретных приложений, что в них зачастую просто не содержится программного обеспечения, открытого для вирусных атак (возможности входа пользователя в систему, Web-браузеры, электронная почта, серверы Telnet и FTP).
ЗОСРВ «Нейтрино» относится к операционным системам класса UNIX, поэтому почти вся информация, касающаяся мер безопасности для UNIX (как общая, так и относящаяся к ОС Linux, BSD и т.д.), применима также и к ЗОСРВ «Нейтрино». Поиск в Интернете статей по безопасности UNIX или Linux даст вам много ссылок по этой теме. А также по этому вопросу существует большое количество литературы в книжных магазинах и библиотеках.
Для того чтобы ЗОСРВ «Нейтрино» была более гибкой в использовании и максимально привычной и знакомой при эксплуатации, мы позаимствовали из UNIX общую модель обеспечения безопасности. В нее включены понятия учетных записей пользователей и установления прав доступа к файлам, что обычно достаточно для всех наших клиентов. Во встраиваемых устройствах очень легко без дополнительных затрат ввести ограничения любой степени по доступу к системе. В отличие от встраиваемых, сверхбезопасными системами, требующими сертификации, обычно являются серверы.
Более подробно об этом см. раздел Управление учетными записями пользователей и раздел Владение файлами и права доступа.
Как было сказано в предыдущих разделах, ЗОСРВ «Нейтрино» имеет потенциальные уязвимости по отношению к тем же угрозам, что и другие ОС семейства UNIX. Кроме того, имеется ряд вопросов, которые характерны только для ЗОСРВ «Нейтрино».
Базовая модель операций основана на передаче сообщений между ядром ОС, администратором процессов и другими службами. В этой области есть место для потенциальных локальных угроз безопасности, которых могло бы не быть в системе, где все драйверы занимают одно и то же адресное пространство с ядром. Конечно, потенциальная слабость перевешивается доказанной силой такой модели, т.к. во встраиваемых системах локальные атаки обычно имеют второстепенное значение.
Удаленный агент отладки pdebug запускается на целевой системе и взаимодействует с отладчиком gdb на хосте. Агент pdebug может быть запущен как специализированный сервер на порте, быть порожденным процессом от сервиса inetd на входящие соединения или порожденным процессом от сервиса qconn.
Агент pdebug обычно запускается от имени учетной записи root
, поэтому кто-нибудь может выгрузить в удаленный компьютер (upload), загрузить на хост (download) или запустить на выполнение произвольный код с уровнем привилегий root
. Этот агент был создан для взаимодействия с системами разработки, а не для использования в промышленных образцах. Поэтому не предусмотрено никаких средств аутентификации и безопасности, и разработка таких средств не планируется в будущем. См. следующий раздел.
Сервис qconn представляет собой сервер, который запускается на целевой машине и обрабатывает все входящие запросы от среды разработки IDE. Сервер qconn порождает процесс pdebug для обработки запросов на отладку, профилирует приложения, осуществляет сбор системной информации и т.д.
Подобно процессу pdebug, сервис qconn является по своей сути незащищенным, и он предназначен для работы совместно с системами разработки. В отличие от процесса pdebug, мы планируем встроить в сервис qconn модель безопасности с использованием определенной формы аутентификации. Это даст возможность применять qconn на промышленных машинах для реализации таких сервисов, как удаленное обновление и коррекция ошибок.
Qnet – это прозрачный сетевой протокол ЗОСРВ «Нейтрино». Он описан в разделе Прозрачная распределенная сеть Qnet данного руководства.
С помощью протокола Qnet в файловой системе отображаются другие машины сети с ЗОСРВ «Нейтрино». При этом удаленные машины рассматриваются как расширения локальной машины. Кроме присвоения идентификатора пользователя по входящему соединению, не используется никаких других средств аутентификации. Поэтому соблюдайте осторожность при работе на машине, которая доступна из сети общего пользования.
Для того чтобы сделать протокол Qnet более безопасным, используйте ключи maproot и mapany, с помощью которых входящие соединения (с учетной записью root
или какой-либо другой) отображаются на идентификатор заданного пользователя. Подробнее об этом см. в разделе по файлу lsm-qnet.so.
Протокол IPsec является протоколом безопасности для уровня Интернета. Протокол можно использовать, например, для установления безопасного туннельного соединения между компьютерами или сетями. В него входят указанные далее два подпротокола.
У протокола IPsec есть два режима работы:
Более подробно об этом см. в разделе IPsec в руководстве по библиотекам справочной системы комплекта разработчика ЗОСРВ «Нейтрино». По вопросу включения протокола IPsec см. раздел Распознавание устройств.
При построении зданий или судов для предотвращения распространения огня в них используют специально сконструированные стены. В компьютерах для предотвращения или ограничения доступа к определенным приложениям или системам и для защиты систем от злонамеренных атак используют межсетевые экраны (firewall).
Для создания межсетевого экрана в среде ЗОСРВ «Нейтрино» применяется комбинация двух механизмов:
Более подробную информацию см. в документации OpenBSD: pf-faq.pdf.
Предыдущий раздел: перейти