Файл: Особенности обеспечения безопасности ОС Linux (ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ БЕЗОПАСНОСТИ ОС LINUX, И ЕЕ ОСОБЕННОСТЕЙ).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 239

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Обзор отечественных платформ Linux.

О необходимости форсированного развития отечественного рынка ПО, обеспечения максимальной независимости от иностранных разработок в сфере высоких технологий и сохранения информационного суверенитета впервые на высшем уровне заговорили в 2014 году, когда санкции США и Евросоюза резко повысили риски, связанные с применением зарубежного софта в бизнесе и государственных организациях. Именно тогда в Министерстве связи и массовых коммуникаций РФ всерьёз озадачились решением этого стратегически значимого, по мнению чиновников, вопроса вместе со стимулированием спроса на национальные продукты и проработкой соответствующих мер поддержки отечественных разработчиков.

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

«Альт Линукс СПТ». Разработчики: ООО «Свободные программы и технологии», «Базальт СПО». Сайт продукта: svtlinux.ru

«Альт Линукс СПТ» представляет собой унифицированный дистрибутив на базе Linux для серверов, рабочих станций и тонких клиентов со встроенными программными средствами защиты информации, который может быть использован для построения автоматизированных систем по класс 1В включительно и информационных систем персональных данных (ИСПДн) по класс 1К включительно. ОС позволяет одновременно хранить и обрабатывать на одном персональном компьютере или сервере конфиденциальные данные, обеспечивать многопользовательскую работу с разграничением доступа к информации, работать с виртуальными машинами, а также использовать средства централизованной авторизации. Выданный ФСТЭК России сертификат подтверждает соответствие продукта требованиям безопасности.

Astra Linux. Разработчик: НПО «Русские базовые информационные технологии» (РусБИТех). Сайт продукта: astra-linux.ru

Разработка научно-производственного объединения «РусБИТех», представленная в двух вариантах: Astra Linux Common Edition (общего назначения) и Astra Linux Special Edition (специального назначения). Особенности последней версии ОС: развитые средства обеспечения информационной безопасности обрабатываемых данных, механизм мандатного разграничения доступа и контроля замкнутости программной среды, встроенные инструменты маркировки документов, регистрации событий, контроля целостности данных, а также прочие обеспечивающие защиту информации компоненты. По заверениям разработчиков, Astra Linux Special Edition — единственная программная платформа, сертифицированная одновременно в системах сертификации средств защиты информации ФСТЭК России, ФСБ, Минобороны РФ и позволяющая обрабатывать в автоматизированных средствах всех министерств, ведомств и других учреждений России информацию ограниченного доступа, содержащую составляющие государственную тайну сведения с грифом не выше «совершенно секретно».


ROSA Linux. Разработчик: ООО «НТЦ ИТ РОСА». Сайт продукта: rosalinux.ru

Семейство операционных систем ROSA Linux включает внушительный набор решений, предназначенных для домашнего использования (версия ROSA Fresh) и применения в корпоративной среде (ROSA Enterprise Desktop), развёртывания инфраструктурных IT-служб организации (ROSA Enterprise Linux Server), обработки конфиденциальной информации и персональных данных (РОСА «Кобальт»), а также составляющих государственную тайну сведений (РОСА «Хром» и «Никель»). В основу перечисленных продуктов положены наработки Red Hat Enterprise Linux, Mandriva и CentOS с включением большого количества дополнительных компонентов — в том числе оригинальных, созданных программистами научно-технического центра информационных технологий «РОСА». В частности, в составе дистрибутивов ОС для корпоративного сегмента рынка представлены средства виртуализации, ПО для организации резервного копирования, инструменты для построения частных облаков, а также централизованного управления сетевыми ресурсами и системами хранения данных.

Таблица 2. Рассмотрим сравнительную таблицу характеристик платформ ОС LINUX:

Название

плюсы

минусы

Альт Линукс СПТ

-He требуется отключение SecureBoot при загрузке ОС. -Средства управления операционной системой через веб-интерфейс (Alterator).

- После настройки не печатает принтер

-Текст выглядит недостаточно чётким.

Astra Linux

-Совершенно даром доступна следующая версия -чистый Debian

-Не обновляются важные

библиотеки, как glibc

-много не нужных приложений

ROSA Linux

-Хорошо русифицированный дистрибутив.

- Возможность установки на флешку.

- Стабильность.

Старые версии пакетов. -Описание пакетов на английском языке.

-Некоторых программ нет в репозиториях.

Мы рассмотрели ситуацию на отечественном рынке системного ПО и

выделили три платформы ОС Linux, каждая из которых имеет свои достоинства и недостатки.

ГЛАВА 2. АНАЛИЗ ПРОБЛЕМ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ ОС LINUX И НЕКОТОРЫЕ ПУТИ РЕШЕНИЙ


2.1. Уязвимость парольной защиты ОС LINUX

ОС Linux на сегодняшний день является довольно популярной среди пользователей и системных администраторов. Считается, что она имеет меньше уязвимостей, чем, например, Windows. Однако при неправильной настройке Linux злоумышленник может легко получить пароль учетной записи администратора (root). Такого невозможно сделать в последних версиях ОС Windows 10. При этом в большинстве случаев, нельзя установить ОС Linux без защиты паролем учетной записи суперпользователя. В последних версиях ОС Windows 10 не представляется возможным обойти пароль администратора, хотя еще несколько лет назад такая возможность существовала.

Необходимо сбросить пароль учетной записи администратора ОС Linux посредством редактирования GRUB (GRand Unified Bootloader) — программы-загрузчика операционной системы, затем поставить свой пароль и создать скрытую учетную запись пользователя.

Описание атаки.

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

Рисунок 1 Изменение параметров файла инициализации

На данном этапе злоумышленник может работать с файлами в режиме чтения, но не имеет прав для запуска и редактирования, хотя проверка статуса пользователя выдает «root», то есть режим суперпользователя (рисунок 2).

Рисунок 2 Проверка статуса пользователя

Для изменения прав пользователя, необходимо вручную задать параметры доступа и смонтировать заново раздел командой mount -о remount -rw /dev/sdal (рисунок 3)

Рисунок 3 Изменение прав пользователя для папки sdal

Для проверки наличия прав «root» можно попытаться создать каталог или файл. Если это удалось, то есть смысл продолжать дальше. Введя passwd root изменить пароль администратора. (Рисунок 4)

Рисунок 4 Изменение пароля администратора после получения прав «root»

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

2.2. Расширение защиты информационных систем защитой индивидуальных WEB-приложений в ОС LINUX


Разработка WEB-приложений находит все большее применение для решения широкого круга технических и научных задач. Это позволяет использовать всю аппаратную и программную мощность сервера, и нет необходимости создавать специальную программу-клиента, так как в этом качестве можно задействовать любой браузер.

Создавать такие приложения лучше в среде программирования, имеющей доступ к обширным библиотекам функций, реализующих решение множества прикладных задач. В операционной системе Windows такими средами WEB-програм-мирования являются, например, MS Visual Studio, RAD Studio, позволяющие пользоваться языками С#, C++ и обширными библиотеками функций. В операционной системе Linux такую возможность предоставляет, например, пакет Qt [1 ] с использованием QT Creator.

В стандартную поставку Qt не входит класс, реализующий 109 функции WEB-сервера на языке C++. Однако существует его реализация с открытым кодом по адресу [8], которая хорошо включается в среду Qt и позволяет создавать web-приложения, удовлетворяющие практическим требованиям. Обмен информацией между браузером и серверным WEB-нриложением осуществляется но TCP соединению, которое совершенно не защищено, что но нынешним временам является серьезным недостатком.

В среде Internet существует несколько предложений, как защитить соединение QHttpServer и браузера по протоколу SSL, например, [3], однако полной реализации этих идей пока не опубликовано. В настоящей статье представлена практическая реализация использования протокола SSL для защиты информации TCP соединения браузера и QHttpServer.

Использование протокола SSL [7] для защиты TCP соединения предпочтительно потому, что его поддержка уже включена в браузере и остается организовать ее только на стороне QHttpServer. Используя идеи [3, 5], можно произвести замену взаимодействия классов следующим образом. Исходное взаимодействие классов QHttpServer <--> HttpCoimection (здесь используется незащищенное TCP соединение) представлено на рис. 1.

Рис. 1. Упрощенная диаграмма исходных классов

Эту последовательность классов следует заменить на другую последовательность QHttpServer <—> QSslServer <--> QHttpConnection (в классе QSslServer используется QSslSocket), которая представлена на рис. 2.

Рис. 2. Упрощенная диаграмма новой последовательности классов

Для этого необходимо произвести некоторые изменения в исходных файлах [6]. Ниже приведены фрагменты текстов изменяемых файлов. Все изменения и дополнения выделены жирным шрифтом.


Изменения в файле qhttpserverfwd.h

#ifndef Q_HTTP_SERVER_FWD

#define Q_HTTP_SERVER_FWD

#include <QHash>

#include <QString>

typedef QHash<QString, QString> HeaderHash;

// QHttpServer

class QHttpServer;

class QHttpConnection;

class QHttpRequest;

class QHttpResponse;

class QSsIServer;

// Qt

class QTcpServer;

class QTcpSocket;

// http_parser

struct http_parser_settings;

struct http_parser;

#endif

Изменения в файле qhttpserverfwd.h.

#ifndef Q_HTTP_SERVER

#define Q_HTTP_SERVER

#define QHTTPSERVER_VERSION_MAJOR 0

#define QHTTPSERVER_VERSION_MINOR 1

#define QHTTPSERVER_VERSION_PATCH 0 #include "qhttpserverapi.h"

#include "qhttpserverfwd.h"

#include <QObject>

#include <QHostAddress>

#include <QTcpServer>

#include <QSsl>

#include <QSslSocket>

#include <QSslKey>

#include <qsslsocket.h>

class QSsIServer : public QTcpServer

{

QOBJECT

public:

QSslServer(QObject *parent=0);

QSsISocket *serverSocket;

virtual ~QSslServer();

public slots:

void ready();

private:

QSsICertificate signedSelfCert;

QSsIKey privateKey;

void incomingConnection(qintptr socketDescriptor);

};

extern QHash<int, QString> STATUS_CODES;

class QHTTPSERVER_API QHttpServer: public QSsIServer

{

Q_OBJECT

public:

QHttpServer(QObject *parent=0);

QSsIServer *m_tcpServer;

virtual ~QHttpServer();

bool listen(const QHostAddress &address = QHostAddress::Any, quintl 6 port = 80);

bool Iisten(quint16 port);

void close();

signals:

void newRequest(QHttpRequest 'request, QHttpResponse 'response);

public slots:

private slots:

void newConnection();

private:

void incomingConnection(qintptr socketDescriptor);

};

#endif

Изменения в файле qhttpserver.cpp.

#include "qhttpserver.h"

#include <QTcpServer>

#include <QTcpSocket>

#include <QVariant>

#include <QDebug>

#include <QSslSocket>

#include "qhttpconnection.h"

#include "bodydata.h"

QHash<int, QString> STATUS_CODES;

QSslServer::QSslServer(QObject ‘parent)

{

}

QSslServer::~QSslServer()

{

}

………………………..

bool QHttpServer::listen(const QHostAddress &address, quint16 port)

{

Q_ASSERT(!m_tcpServer);

m_tcpServer = new QSslServer(this);

bool couldBindToPort = m_tcpServer->listen(address, port); if (couldBindToPort)

{

connect(m_tcpServer, SIGNAL(newConnection()), this, SLOT(newConnection()));

}

else

{

delete m_tcpServer;

m_tcpServer = NULL;

}

return couldBindToPort;

}

void QSslServer::incomingConnection(qintptr socketDescriptor)

{

serverSocket = new QSsISocket;

QFilecertFile("/home/evd/crl/localhost.crt"); certFile.open(QIODevice::ReadOnly);

signedSelfCert = QSsICertificate (&certFile);

certFile.close();

QFileprivateFile("/home/evd/crl/localhost.key"); privateFile.open(QIODevice::ReadOnly);

privateKey = QSslKey(&privateFile, QSsl::Rsa);

privateFile.close();

serverSocket->setPrivateKey(privateKey);

serverSocket->setLocalCertificate(signedSelfCert);