Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет по практике мой.doc
Скачиваний:
12
Добавлен:
28.09.2019
Размер:
478.72 Кб
Скачать

3. Информационная безопасность

Основополагающим условием успешности бизнеса MERA является эффективное обеспечение безопасности, конфиденциальности информации и сохранение интеллектуальной собственности заказчиков. Поэтому компания разработала, внедрила и следует тщательно документированной политике корпоративной безопасности, согласованной с требованиями стандарта по управлению информационной безопасностью ISO 17799 (BS 7799). Соответствующие меры безопасности полностью согласуются с требованиями заказчиков. Система корпоративной безопасности регулярно проходит внешние и внутренние аудиты.

Первостепенными задачами безопасности являются:

  1. Защита информации и интеллектуальной собственности

Все сотрудники компании MERA, обладающие доступом к конфиденциальной информации, являющейся интеллектуальной собственностью заказчика и доверенной компании MERA в рамках делового сотрудничества (данные, документация, программное обеспечение и т.д.), обязуются строго соблюдать ее конфиденциальность. Соответствующие юридические положения отражены в должностных инструкциях сотрудников и соглашениях о неразглашении, которые подписываются каждым сотрудником при трудоустройстве в компанию MERA. В соответствии с этими документами сотрудники компании обязуются соблюдать требования нераспространения служебной информации.

  1. Обучение персонала в области безопасности

Учет человеческого фактора является ключевым для обеспечения должного уровня безопасности, поэтому сотрудники компании MERA проходят обязательное обучение политике безопасности компании. Каждый сотрудник компании должен руководствоваться принципами, правилами и процедурами в области корпоративной политики безопасности, которые регулируют управление, защиту и распределение важной информации.

  1. Физическая безопасность и контроль доступа

В компании осуществляется круглосуточный контроль доступа в здания и контроль пожарной безопасности. Проектные помещения, лаборатории и серверные комнаты организованы раздельно для проектов каждого заказчика, доступ в помещения каждого проекта ограничен списком сотрудников соответствующего проекта.

4. Проделанная работа:

В ходе выполнения практики мною:

  • была написана программа «ECHO-сервер».

На каждое посланное сообщение сервер отвечает им же, тем самым проверяя стабильность соединения. Сервер управляет всеми подключениями в однопоточном режиме. Он не создает ни новых процессов, ни новые потоки.Всякий раз, когда клиент подключается к серверу, новый сокет открыт для общения с клиентом. Все эти сокеты обрабатываются одним процессом. Сервер будет обеспечивать параллелизм используя систему мультиплексирования ввода/вывода UNIX, предоставляемых системным вызовом select(2). Сервер обеспечивает распределние ресурсов сервера между всеми активными клиентами (например, ситуация, когда сервер застревает в ожидании данных от одного из клиентов, в то время как другие клиенты ждут службы, является неприемлемым). После того как сервер успешно вошел главный цикл (ждет запрос на соединение, принимая соединения и обслуживающих его), он должен продолжать работать должным образом всегда, независимо от того, что делают клиенты.

#include <stdio.h>

#include <errno.h>

#include <string.h>

#include <sys/socket.h>

#include <netdb.h>

#include <sys/types.h>

#include <unistd.h>

#include <fcntl.h>

#define MAX_FOUND(a, b) (((a) > (b)) ? (a) : (b))

#define SIZE 128

#define MAX 32

#define PORT unsigned short int

int client[MAX];

void init(void)

{

int i;

for(i=0; i<MAX; i++)

client[i]=-1;

}

void free(int release)

{

client[release]=-1;

}

int list_max()

{

int i;

int max = -1;

for (i = 0; i < MAX; i++)

if (max < client[i])

max = client[i];

return max;

}

int add_client(int new_client)

{

int i;

for(i=0; i<MAX; i++)

if(client[i]<0)

{

client[i]=new_client;

return 0;

}

return 1;

}

int main(int argc, char *argv[])

{

int serv_sock, m_client_sock;

PORT port;

char buffer[SIZE];

int m_chek;

struct sockaddr_in server_struct, client_struct;

int bytes;

if (argc != 2)

{

printf("echo <port>");

return 0;

}

port = htons(atoi(argv[1]));

fcntl(serv_sock, F_SETFL, O_NONBLOCK);

server_struct.sin_family = AF_INET;

server_struct.sin_port = port;

server_struct.sin_addr.s_addr = INADDR_ANY;

if ((serv_sock = socket(PF_INET, SOCK_STREAM, 0)) == -1)

{

perror("Error of socket!! \n");

return errno;

}

if(bind(serv_sock, (struct sockaddr*)&server_struct, sizeof(server_struct))==-1)

{

if(errno==EADDRINUSE)

{

printf("Port is busy\n");

int new_port=50000;

while(bind(serv_sock, (struct sockaddr*)&server_struct, sizeof(server_struct))==-1)

server_struct.sin_port=htons(++new_port);

if(new_port==55000)

{

printf("No free ports\n");

close(serv_sock);

return 1;

}

}

else

{

printf("Cannot bind\n");

close(serv_sock);

return errno;

}

}

listen(serv_sock, SOMAXCONN);

init();

fd_set set;

int result=0;

int len;

while(1)

{

FD_ZERO(&set);

FD_SET(serv_sock, &set);

for(m_chek=0; m_chek<MAX; m_chek++)

{

if(client[m_chek]>0)

FD_SET(client[m_chek], &set);

}

if (select(MAX_FOUND(list_max(), serv_sock) + 1, &set, NULL, NULL, NULL) == -1)

{

perror("Select error\n");

result = 1;

break;

}

if (FD_ISSET(serv_sock, &set))

{

len=sizeof(server_struct);

if((m_client_sock = accept(serv_sock, (struct sockaddr *)&server_struct, &len))==-1)

{

perror("Accept error\n");

continue;

}

else

{

fcntl(m_client_sock, F_SETFL, O_NONBLOCK);

if (add_client(m_client_sock))

{

char msg[]="Maximum clients";

send(m_client_sock, msg, sizeof(msg), NULL);

close(m_client_sock);

}

else

{

printf("client: %s:%i\n", inet_ntoa(client_struct), ntohs(client_struct.sin_port));

}

}

}

for (m_chek = 0; m_chek < MAX; m_chek++)

{

if (client[m_chek] >= 0)

{

if (FD_ISSET(client[m_chek], &set))

{

bytes=recv(client[m_chek], buffer,SIZE, NULL);

if (bytes == 0)

{

printf("Connection error: %s , %i\n", inet_ntoa(client_struct), ntohs(client_struct.sin_port));

FD_CLR(client[m_chek], &set);

close(client[m_chek]);

free(m_chek);

continue;

}

if (bytes == -1)

{

perror("Recive error\n");

FD_CLR(client[m_chek], &set);

close(client[m_chek]);

free(m_chek);

continue;

}

if (send(client[m_chek], buffer, bytes, NULL) == -1)

{

perror("Send error\n");

FD_CLR(client[m_chek], &set);

close(client[m_chek]);

free(m_chek);

continue;

}

}

}

}

}

if (!result)

for (m_chek = 0; m_chek < MAX; m_chek++)

if (client[m_chek] >= 0)

close(client[m_chek]);

close(serv_sock);

return 0;

}

Для проверки работы «ECHO-сервера» был написан код для клиента.

Сервер запускался, как проект-демон в системе UNIX после чего поочерёдно запускалось несколько клиентов.

Программа была успешно протестирована.

  • был изучен стек протоколов SS7

Перед тем как обратиться к архитектуре SS7, введем основные понятия, которые будут использоваться в дальнейшем.

Пункт сигнализации (Signaling Point, SP) - это узел коммутации и обработки сигнальной информации в сети сигнализации. Для идентификации каждого пункта сигнализации определяется уникальный код пункта сигнализации (Signaling Point Code, SPC).

Звено сигнализации (Signaling Link, SL) служит для переноса сигнальных сообщений между двумя пунктами сигнализации и включает в себя оконечное оборудование и средства передачи (например, один временной интервал ИКМ). Несколько параллельных звеньев, соединяющих два пункта сигнализации, образуют пучок звеньев сигнализации (Signaling Link-Set, SLS).

Пункт сигнализации, принимающий сообщения по одному звену сигнализации и затем передающий их по другому звену без обработки содержания, называется транзитным пунктом сигнализации (Signaling Transfer Point, STP).

Пункт сигнализации, генерирующий сигнальное сообщение, называется исходящим пунктом сигнализации (Originating Point). Пункт сигнализации, которому предназначено сообщение, называется пунктом назначения (Destination Point).

Режим сигнализации (Signaling Mode) определяется взаимосвязью между путем передачи сигнальных сообщений и путем передачи информации пользователя (речи или данных).

В связанном режиме сигнализации (Associated Mode) пути передачи сигнальных сообщений и данных пользователя между двумя соседними пунктами сигнализации совпадают. Схематично связанный режим изображен на рис. 4,а.

При квазисвязанном режиме (Quasi-Аssociated Mode) сигнальные сообщения, относящиеся к одной и той же сигнальной взаимосвязи (Signaling Association), передаются по двум или более пучкам звеньев сигнализации через один или несколько транзитных пунктов сигнализации. Пути передачи информации пользователя и сигнальных сообщений в этом случае не совпадают (рис. 4,б).

Сигнальным маршрутом (Signaling Route) называется заранее установленный путь прохождения сигнальных сообщений по сети сигнализации между исходящим пунктом и пунктом назначения. Маршрут состоит из исходящего пункта, нескольких STP (в некоторых случаях они могут отсутствовать) и пункта назначения, соединенных звеньями сигнализации.

Совокупность всех сигнальных маршрутов между исходящим пунктом и пунктом назначения, посредством которых сообщение передается в сети сигнализации, называется пучком сигнальных маршрутов (Signaling Route-Set) для данной сигнальной взаимосвязи.

Б

Рис. 5 Базовая функциональная модель SS7

азовая функциональная модель SS7 изображена на рис. 5. Подсистема передачи сообщений (Message Transfer Part, MTP) играет роль общей транспортной системы и служит для надежной передачи сигнальных сообщений по сети сигнализации. Показанные на этом рисунке подсистемы пользователя (User Parts, UP) - это функциональные блоки, которые содержат процедуры и функции, определенные для каждого типа пользователя SS7.

Подсистема передачи сообщений обеспечивает надежную передачу сигнальной информации между различными подсистемами пользователя, являясь полностью независимой от содержания сообщений. Это означает, что сообщения передаются без ошибок (все искаженные сообщения должны быть исправлены до того, как они попадут в принимающую подсистему пользователя), в правильной последовательности, без потерь и дублирования.

Подсистемы пользователя могут генерировать и анализировать сигнальные сообщения, используя МТР в качестве транспортной системы для передачи сигнальной информации к другим подсистемам пользователя. Примерами подсистем пользователя являются: подсистема пользователя телефонии (Telephone User Part, TUP) и подсистема пользователя ISDN (ISDN User Part, ISUP).

Как уже говорилось, в SS7 сигнальная информация передается в виде сигнальных единиц. Существует три типа сигнальных единиц:

значащая сигнальная единица (Message Signal Unit, MSU), в составе которой передается сигнальная информация;

сигнальная единица состояния звена (Link Status Signal Unit, LSSU) используемая для управления состоянием звена сигнализации;

заполняющая сигнальная единица (Fill-in Signal Unit, FISU), которая служит для передачи положительных и отрицательных подтверждений при отсутствии сигнального трафика.

Сигнальная единица состоит из фиксированного числа полей. Поле сигнальной информации (Signaling Information Field, SIF) значащей сигнальной единицы содержит информацию подсистемы пользователя и метку маршрутизации (Routing Label) подсистемы МТР. Его длина не превышает 272 байт.

Кроме того, в состав сигнальной единицы входят следующие поля:

байт сигнальной информации (Service Information Octet, SIO), содержащий информацию о принадлежности MSU определенной подсистеме пользователя;

индикатор длины (Length Indicator, LI), определяющий количество байтов, следующих за индикатором длины и предшествующих полю CK. Он однозначно идентифицирует тип сигнальной единицы: для FISU LI = 0, для LSSU LI = 1 или 2 и для MSU LI > 2;

проверочные биты (Check bits, CK), использующиеся для обнаружения ошибок передачи;

прямой порядковый номер (Forward Sequence Number, FSN), обратный порядковый номер (Backward Sequence Number, BSN), прямой бит индикации (Forward Indicator Bit, FIB) и обратный бит индикации (Backward Indicator Bit, BIB), предназначенные для проверки последовательности SU и запроса повторной передачи искаженных сигнальных единиц при реализации методов защиты от ошибок;

ф

Рис. 7. Процесс установления телефонного соединения

лаг (Flag, F), обозначающий начало и конец сигнальной единицы 1.

В завершение данного раздела рассмотрим процедуру обмена сигнальными сообщениями при установлении/разъединении телефонного соединения, показанную на рис. 7. В этом процессе участвуют следующие сообщения:

начальное адресное сообщение (Initial Address Message, IAM), содержащее номер вызываемого абонента и указывающее категорию вызывающего абонента и другую связанную с вызовом информацию;

последующее адресное сообщение (Subsequent Address Message, SAM), служащее для передачи информации о набираемом номере;

сообщение о принятии полного адреса (Address Complete Message, ACM), содержащее информацию о статусе вызываемого абонента (например, "абонент свободен");

сообщение "ответ абонента" (Answer, Charge, ANC), определяющее момент начала начисления оплаты;

сообщение о разъединении соединения (Clear Forward, CLF), посылаемое в прямом направлении;

сообщение, подтверждающее разъединение соединения (Release Guard, RLG).

По окончании процесса изучения были успешно сданы экзамены по каждому протоколу из стека SS7.

  • ознакомилась с платформой CPP(Cello Packet Platform), используемой на узлах мобильной сети.

СРР - это исполняемая платформа для разработки приложений.Типичные области применения текущей версии CPP включают узлоы-RBSs(Radio Base Stations), RNCs(Radio Network Controllers), MGws(Media gateways).