Комплекс сетевой защиты

Автор работы: Пользователь скрыл имя, 17 Сентября 2011 в 20:38, дипломная работа

Описание работы

В современном мире происходит стремительное развитие компьютерной техники и компьютерных технологий. Важное место среди них занимают технологии вычислительных и информационных сетей. Создание и развитие Internet и World Wide Web привело к новому этапу развития информационного общества. Но, с другой стороны, развитие современных сетевых информационных технологий привело к росту числа компьютерных преступлений и связанных с ними хищений информации, а также материальных потерь.

Содержание работы

1. Введение 8
2. Задача сетевой защиты и методы её решения 10
2. 1. Брандмауэр 10
2. 2. Фильтры пакетов – простые и кумулятивные 11
2. 3. Прокси-брандмауэры и сервера уровня соединения 13
2. 4. Шлюзы приложений и сервера прикладного уровня 14
2. 5. Системы обнаружения компьютерных атак (СОА) 15
2. 6. Классификация систем обнаружения атак (СОА) 17
2. 7. Варианты реакций на обнаруженную атаку 19
2. 8. Характеристики средств сетевой защиты 21
2. 9. Выводы 25
3. Постановка задачи 27
3. 1. Концепция программного средства 27
3. 2. Сетевое программирование под OC Windows 28
3. 3. Атакующие воздействия для программного средства 31
3. 3. 1. Атака Smurf 31
3. 3. 2. Атака Tribe Flood Network 33
3. 3. 3. Атака WinFreeze 34
3. 3. 4. Атака ICMP Flood 36
4. Модель системы 37
4. 1. Схема взаимодействия модулей системы 44
4. 2. Описание модулей 46
4. 3. Описание программных элементов 47
5. Сведения о реализации 62
6. Экспериментальная часть 64
7. Разработка документации 73
7. 1. Техническое задание 73
7.2. Руководство оператора 76
8. Бизнес-план 78
8. 2. Характеристика ПП 78
8. 3. Исследование и анализ рынка 80
8. 4. Производственный план 82
График безубыточности 96
9. Безопасность и экологичность проекта 97
9. 1. Введение 98
9. 2. Характеристика производственного помещения 99
9. 3. Производственная санитария 100
9. 4. Электробезопасность 101
9. 5. Пожаробезопасность 102
9. 6. Контроль над электромагнитным излучением 104
9. 7. Освещение 107
9. 8. Вентиляция 108
9. 9. Контроль шума 110
9. 10. Эргономичность 111
9. 11. Вывод 113
10. Заключение 114
11. Список литературы 115
Приложение 116
Файл http_plugin.cpp 116
Файл Packet.cpp 128
Файл Packet.h 130
Файл Raw_send.cpp 132
Файл http_conf.inf 137
Файл http_client.htm 137
Файл http_icmp_form.htm 138
Файл http_icmp_reply.htm 139
Файл http_attack_form.htm 140
Файл http_attack_reply.htm 142
Файл Packet.cpp 142
Файл Packet.h 142
Файл pop3_conf.inf 142
Файл pop3_main.cpp 143

Файлы: 1 файл

Пояснительная записка.doc

— 1.00 Мб (Скачать файл)

int param_index (количество строк в этом массиве) 

CONF_HTTP conf (конфигурационный объект)

long connection_time (время подключения)

fstream report_file (в этот файл записывается всё, что сервер получает и отправляет)

SERVER(void) ( конструктор – обнуляет все  поля объекта)

int recv_data(void) (получить информацию через сокет)

int send_data(void) (отправить информацию через сокет)

int shutdown_and_closesocket(void) (закрыть сокет)

void erase_buffer(void) (стереть буфер)

void set_buffer(char*) (заполнить буфер) 

int ProcessClientQuery(void) (обработать клиентский запрос)

int ProcessControlString(char* c_string) (разбить строку параметров на отдельные лексемы) 

void CreateQueryForm(char* temp_path) (считать в буфер с диска htm-файл (форму запроса) для отправки клиенту)

int ProcessHTTPCommand(void) (выполнить команду, полученную от HTTP-клиента)  

SERVER& operator=(SERVER& right) (перегруженное присваивание из-за строк)

};

Описания функций:

DISPATCH_SERVER_SOCKET_HTTP::DISPATCH_SERVER_SOCKET_HTTP(CONF_HTTP& conf_ref) -  конструктор диспетчерского сокета. Создаёт обычный (не «сырой») сокет, привязывает к адресу, устанавливает размер очереди на подключение,  

int DISPATCH_SERVER_SOCKET_HTTP::accept_connect(void) – ожидает подключения HTTP-клиента, при подключении создаёт виртуальный сокет и новую нить, в которую его передаёт.

SERVER::SERVER(void) – конструктор класса.

int SERVER::shutdown_and_closesocket(void) – мягкое выключение и закрытие сокета.

void SERVER::erase_buffer(void) – стереть буфер

void SERVER::set_buffer(char* string) – заполнить буфер

int SERVER::recv_data(void) – побайтно получить информацию

int SERVER::send_data(void) – побайтно отправить информацию

SERVER& SERVER::operator=(SERVER& right) – перегруженное присваивание

void CONF_HTTP::Init(void) – инициализация конфигурационного  объекта

CONF_HTTP::CONF_HTTP(void) – конструктор конфигурационного объекта

int SERVER::ProcessClientQuery(void) – обработка клиентского запроса и посылка HTTP-файла (формы запроса)

int SERVER::ProcessControlString(char* st) – разбивает строку запроса на отдельные лексемы

DWORD WINAPI ThreadFuncHTTP(SERVER* p_server) – главная нить, в которой работает HTTP-сервер, т.е. получает запрос, обрабатывает его и отправляет ответ.

char* substring(char* st,char s1,char s2,char* ret) – вспомогательная функция. Выделяет подстроку из строки, начиная с char s1 и заканчивая char s2.

char* getspos(char* search_string,char search_symbol) - вспомогательная функция. Возврашает номер позиции символа в строке.

void readcomment(fstream& file) - вспомогательная функция. Применяется для игнорирования комментариев при считывании конфигурационного файла.

void SERVER::CreateQueryForm(char* temp_path) - решает вопрос об отправке клиенту формы на основании его запроса.

int SERVER::ProcessHTTPCommand(void) – посылает атакующую последовательность  пакетов по команде от HTTP-клиента. 

Описание  элементов сервера  raw_send.exe:

Модуль  Packet.h содержит следующие элементы:

Те же элементы, что и в файле packet.h клиента.

Модуль  Packet.cpp cодержит следующие элементы:

Те же элементы, что и в файле packet.cpp клиента.

Модуль  Raw_recv.cpp cодержит следующие элементы:

Описания  функций:

main – инициализирует глобальную переменную – путь к исполняемому файлу, загружает библиотеку сокетов, запускает нить с почтовым POP3-сервером, создаёт «сырой» сокет, «привязывает» его к своему адресу, и переводит его в режим бесконечного приёма запросов.

int RAW_SOCKET::RecvPackets(void) – принимает входящие пакеты в бесконечном цикле, для каждого пакета выводит на экран его содержимое и проверяет его поля на предмет атаки.

int ICMP_PACKET::DetectAttack(void) – считывает поля полученного пакета и сверяет их с сигнатурами атак, принимая решение, атака это или нет. Если атака зарегистрирована, то функция выводит соответствующее сообщение на консоль сервера и формирует в почтовом ящике серевера соответствующее сообщение электронной почты, которое можно забрать, подключившись к POP3-серверу программой MS Outlook Express.

int make_message(char* filename) – формирует в почтовом ящике сообщение электронной почты. 

Модуль  Server.h cодержит следующие элементы:

1.  Структура FILE_REF: 

Представляет  описание структуры - описателя файла-письма. Содержит поля:

char filename[MAX_PATH] (имя файла)

int filesize (размер файла)

bool del (признак удаления)  

2.  Класс MODE: 

Представляет  описание абстрактного объекта, описывающего режим соединения POP3-сервера. Содержит поля:

bool authorization_mode (флаг, который определяет, включён ли режим авторизации) 

bool transaction_mode (флаг, который определяет, включён ли режим транзакции)

bool update_mode (флаг, который определяет, включён ли режим обновления)

MODE() (конструктор – обнуление всех полей)

void SetAuthorizationMode(void) (установить режим авторизации)

void SetTransactionMode(void) (установить режим транзакции)

void SetUpdateMode(void) (установить режим обновления)

bool IsAuthorizationMode(void) (узнать, выставлен ли флаг режима авторизации)

bool IsTransactionMode(void) (узнать, выставлен ли флаг режима транзакции)

bool IsUpdateMode(void) (узнать, выставлен ли флаг режима обновления) 

3.  Структура USER: 

Представляет  описание структуры - описателя файла-письма. Содержит поля:

char name[ADDRESS_MAX_LENGTH] (имя почтового ящика)

char domain[ADDRESS_MAX_LENGTH] (имя почтового домена)

char password[ADDRESS_MAX_LENGTH] (пароль на почтовый ящик)

bool lock (флаг, определяющий, заперт ли почтовый ящик)  

4.  Класс CONF: 

Представляет  описание абстрактного объекта, описывающего всю конфигурацию POP3-сервера. Содержит поля:

fstream conf_file (из этого файла при запуске программы считываем настройки POP3-сервера)

char ip_address[32] (ip-адрес этого сервера)

int port (порт, на который будем принимать POP3-запросы (обычно 110)

int echo( выводить ли на экран каждую POP3-транзакцию)

char Path[MAX_PATH] (путь к исполняемому файлу сервера)

char Domain[ADDRESS_MAX_LENGTH] (домен сервера (напр. "mailserver1.com")

FILE_REF file[MAX_USERS] (массив описателей для файлов – писем)

int f_index (его индекс)

int highest_number_accessed (непонятная хрень, смотрите RFC 1225)

int c_mes (номер обрабатываемого файла-письма для соответствующих команд)

int total_size (суммарный размер файлов-писем в почтовом ящике)

CONF(void) (конструктор, обнуляющий все поля)

void Init(void) (считать настройки сервера из файла "conf.inf")

void ProcessConfigCommands(void) (обработать команды настройки сервера)

int ParseMailDrop(char* user) (Название функции навеяно RFC 1225. Функция просматривает почтовый ящик, идентифицирует отдельные

файлы-письма, определяет размер каждого и общий  их размер.)

// 7 функций  для работы с пользователями

// кстати, "пользователь" - это папка с  файлом "password.inf"

bool IsUserExistent(char* User) (Проверяем, существует ли такой пользователь)

int DeleteUser(void) (Удалить пользователя)

int AddUser(void) (Создать пользователя)

void Help(void) (Вывести на экран информацию о конфигурационных командах)

int ListUsers(void) (Вывести список пользователей)

char* GetPassword(char* user,char* password) (узнать текущий пароль)

void SetPassword(void) (установить новый пароль) 

5.  Класс DISPATCH_SERVER_SOCKET: 

Представляет  описание диспетчерского сокета POP3-сервера. Содержит поля:

long connection_time (время подключения)

struct sockaddr_in server_address,client_address (адресная структура сервера и клиента)

int retval,size_of_client_address (количество полученных байт, размер клиентской адресной структуры)

WSADATA wsaData (структура для загрузки библиотеки сокетов)

SOCKET dispatch_server_socket, msg_server_socket (диспетчерский сокет POP3-сервера, виртуальный сокет для каждого POP3-подключения)

DWORD dwThreadID (идентификатор новой нити)

DISPATCH_SERVER_SOCKET(CONF& conf) (конструктор диспетчерского сокета, принимает конфигурационный объект)

CONF conf (конструктор конфигурационного объекта, обнуляет все поля)

int accept_connect(void) (принимает входящие подключения) 

6.  Класс SERVER_SOCKET: 

Представляет  описание виртуального сокета POP3-сервера (создаваемого для каждого подключения  POP3-сервера и закрываемого при завершении подключения). Содержит поля:

char Buffer[SIZE_OF_BUFFER] (буфер для приёма/отправки почтовых транзакций)

SOCKET msg_server_socket (конструктор, инициализирующий поля)

int query (флаг, который разрешает/запрещает ответ на запрос)

int quit (флаг, который показывает, что сеанс почтовой связи окончен)

CONF conf (конструктор, инициализирующий поля)

long connection_time (время подлючения)

fstream report_file (в этот файл запишем всё, что сервер получает и отправляет)

USER user (почтовый ящик, из которого мы забираем почту за одно

подключение. Для  обращения к каждому почтовому  ящику клиент всегда

создаёт новое  подключение, даже если эти ящики  находятся на одном

сервере)

char forward_path[ADDRESS_MAX_LENGTH] (здесь не используется. Но могла бы (см. RFC-1225)

char reverse_path[ADDRESS_MAX_LENGTH] (здесь не используется. Но могла бы (см. RFC-1225)

fstream mes_file (сюда записываем сообщение, пришедшее серверу

за 1 почтовую транзакцию с клиентом. Может фактически содержать  в себе несколько e-mail'ов)

char mes_path[MAX_PATH] (уникальное имя файла - сообщения)

MODE mode (конструктор, инициализирующий поля)

int not_this_command (счётчик нераспознавания принятой команды)

SERVER_SOCKET(void) (конструктор, инициализирующий поля)

int recv_data(void) (получить информацию через сокет)

int send_data(void) (отправить информацию через сокет)

int shutdown_and_closesocket(void) (мягко выключить сокет и закрыть его)

void erase_buffer(void) (стереть буфер)

void set_buffer(char*) (установить значение в буфере)

int ReplyOnClientConnection(void) (послать ответ клиенту на его подключение)

int ProcessClientQuery(void) (обработать запрос клиента)

SERVER_SOCKET& operator=(SERVER_SOCKET& right) (перегруженное присваивание из-за строк)  

Модуль  Server.cpp cодержит следующие элементы: 

Описания функций:

DISPATCH_SERVER_SOCKET::DISPATCH_SERVER_SOCKET(CONF& conf_ref) - Инициализируем библиотеку WS2_32.DLL, Создаём базовый(диспетчерский) сокет сервера, настроенный на TCP, Записываем в адресную структуру IP адрес сервера и порт сервера, Связываем адрес сервера с базовым(диспетчерским) сокетом сервера, Переводим базовый(диспетчерский) сокет сервера на режим прослушивание/диспетчеризация сигналов на подключение и устанавливаем размер очереди одновременных обращений к серверу.

Информация о работе Комплекс сетевой защиты