Практика преддипломная (1195371)
Текст из файла
Министерство транспорта Российской Федерации
Федеральное агентство железнодорожного транспорта
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Дальневосточный государственный университет путей сообщения »
ОТЧЕТ
по преддипломной практике
Автор работы:
студент 2 курса
группа ИС2
Кочарян С.Г.
Руководитель работы:
доцент, кандидат технических наук
Ешенко Роман Анатольевич
Хабаровск 2017 г.
Оглавление
Общие сведения о месте прохождения практики 3
Описание деятельности ООО "Современные компьютерные системы" 4
Выполнение индивидуального задания 5
Введение 6
Межсетевой экран 7
Среда NDIS 9
Портирование драйвера на 64-битную систему 11
Результат работы драйвера 14
Заключение 16
Общие сведения о месте прохождения практики
Наименование предприятия: ФГБОУ ВО «Дальневосточный государственный университет путей сообщения», кафедра «ИТиС»
Место прохождения практики: Россия, 680021, г. Хабаровск, ул. Серышева, дом 47
Сроки практики: с 20.02.2017 г. по 28.05.2017 г.
Руководитель практики на предприятии: Ешенко Роман Анатольевич
Индивидуальное задание
Заданием на преддипломную практику было написание программного комплекса для работы в 64-битной системе Windows XP, Windows Server 2003, Windows Server 2008.
Программный комплекс состоит из двух частей:
- master.exe, управляющая программа, подготовлена в среде C++ Builder.
- MyDriver.sys, промежуточный драйвер, подготовлен в среде Visual Studio с использованием Driver Development Kit.
Программный комплекс предназначен для работы в качестве сетевого экрана.
Введение
Брандмауэр представляет собой систему сетевой безопасности, которая контролирует входящий и исходящий сетевой трафик, на основе предопределенных правил безопасности. Брандмауэр обычно создает барьер между внутренней и внешней сетью, например, интернетом, которая считается небезопасной и не надежной сетью. Брандмауэр Windows, который входит в стандартную поставку операционной системы Windows, не имеет практически никаких настроек присущих другим сетевым экранам. Большинство других Сетевых экранов, таких как Outpost и др, работают на уровне приложений и перехватывают функции сетевых библиотек. Но, судя из сетевой модели OSI перехват пакетов лучше всего делать между сетевым и канальным уровнями, так, как на сетевом и выше работает протокол TCP/IP, а на канальные такие протоколы как Ethernet, ATM, X.25 и другие. Именно для этого в операционных системах на чинная с DOS присутствует драйвер NDIS. NDIS — спецификация интерфейса сетевого драйвера, была разработана совместно фирмами Microsoft и 3Com для сопряжения драйверов сетевых адаптеров с операционной системой. Для разработки драйвера также потребуется специальный пакет программ DDK (Driver Development Kit). DDK- набор из средств разработки, заголовочных файлов, библиотек, утилит, программного кода примеров и документации, который позволяет программистам создавать драйверы для устройств по определённой технологии или для определённой платформы.
Большинство современных сетевых экранов являются платными и с закрытым исходным кодом, именно поэтому более экономично разработать свой сетевой экран, при том что все средства, необходимые для разработки драйвера являются бесплатными, DDK в свободном доступе можно скачать с сайта Microsoft, Visual Studio 2008 Trial Edition – Можно бесплатно использовать 90 дней.
Межсетевой экран
Цель брандмауэра заключается в том, что он контролирует и фильтрует весь трафик между компьютером и другими сетями, например, сетью Интернет. Без использования фаерволла, на компьютер может поступать любой трафик. В случае, если брандмауэр включен, проходит только тот трафик, который разрешен правилами брандмауэра.
Чаще всего брандмауэр — это набор программ маршрутизации и фильтрации сетевых пакетов. Такие программы позволяют определить, можно ли пропустить данный пакет и если можно, то отправить его точно по назначению. Для того чтобы брандмауэр мог сделать это, ему необходимо определить набор правил фильтрации. Главная цель брандмауэра — контроль удаленного доступа извне или изнутри защищаемой сети или компьютера.
В основе работы брандмауэра – задание системы правил, определяющих условия прохождения пакетов. Каждый пакет проверяется на соответствие правилам, и по результатам проверки пакет либо пропускается, либо отбрасывается. В правилах могут быть установлены запреты или разрешения на прохождения пакетов, сформированных по протоколам тех или иных служб, приходящих с конкретного IP-адреса, запрашивающих определенный порт компьютера и т.д. В брандмауэр обычно встроен счетчик количества пакетов и байтов, подвергнутых проверке на соответствие определенному правилу.
При установке сетевых экранов выбирают стратегию или разрешительную, или запретительную. В работе это выглядит так: правила выстраивают в пронумерованном порядке. Приоритет правила убывает с ростом номера.
Пакеты пропускают сквозь строй правил, и если какое-то из них выставляет запрет, то дальше пакеты не пройдут. При запретительной стратегии последнее правило гласит: все запрещено, и пакеты, встретившие при проходе через строй разрешающее, правило с меньшим номером, не будут отвергнуты и пройдут до места назначения. Так что настройка брандмауэра сводится к формулированию правил и выстраиванию их в определенном порядке.
Брандмауэр позволяет лишь частично решить проблемы, связанные с обеспечением безопасного функционирования вашей сети. Как бы хорошо он ни был настроен, если вы вовремя не обновили программный пакет, в котором была найдена уязвимость, или кто-то узнал ваши логин и пароль — ждите больших неприятностей. Основная задача брандмауэра — разрешать функционирование только тем службам, которым было явно разрешено работать в вашей сети или защищаемом компьютере. В результате мы получаем маленькую дверцу, через которую в уютный внутренний мирок могут попасть только те гости, которых пропустила ваша охрана, а список этих гостей рекомендуется сузить до минимального.
Среда NDIS
Сетевые драйверы можно разделить на 2 категории: NDIS-драйверы (Network Driver Interface Specification) и TDI-драйверы (Transport Driver Interface) . TDI-драйверы — это высокоуровневые драйверы, например, SMB-клиент, SMB-сервер, обертки SMB (NFFS, MSFS) и т.п. NDIS — это специальный драйвер (ему соответствует файл ndis.sys), который содержит функции, используемые низкоуровневыми сетевыми драйверами. NDIS как бы обволакивает низкоуровневые сетевые драйверы и является посредником в их общении между собой и с железом. По сути NDIS можно считать третьим ядром Windows. Чтобы более четко уяснить себе что из себя представляет NDIS можно посмотреть на следующую картинку:
Как видно из этой иллюстрации NDIS-драйверы бывают трёх типов:
- Минипорт-драйверы (драйверы адаптера)
- Промежуточные драйверы (например, psched.sys)
- Драйверы протокола (например, tcpip.sys)
Портирование драйвера на 64-битную систему.
В комплект Microsoft Windows DDK включена 64 битная среда сборки, которую можно использовать для написания исходного кода драйвера для 64-битной версии Windows. Эта среда содержит 64-битный компилятор, который можно использовать для определения проблем с указателями, неподходящих типов переменных и других проблем, характерных при компиляции 64-битного драйвера.
При первом запуске компилятора, генерируется много предупреждений о несоответствии типа, например:
«Warning C4311: 'type cast' : pointer truncation from 'unsigned char *' to 'unsigned long»
Эти предупреждения необходимо использовать в качестве руководства, чтобы сделать код надежнее. Желательно исключить все предупреждения.
Например, следующий код может спровоцировать Warning C4311:
Buffer = (PUCHAR) srbControl;
(ULONG) + = srbControl-> HeaderLength;
Чтобы исправить код, необходимо внести следующие изменения:
Buffer = (PUCHAR) srbControl;
(ULONG_PTR) + = srbControl-> HeaderLength;
Компилятор определяет следующие макросы для идентификации платформы.
Драйвера режима ядра должны проверять размер любого буфера ввода-вывода, переделанного из приложения пользователя. Если 32-разрядное приложение передает буфер, содержащий типы данных с указателем точности на 64-битный драйвер, и не происходит транкинг, драйвер будет ожидать, что буфер будет больше, чем есть на самом деле. Это связано с тем, что точность указателя составляет 32 бита в 32-битной системе, и 64 бита в 64-битной системе. Например, рассмотрим следующее определение структуры:
typedef struct _DRIVER_DATA
{
HANDLE Event;
UNICODE_STRING ObjectName;
} DRIVER_DATA;
В 32-битной Windows размер структуры DRIVER_DATA составляет 12 байтов.
В 64-разрядной версии Windows размер структуры DRIVER_DATA составляет 24 байта. (Требуется дополнительные 4 байта, чтобы можно было выровнять по 8-байтовой границе.)
Если 64-битный драйвер получает 12 байтов DRIVER_DATA, ожидая при этом 24 байта, проверка размера не будет выполнена. Чтобы предотвратить это, драйвер должен определить, была ли структура DRIVER_DATA отправлена 32-битным приложением, если да, то выполнить его надлежащим образом.
Например, приведенная выше структура DRIVER_DATA может быть определена следующим образом:
Typedef struct _DRIVER_DATA32
{
VOID * POINTER_32 Event;
UNICODE_STRING32 ObjectName;
} DRIVER_DATA32;
Поскольку в ней содержатся только типы данных с фиксированной точностью, эта новая структура имеет такой же размер в 32-разрядной Windows и 64-разрядной Windows.
Результат работы драйвера
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.