Добавлен: 22.04.2023
Просмотров: 149
Скачиваний: 2
Введение
В современном мире трудно найти человека, который бы не был хоть сколько-нибудь знаком с компьютером. Эти устройства выполняют различные функции. Так, большинство компаний фактически не могут функционировать без компьютерного парка. Обработка всей информации происходит посредством машин, любой учёт производится с помощью компьютерных программ. Музыка, фильмы, фотографии – всё это становится доступным благодаря компьютерам. Они встречаются и дома, и на работе, и в кармане (телефон – это тот же компьютер, только уменьшенный в размере).
Именно распространённость компьютеров и разнообразие их функций раскрывает актуальность рассматриваемой темы. Говоря об информации, обрабатываемой компьютером, мы подразумеваем не только её использование или накопление, но и защиту – будь то неумышленные действия пользователей или действия злоумышленника.
Целью настоящей работы является раскрытие принципов осуществления безопасности операционных систем, работающих под управлением ядра Linux. Для достижения цели выполняются следующие задачи:
- обзор понятия защиты операционной системы. Многие наверняка слышали этот термин, а также термины, связанные с ним напрямую, например: утечка информации, конфиденциальные данные и пр. В этой работе приводятся основанные на государственных стандартах определения;
- определение рассматриваемого объекта. Многие рядовые пользователи видели интерфейс Windows, слышали о Linux, но подкованный в технических вопросах администратор сети должен сделать выбор в пользу конкретной операционной системы. Поможет это сделать небольшой аналитический обзор;
- методы, с помощью которых достигается защита операционной системы. Говоря открыто, обеспечение безопасности – это комплекс мер, снижающий определённые риски. В этой работе рассматриваются конкретные риски и методы воздействия на них.
В качестве предмета настоящей работы выступает совокупность рекомендаций по настройке операционных систем на базе ядра Linux.
Источниками для написания работы и приводимых в работе выводов служат, в первую очередь, учебные пособия для учащихся высших учебных заведений под редакцией таких авторов, как Бакланов В. В., Белов Ю. С., Замятин А. В. и др. Также в список литературы включены публикации отечественных и зарубежных авторов Олифер В. Г. и Олифер Н. А., Бэндл Д., Стюарт Мак-Клар и др. Приводятся ссылки на открытые источники, размещённые в сети интернет, а также используются материалы из конспекта лекций Лихоносова А. Г.
Авторитет университетских изданий учебных пособий не оставляет сомнений. Книги Олифер для автора данной работы являются учебными пособиями в различных аспектах деятельности в сфере ИТ. Они часто цитируются, приводятся в качестве обязательной или дополнительной литературы в учебных курсах различных дисциплин. Работы зарубежных авторов дополняют работы отечественных писателей тем, что, с одной стороны, рассказывают о возможных уязвимостях, а с другой – как от них защититься.
Немаловажной особенностью данной работы является использование нормативных устанавливающих документов, таких как ГОСТ Р 50739‑95, ГОСТ Р 51583-2014, группа ГОСТ Р ИСО/МЭК 15408 и др.
В настоящей работе автор старался избегать открытых источников, однако, в некоторых случаях они всё же приводятся, например, для аналитических оценок. Внимательно изучив алгоритмы сбора статистики и цитирование материала на других ресурсах, автор пришёл к выводу о надёжности подобных источников.
Обзор операционных систем
Операционная система – совокупный комплекс программного обеспечения, который предоставляет пользователю возможность запускать приложения и управлять ими, а программам – получать доступ к аппаратным ресурсам вычислительной системы [1, p. 3].
Функции, выполняемые операционной системой, можно условно разделить на три сегмента:
- управление аппаратными ресурсами;
- распределение ресурсов между запущенными приложениями;
- формирование среды с данными, необходимыми для исполнения приложений (иначе – информационное окружение).
Сама операционная система подразделяется на два уровня – ядро и системные утилиты[1]. Ядро служит для обеспечения функций, указанных выше, в то время как системные утилиты – это инструменты для управления функциями. Обычно ядро состоит из следующих компонентов:
- система управления сеансами пользователей регистрирует пользователя в операционной системе в начале работы, выполняет хранение информации, необходимой для быстрого доступа через информационное окружение, поддерживает связь сеанса с устройствами, отвечает за завершение сеанса при окончании работы пользователя с системой;
- система управления процессами распределяет ресурсы между процессами, обеспечивает защиту памяти процессов от модификации другими процессами, реализует механизмы межпроцессорного взаимодействия;
- файловая система – система, преобразующая физические данные, хранящиеся на накопителях, в логические (файлы и каталоги). Также в функции этой системы входит обеспечение разграничения прав доступа к файлам и каталогам;
- система ввода-вывода необходима для связи компонентов ядра с логическими устройствами, поддерживаемыми операционной системой. Операционная система сама по себе «не видит» физические компоненты вычислительной системы – они либо представлены адресом ячейки в оперативной памяти, либо связаны посредством специальной программы – драйвера – с аппаратной частью. Более того, для выполнения некоторых функций ОС может создавать собственные логические устройства, функционирующее только внутри ОС, например, системные часы [1, pp. 13-14].
Операционные системы для серверов принято разделять по типу используемого ядра: так называемые Unix-based ОС и Windows. Первые системы получили своё развитие от операционной системы Unix – многозадачной многопользовательской системы, первая версия которой вышла в конце 1960-х годов. Открытость исходного кода привела к широкому разнообразию дистрибутивов. Самым распространённым видом Unix-подобных систем является Linux, основанная на одноимённом ядре, а также библиотеках и прикладных программах проекта GNU. Семейство Linux-дистрибутивов сильно разнообразно, их можно разделить на несколько типов:
- deb-based системы, к которым относятся такие представители, как Debian и Ubuntu;
- RPM-bases системы, в которые входят, например, Red Hat Linux, Fedora и OpenSUSE
- source-based системы, в которых программное обеспечение собирается не из готовых пакетов для установки, а из исходных кодов – Slackware и Gentoo.
Отличительной особенностью операционных систем, основанных на ядре Linux, является то, что практически всё программное обеспечение, включая саму операционную систему, распространяется по бесплатным лицензиям [2].
Операционные системы семейства Windows также разнообразны, но разнообразие связано больше с версионностью, что не только приводит к изменению пользовательского интерфейса, но и привносит дополнительные функции.
Первые версии Windows не являлись полноценными операционными системами, а по сути представляли собой графический интерфейс для операционной системы MS DOS. Своё же начало эта линейка ведёт отсчёт с середины 1980-х годов, когда вышла в продажу первая версия – Windows 1.0.
Впервые деление на персональные и серверные ОС для Windows началось в 1993 году, когда вышла первая операционная система Windows NT[2] для серверов и корпоративных компьютеров. С этого времени компания Microsoft начала выпуск операционных систем отдельно для персональных компьютеров и/или корпоративных рабочих станций и отдельно для серверного оборудования.
На момент написания работы последней версией персональной операционной системы семейства Windows является Windows 10, а для серверов – Windows 2019 Server[3].
Среди персональных (или, так называемых десктопных) операционных систем явно превалирует Windows. Портал Net Marketshare приводит аналитику использования операционных систем:
Рисунок 1 Статистика использования десктопных ОС
по данным портала Net Marketshare[4]
На графике видно, что популярнейшие на момент написания работы операционные системы Windows 7 и Windows 10 занимают примерно 78% рынка. По данным этого же портала суммарная доля ОС Windows составляет 86%.
Что касается использования операционной системы на серверном оборудовании, то здесь ситуация сильно отличается от того, что мы видим в десктопном сегменте. Аналитическое агентство W3Cook приводит статистику установок различных операционных систем на web-серверах: доля ОС Windows составляет 1,86%, в то время как Linux – 98,14%[5]. Объясняется это достаточно просто: продукт компании Microsoft является коммерческим, в то время как и дистрибутивы Linux, и программное обеспечение для этой ОС в своём большинстве бесплатны.
В контексте этой работы автор будет рассматривать обеспечение безопасности операционных систем на базе ядра Linux. Несмотря на то, что дистрибутивы подобных систем разнообразны, у них как правило одно и то же ядро, поэтому рекомендации по обеспечению безопасности в большинстве своём универсальны.
Точкой отсчёта создания ОС Unix принято считать 1969 год – программисты лаборатории Bell Labs компании AT&T для решения задач лаборатории разработали для рабочего компьютера PDP‑7 операционную систему на языке ассемблер. Интересным является тот факт, что изначально широкое распространение этой ОС не планировалось. В силу того, что ассемблерные коды привязаны к архитектуре (у разных производителей процессоров свой набор инструкций), энтузиастами код был переписан на языке Си, что открыло возможности для кроссплатформенного использования.
В середине 1970-х годов студентами калифорнийского университета в Беркли был выпущен свой релиз версии Unix. Причиной отдельной версии ОС являлось то, что в изначальном варианте Unix не было встроенной поддержки сетевого взаимодействия между разными рабочими станциями. Операционная система, разработанная в университете Беркли, получила название BSD (аббревиатура от англ. Berkley Software Distribution). Данный этап по сути задал два различных вектора развития Unix: коммерческие продукты, выпускаемые под лицензией, основанной на пятой редакции выпуска Unix (т. н. System V), и Unix BSD [1, p. 5].
В настоящее время клоны Unix очень широко распространены. Достигается это благодаря нескольким существенным особенностям:
- системы как правило обладают кроссплатформенностью;
- полная, а порой избыточная, документация на всё поставляемое программное обеспечение;
- гибкая система настройки;
- повсеместно внедряемый графический интерфейс;
- дополнительные модули для запуска приложений конкурирующих операционных систем [3, p. 4].
Тем не менее, Unix-подобные системы не лишены и недостатков, среди которых, например, сложность администрирования, вызванная такими факторами, как:
- неочевидное разграничение прав доступа пользователей для доступа к конфиденциальной информации;
- требуемая квалификация, обуславливающаяся чрезвычайно большим количеством команд и их параметрами;
- большое разнообразие сборок операционных систем делает управление программами сложной задачей [4, p. 6];
- неограниченные полномочия администратора, что дополнительно усложняет процесс устранения возможных ошибок [3, p. 5].
Нормативная база
Государственный стандарт ГОСТ Р 53622-2009 «Информационные технологии (ИТ). Информационно-вычислительные системы. Стадии и этапы жизненного цикла, виды и комплектность документов» определяет это понятие следующим образом: «Информационно-вычислительная система (программно-технический комплекс) – это совокупность данных (баз данных) и программ, функционирующих на вычислительных средствах как единое целое для решения определённых задач[6]» [5]. Поэтому любую операционную систему можно рассматривать как часть информационной системы[7][8] [6].
Любая информационная система вместе с находящимися в ней данными должна иметь три важнейших свойства: конфиденциальность, целостность и доступность[9] [7]. При этом в ГОСТ Р ИСО/МЭК 15408-1-2012 «Информационная технология (ИТ). Методы и средства обеспечения безопасности. Критерии оценки безопасности информационных технологий. Часть 1. Введение и общая модель» под конфиденциальностью понимается защита информации от несанкционированного раскрытия, под целостностью – защита от несанкционированной модификации, а под доступностью – защита от потери возможности её использования[10] [6].
Понятие безопасности информационной системы, а точнее, её защищённости, описано в стандарте ГОСТ Р 50739-95 «Средства вычислительной техники. Защита от несанкционированного доступа к информации. Общие технические требования» и включает в себя выполнение одновременное трёх требований:
- однозначно определённые и непротиворечивые правила разграничение доступа;
- регистрация событий, имеющих отношение к безопасности;
- гарантии того, что выполняются первые два требования[11] [8].