патент
№ RU 2694584
МПК H04L29/06

Способ обработки ТСР протокола в кластере сетевой вычислительной системы

Авторы:
Тычина Леонид Анатольевич
Номер заявки
2018137584
Дата подачи заявки
25.10.2018
Опубликовано
16.07.2019
Страна
RU
Как управлять
интеллектуальной собственностью
Чертежи 
1
Реферат

Изобретение относится к способу обработки пакетов TCP протокола, проходящих через кластер шлюзов безопасности сетевой вычислительной системы. Техническим результатом является повышение защиты кластера от DoS-атак. Формируют в оперативной памяти каждого шлюза таблицу для хранения трех ключей и относящихся к каждому ключу атрибутов. Формируют в шлюзе безопасности имеющий наименьший номер случайный ключ. Вычисляют для сформированного ключа порядковый номер, начиная с нуля, признаки четности порядкового номера и время создания ключа. Рассылают ключ и связанные с ним атрибуты во все остальные шлюзы безопасности. Сохраняют во всех шлюзах безопасности ключ и связанные с ним атрибуты в таблицу. Устанавливают период смены ключа в кластере. Посылают сетевой пакет, содержащий TCP-сообщение SYN для установки соединения (запрос), из клиента на сервер. 1 ил., 1 табл.

Формула изобретения

Способ обработки TCP протокола в кластере сетевой вычислительной системы, причем система включает

кластер, установленный на границе защищаемого участка сети и содержащий

по меньшей мере два шлюза безопасности, каждый из которых имеет уникальный номер в пределах кластера и выполнен с возможностью

принимать сетевые пакеты,

обрабатывать сетевые пакеты в соответствии с настройками,

создавать и использовать контекст соединения, который хранит необходимую информацию для обработки сетевых пакетов одного соединения,

вычислять ключевую криптографическую хэш-функцию (ККХФ),

формировать и хранить ключевую информацию,

принимать и обрабатывать пакеты от других шлюзов,

создавать правила пересылки между шлюзами,

пересылать пакеты в соответствии с правила пересылки;

два сетевых коммутатора, выполненных с возможностью

осуществлять балансировку трафика между шлюзами кластера,

назначать шлюзы для приема пакетов,

направлять пакеты одного и того же соединения на один и тот же шлюз безопасности,

причем 1-й коммутатор соединяет защищаемый участок сети и шлюзы безопасности, 2-й коммутатор соединяет незащищаемый участок сети и шлюзы безопасности;

по меньшей мере одно сетевое устройство (клиент), расположенный в защищаемом участке сети и выполненный с возможностью инициировать и устанавливать TCP соединения;

по меньшей мере одно сетевое устройство (сервер), расположенный вне защищаемого участка сети и выполненный с возможностью устанавливать TCP соединения;

способ, заключающийся в том, что

формируют в оперативной памяти каждого шлюза таблицу для хранения трех ключей и относящихся к каждому ключу атрибутов:

порядковый номер,

признак четности порядкового номера,

время создания ключа;

формируют в шлюзе безопасности имеющий наименьший номер случайный ключ;

вычисляют для сформированного ключа порядковый номер, начиная с нуля, признак четности порядкового номера и время создания ключа;

рассылают ключ и связанные с ним атрибуты во все остальные шлюзы безопасности;

сохраняют во всех шлюзах безопасности ключ и связанные с ним атрибуты в таблицу;

устанавливают период смены ключа в кластере;

посылают сетевой пакет, содержащий TCP-сообщение SYN для установки соединения (запрос), из клиента на сервер;

принимают запрос от клиента в шлюзе безопасности кластера (1-м шлюзе), назначенном 1-м коммутатором;

обрабатывает запрос в 1-м шлюзе, выполняя следующие действия:

создают контекст соединения, который содержит всю необходимую информацию для обработки последующих пакетов данного соединения;

обрабатывают запрос в соответствии с настройками шлюза безопасности;

формируют идентификатор сетевого потока из значений полей: IP-адрес источника, IP-адрес назначения, протокол, порт источника и порт назначения, которые будут в ответном сетевом пакете на запрос; если в таблице три ключа, то выбирают ключ, имеющий промежуточное время создания, если в таблице два ключа, то выбирают ключ, имеющий наиболее раннее время создания, если в таблице один ключ, то выбирают имеющийся ключ;

вычисляют ключевую криптографическую хэш-функцию (ККХФ) от идентификатора сетевого потока с использованием выбранного ключа;

формируют сообщение ClusterSecCookie, содержащее следующие поля:

идентификатор шлюза содержит идентификатор 1-го шлюза,

признак четности содержит признак четности выбранного ключа,

значение ККХФ содержит вычисленное значение ККХФ;

определяют наличие подзаголовка опции Timestamps option (TSopt) в поле Timestamp Value (TSval) в составе заголовка TCP протокола;

если подзаголовок имеется, то исходное значение поля TSval сохраняют в контексте соединения, иначе добавляют данный подзаголовок в контекст соединения;

записывают сообщение ClusterSecCookie в поле Timestamp Value (TSval) подзаголовка опций Timestamps option (TSopt);

отправляют запрос из 1-го шлюза на сервер;

принимают запрос из 1-го шлюза на сервере;

формируют на сервере сетевой пакет (ответ), включающий TCP-сообщение приема соединения SYNACK, которое содержит сообщение ClusterSecCookie в поле Timestamp Echo Reply (TSecr);

отправляют ответ от сервера в адрес клиента;

принимают ответ от сервера в шлюзе безопасности кластера (2-м шлюзе), назначенном 2-м коммутатором;

обрабатывает ответ в 2-м шлюзе, выполняя следующие действия:

формируют идентификатор сетевого потока из значений полей: IP-адрес источника, IP-адрес назначения, протокол, порт источника и порт назначения ответа;

извлекают сообщение ClusterSecCookie из поля Timestamp Echo Reply (TSecr);

выбирают ключ из таблицы ключей, выполняя следующие действия:

если в таблице три ключа и признак четности из ClusterSecCookie совпадает с признаком четности ключа, имеющего промежуточное время создания, то выбирают данный ключ;

если в таблице два ключа и признак четности из ClusterSecCookie совпадает с признаком четности ключа, имеющего более раннее время создания, то выбирают данный ключ;

если в таблице один ключ и признак четности из ClusterSecCookie совпадает с признаком четности ключа, то выбирают данный ключ;

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

если не удалось выбрать ключ, то обработка ответа завершается;

вычисляет ККХФ от идентификатора сетевого потока, используя выбранный ключ;

если вычисленное значение ККХФ не совпадает со значением ККХФ из ClusterSecCookie, то обработка ответа завершается;

если вычисленное значение совпадает со значением ККХФ из ClusterSecCookie, то выполняют следующие действия:

пересылают ответ шлюзу, указанному в поле идентификатор шлюза ClusterSecCookie (1-й шлюз);

создают правило обработки, которое обеспечивает пересылку в 1-й шлюз сетевых пакетов, идентификатор сетевого потока которых совпадает с идентификатор сетевого потока ответа;

принимают ответ из 2-го шлюза в 1-м шлюзе;

находят в 1-м шлюзе контекст соединения;

восстанавливают в 1-м шлюзе сохраненное ранее значение поля Timestamp Value (TSval) в поле Timestamp Echo Reply (TSecr);

обрабатывают в 1-м шлюзе ответ в соответствии с настройками шлюза;

отправляют ответ из 1-го шлюза клиенту;

периодически сменяют ключ, выполняя следующие действия:

если с момента времени последней смены ключа прошло более половины периода смены ключа, то в шлюзе безопасности, имеющем наименьший номер, выполняют следующие действия:

формируют случайный ключ;

вычисляют для сформированного ключа порядковый номер, признак четности порядкового номера и время создания ключа;

рассылают ключ и связанные с ним атрибуты во все остальные шлюзы безопасности; если получен новый ключ, то в каждом шлюзе выполняют следующие действия:

если в таблице три ключа, то полученный ключ и его атрибуты сохраняют на месте ключа с наиболее ранним временем создания;

иначе полученный ключ и его атрибуты добавляют в таблицу.

Описание

[1]

Область техники, к которой относится изобретение

[2]

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

[3]

Уровень техники

[4]

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

[5]

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

[6]

Современные L2/L3 коммутаторы поддерживает различные режимы балансировки нагрузки. Но все подходы к балансировки нагрузки посредством внешнего устройства по отношению к кластеру не позволят гарантировать симметричность прохождения пакетов от клиента к серверу и в обратном направлении. Шлюз безопасности может корректно обрабатывать сетевой трафик, только если пакеты одного сетевого соединения от клиента к серверу и в обратном направлении идут через один и тот же шлюз безопасности. Но в случае балансировки внешним устройством трафик одного сетевого соединения может пойти ассиметрично, в направлении от клиента к серверу через один элемент кластера, а в обратном - через другой элемент кластера, что приведет к некорректной обработки сетевого потока.

[7]

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

[8]

При выделении роли экспедитора возникает следующая задача, как экспедитору узнать какой элемент кластера является владельцем соединения, на который надо будет пересылать пакет. Существует ряд методов для решения данной задачи.

[9]

Так, например, после приема элементом кластера первого пакета нового соединения можно рассылать информацию об этом всем элементам кластера. Основной недостаток данного способа - повышенная нагрузка на все элементы кластера при обработке одного соединения.

[10]

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

[11]

Известен также способ обработки протокола TCP в кластере (патент США №9800549, приоритет от 11.02.2015 г.), включающий

[12]

• получение пакета в одном из множества шлюзов безопасности (ШБ) в одном из множества кластеров ШБ в домене кластеров сетевой среды, причем

[13]

домен кластеров сформирован подсетью данных, образованной множеством центров обработки данных (ЦОД) с множеством кластеров ШБ, обслуживающих трафик для данного набора защищенных конечных пунктов приема в составе множества ЦОД,

[14]

любой кластер ШБ обслуживает соответствующий ЦОД из множества ЦОД,

[15]

каждый кластер ШБ включает множество ШБ;

[16]

• идентификацию пакета в ШБ как соответствующего профилю трафика ЦОД;

[17]

• идентификацию в ШБ кластера назначения во множестве кластеров ШБ в домене кластеров;

[18]

• формирование и передача запроса из ШБ директору домена о владельце потока;

[19]

• если владелец потока выявлен директором домена, то осуществляют отправку пакета владельцу потока в кластер назначения;

[20]

• если владелец потока не выявлен директором домена, и директор домена имеет данные о состоянии потока для потока, к которому пакет принадлежит, то назначают ШБ владельцем потока; и

[21]

• идентификацию ШБ как владельца потока, если владелец потока не выявлен директором домена, причем

[22]

директор домена имеет данные о состоянии потока для потока, к которому принадлежит пакет, и

[23]

пакет не является начинающим связь пакетом.

[24]

Способ также может предусматривать, в процессе идентификации кластера назначения, вычисление хэш-функции (cHash) всех кластеров ШБ в домене кластеров.

[25]

Кроме того, способ может дополнительно включать идентификацию директора домена в кластере назначения путем вычисления хэш-функции (cHash) всех ШБ в кластере назначения.

[26]

При описании способа используются некоторые специфические термины, в частности

[27]

1) поток (flow) - последовательность пакетов, пересылаемых в обоих направлениях при одном или более соединениях, при этом любой поток может быть идентифицирован с помощью уникального набора данных (кортежа), состоящего из типа протокола, сетевых адресов источника и получателя и используемых портов источника и получателя;

[28]

2) владелец потока - это шлюз безопасности (ШБ), который получает первый пакет потока;

[29]

3) директор домена - это сетевое устройство, в т.ч. другой ШБ, которое выполнено с возможностью поддерживать состояние (обработки) и сохранять данные потока в домене кластеров;

[30]

4) кластер назначения - это кластер, к которому принадлежит владелец потока.

[31]

5) экспедитор - это ШБ, который пересылает пакеты потока владельцу потока.

[32]

В известном способе предлагается процесс взаимодействия, позволяющий экспедитору при получении пакета с TCP-сообщением не запрашивать у директора домена информацию о владельце для данного пакета. Это достигается за счет того, что владелец сохраняет собственный информацию в поле TCP Cookie пакета, затем сохраненная информация будет присутствовать и в пакетах в обратном направлении, которые могут попасть на ШБ, не являющийся владельцем для данного потока. Тогда ШБ извлекает информацию о том, кто является владельцем из TCP Cookie, пересылает пакет владельцу и создает правило пересылки, которое обеспечит пересылку последующих пакетов данного потока владельцу. ШБ который пересылает пакет владельцу, является экспедитором.

[33]

Известный способ принимается за прототип.

[34]

Недостатками известного способа являются возможность DoS-атак на кластер путем посылки ложных пакетов и необходимость на протяжении всего соединения модифицировать все пакеты данного соединения.

[35]

Злоумышленник, находящийся в недоверенной зоне (например, Интернет) может послать пакеты с TCP-сообщением, в которых указан фиктивный владелец в TCP Cookie. При этом ШБ, который примет данный пакет, создаст правила пересылки. Если злоумышленник пошлет большое количество таких пакетов, то объем памяти в ШБ, выделенной под правила пересылки, израсходуется, и кластер перестанет корректно обрабатывать пакеты, соответственно, клиенты, которые работали через данный кластер, будут получать отказ в обслуживании.

[36]

Раскрытие изобретения

[37]

Техническим результатом является

[38]

1) обеспечение защиты кластера от DoS-атак,

[39]

2) отсутствие необходимости модифицировать все пакеты соединения.

[40]

Для этого предлагается способ обработки TCP протокола в кластере сетевой вычислительной системы, причем система включает

[41]

• кластер, установленный на границе защищаемого участка сети и содержащий

[42]

по меньшей мере, два шлюза безопасности, каждый из которых имеет уникальный номер в пределах кластера и выполнен с возможностью

[43]

принимать сетевые пакеты,

[44]

обрабатывать сетевые пакеты в соответствии с настройками,

[45]

создавать и использовать контекст соединения, который хранит необходимую информацию для обработки сетевых пакетов одного соединения,

[46]

вычислять ключевую криптографическую хэш-функцию (ККХФ),

[47]

формировать и хранить ключевую информацию,

[48]

принимать и обрабатывать пакеты от других шлюзов,

[49]

создавать правила пересылки между шлюзами,

[50]

пересылать пакеты в соответствии с правила пересылки;

[51]

два сетевых коммутатора, выполненные с возможностью

[52]

осуществлять балансировку трафика между шлюзами кластера,

[53]

назначать шлюзы для приема пакетов,

[54]

направлять пакеты одного и того же соединения на один и тот же шлюз безопасности,

[55]

причем 1-й коммутатор, соединяет защищаемый участок сети и шлюзы безопасности, 2-й коммутатор соединяет незащищаемый участок сети и шлюзы безопасности;

[56]

• по меньшей мере, одно сетевое устройство (клиент), расположенный в защищаемом участке сети и выполненный с возможностью инициировать и устанавливать TCP соединения;

[57]

• по меньшей мере, одно сетевое устройство (сервер), расположенный вне защищаемого участка сети и выполненный с возможностью устанавливать TCP соединения;

[58]

способ, заключающийся в том, что

[59]

• формируют в оперативной памяти каждого шлюза таблицу для хранения трех ключей и относящихся к каждому ключу атрибутам

[60]

порядковый номер,

[61]

признака четности порядкового номера,

[62]

время создания ключа;

[63]

• формируют в шлюзе безопасности, имеющий наименьший номер, случайный ключ;

[64]

• вычисляют для сформированного ключа порядковый номер, начиная с нуля, признаки четности порядкового номера и время создания ключа;

[65]

• рассылают ключ и связанные с ними атрибуты во все остальные шлюзы безопасности;

[66]

• сохраняют во всех шлюзах безопасности ключ и связанные с ними атрибуты в таблицу;

[67]

• устанавливают период смены ключа в кластере;

[68]

• посылают сетевой пакет, содержащий TCP-сообщение SYN для установки соединения (запрос), из клиента на сервер;

[69]

• принимают запрос от клиента в шлюзе безопасности кластера (1-м шлюзе), назначенном 1-м коммутатором;

[70]

• обрабатывает запрос в 1-м шлюзе, выполняя следующие действия:

[71]

создают контекст соединения, который содержит всю необходимую информацию для обработки последующих пакетов данного соединения;

[72]

обрабатывают запрос в соответствии с настройками шлюза безопасности;

[73]

формируют идентификатор сетевого потока из значений полей: IP-адрес источника, IP-адрес назначения, протокол, порт источника и порт назначения, которые будут в ответном сетевом пакете на запрос;

[74]

если в таблице три ключа, то выбирают ключ, имеющий промежуточное время создания, если в таблице два ключа, то выбирают ключ, имеющий наиболее раннее время создания, если в таблице один ключ, то выбирают имеющийся ключ;

[75]

вычисляют ключевую криптографическую хэш-функцию (ККХФ) от идентификатора сетевого потока с использованием выбранного ключа;

[76]

формируют сообщение ClusterSecCookie, содержащее следующие поля:

[77]

идентификатор шлюза, содержит идентификатора 1-го шлюза,

[78]

признак четности, содержит признака четности выбранного ключа,

[79]

значение ККХФ, содержит вычисленное значение ККХФ;

[80]

определяют наличие подзаголовка опций Timestamps option (TSopt) в поле Timestamp Value (TSval) в составе заголовка TCP протокола;

[81]

если подзаголовок имеется, то исходное значение поля TSval сохраняют в контексте соединения, иначе добавляют данный подзаголовок в контекст соединения;

[82]

записывают сообщение ClusterSecCookie в поле Timestamp Value (TSval) подзаголовка опций Timestamps option (TSopt);

[83]

• отправляют запрос из 1-го шлюза на серве;

[84]

• принимают запрос из 1-го шлюза на сервере;

[85]

• формируют на сервере сетевой пакет (ответ), включающий TCP-сообщение приема соединения SYNACK, которое содержит сообщение ClusterSecCookie в поле Timestamp Echo Reply (TSecr);

[86]

• отправляют ответ от сервера в адрес клиента;

[87]

• принимают ответ от сервера в шлюзе безопасности кластера (2-м шлюзе), назначенном 2-м коммутатором;

[88]

• обрабатывает ответ в 2-м шлюзе, выполняя следующие действия:

[89]

формируют идентификатор сетевого потока из значений полей: IP-адрес источника, IP-адрес назначения, протокол, порт источника и порт назначения ответа;

[90]

извлекают сообщение ClusterSecCookie из поля Timestamp Echo Reply (TSecr);

[91]

выбирают ключ из таблицы ключей, выполняя следующие действия:

[92]

если в таблице три ключа и признак четности из ClusterSecCookie совпадает с признаком четности ключа, имеющего промежуточное время создания, то выбирают данный ключ;

[93]

если в таблице два ключа и признак четности из ClusterSecCookie совпадает с признаком четности ключа, имеющего более раннее время создания, то выбирают данный ключ;

[94]

если в таблице один ключ и признак четности из ClusterSecCookie совпадает с признаком четности ключа, то выбирают данный ключ;

[95]

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

[96]

если не удалось выбрать ключ, то обработка ответа завершается;

[97]

вычисляет ККХФ от идентификатора сетевого потока, используя выбранный ключ;

[98]

если вычисленное значение ККХФ не совпадает со значением ККХФ из ClusterSecCookie, то обработка ответа завершается;

[99]

если вычисленное значение совпадает со значением ККХФ из Cluster-SecCookie, то выполняют следующие действия:

[100]

пересылают ответ шлюзу, указанному в поле идентификатор шлюза ClusterSecCookie (1-й шлюз);

[101]

создают правило обработки, которое обеспечивает пересылку в 1-й шлюз сетевых пакетов, идентификатор сетевого потока которых совпадает с идентификатор сетевого потока ответа;

[102]

• принимают ответ из 2-го шлюза в 1-м шлюзе;

[103]

• находят в 1-м шлюзе контекст соединения;

[104]

• восстанавливают в 1-м шлюзе сохраненное ранее значение поля Timestamp Value (TSval) в поле Timestamp Echo Reply (TSecr);

[105]

• обрабатываем в 1-м шлюзе ответ в соответствии с настройками шлюза;

[106]

• отправляют ответ из 1-го шлюза клиенту;

[107]

• периодически сменяют ключ, выполняя следующие действия:

[108]

если с момента времени последней смены ключа прошло более половины периода смены ключа, то в шлюзе безопасности, имеющий наименьший номер, выполняя следующие действия:

[109]

формируют случайный ключ;

[110]

вычисляют для сформированного ключа порядковый номер, признак четности порядкового номера и время создания ключа;

[111]

рассылают ключ и связанные с ними атрибуты во все остальные шлюзы безопасности;

[112]

если получен новый ключ, то в каждом шлюзе выполняют следующие действия:

[113]

если в таблице три ключа, то полученный ключ и его атрибуты сохраняют на месте ключа с наиболее ранним временем создания;

[114]

иначе полученный ключ и его атрибуты добавляют в таблицу.

[115]

После запроса об установке соединения и ответа, последующие пакеты данного соединения будут следовать через кластер без модификации полей Timestamp Value (TSval) и Timestamp Echo Reply (TSecr).

[116]

В отличие от прототипа, где идентификатор элемента кластера сохраняется TCP Cookie без механизмов проверки подлинности данного значения, предлагаемый способ использует ККХФ и расписание смены секретного ключа для ККХФ, что обеспечивает проверку подлинности идентификатора элемента кластера, сохраненного за соединением (в полях Timestamp Value и Timestamp Echo Reply).

[117]

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

[118]

Если такой защиты нет, то пакет принимается и обрабатывается экспедитором (в предлагаемом способе это - 2-й шлюз), на каждое соединения экспедитор будет создавать запись для пересылки, которая расходует оперативную память. Большое количество фиктивных записей, которое будет создаваться в ходе DoS-атаки, может исчерпать память и снизить общую производительность элемента кластера.

[119]

В результате, обеспечивается защита кластера от DoS-атак и отсутствует необходимость модифицировать все пакеты соединения.

[120]

Краткое описание чертежей

[121]

На фигуре графического изображения приведена схема кластера в сети, где указаны следующие элементы:

[122]

1 - клиент,

[123]

2 - кластер,

[124]

3 - коммутатор внутренний (в защищаемой сети),

[125]

7 - коммутатор внешний (со стороны незащищаемой сети),

[126]

4, 5, 6 - шлюзы безопасности,

[127]

8 - сервер.

[128]

Осуществление изобретения

[129]

Рассмотрим реализацию предложенного способа, на примере взаимодействие веб-браузера с веб-сервером.

[130]

В качестве клиента (элемент 1 на фигуре графического изображения), выполняющего запрос, может использоваться компьютер с веб-браузером Mozilla, в качестве сервера (элемент 8 на фигуре графического изображения) - компьютер с Apache HTTP Server.

[131]

Коммутаторы (элементы 3 и 7 на фигуре графического изображения), выполняющие распределение трафика между ШБ (элементы 4, 5 и 6 на фигуре графи-ческого изображения), должен иметь функцию Equal-cost multi-path (ЕСМР) маршрутизации, обеспечивающую сохранение маршрута для пакетов одного и того же соединения.

[132]

В качестве ШБ используется сервер с операционной системой (ОС) Linux, с разработанным программным модулем анализа и пересылки пакетов, который peaлизует предложенный способ. В качестве функции безопасности ОС Linux выполняет фильтрацию сетевого трафика посредством подсистем netfilter и iptable. Подсистема netfilter создает и хранит контекст соединения, который расширяется дополнительными полями, необходимыми для реализации способа.

[133]

ОС Linux с подсистемами netfilter и iptable, обеспечивает выполнение следующих возможностей:

[134]

• принимать сетевые пакеты,

[135]

• обрабатывать сетевые пакеты в соответствии с настройками,

[136]

• создавать и использовать контекст соединения, который хранит необходимую информацию для обработки сетевых пакетов одного соединения,

[137]

• принимать и обрабатывать пакеты от других шлюзов.

[138]

Модуль анализа и пересылки пакетов, обеспечивает выполнение следующих функций:

[139]

• вычислять ключевую криптографическую хэш-функцию (ККХФ),

[140]

• формировать и хранить ключевую информацию,

[141]

• создавать правила пересылки между шлюзами,

[142]

• пересылать пакеты в соответствии с правила пересылки.

[143]

Модуль анализа и пересылки пакетов требует задания следующих параметров:

[144]

• уникальный номер ШБ в кластере на котором исполняется модуль,

[145]

• список ШБ, входящих в кластер, с указанием уникального номера и МАС-адреса каждого шлюза,

[146]

• период смены ключа.

[147]

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

[148]

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

[149]

• формируют в оперативной памяти таблицу для хранения трех ключей и относящихся к каждому ключу атрибутам

[150]

порядковый номер,

[151]

признака четности порядкового номера,

[152]

время создания ключа;

[153]

• сохраняют в памяти заданные параметры:

[154]

уникальный номер ШБ текущего ШБ,

[155]

список ШБ, входящих в кластер, с указанием уникального номера и МАС-адреса каждого шлюза,

[156]

период смены ключа;

[157]

• если уникальный номер текущего шлюза наименьший среди уникальных номеров в списке ШБ, то

[158]

формируют в ШБ, имеющий наименьший номер, случайный ключ,

[159]

вычисляют для сформированного ключа порядковый номер, начиная с нуля, признак четности порядкового номера и время создания ключа,

[160]

рассылают ключ и связанные с ними атрибуты во все остальные ШБ,

[161]

если уникальный номер текущего шлюза не наименьший среди уникальных номеров в списке ШБ, то при получении ключа и атрибутов ключа, сохраняют их в таблицу ключей.

[162]

Модуль анализа и пересылки пакетов регистрирует в ОС функцию обработки сетевых пакетов, которая должна быть применена к пакетам, которые будут переправлены в сеть в соответствии с правилами маршрутизации.

[163]

Для обработки сетевых пакетов в модуле анализа и пересылки пакетов выполняют следующие действия:

[164]

• если пакет содержит TCP-сообщение SYN (запрос), то

[165]

формируют идентификатор сетевого потока из значений полей: IP-адрес источника, IP-адрес назначения, протокол, порт источника и порт назначения, которые будут в ответном сетевом пакете на запрос;

[166]

если в таблице три ключа, то выбирают ключ, имеющий промежуточное время создания, если в таблице два ключа, то выбирают ключ, имеющий наиболее раннее время создания, если в таблице один ключ, то выбирают имеющийся ключ;

[167]

вычисляют ключевую криптографическую хэш-функцию (ККХФ) от идентификатора сетевого потока с использованием выбранного ключа;

[168]

формируют сообщение ClusterSecCookie, содержащее следующие поля:

[169]

идентификатор шлюза, содержит идентификатора текущего шлюза,

[170]

признак четности, содержит признак четности выбранного ключа,

[171]

значение ККХФ, содержит вычисленное значение ККХФ;

[172]

определяют наличие подзаголовка опций Timestamps option (TSopt) в поле Timestamp Value (TSval) в составе заголовка TCP протокола;

[173]

если подзаголовок имеется, то исходное значение поля TSval сохраняют в контексте соединения, иначе добавляют данный подзаголовок в контекст соединения;

[174]

записывают сообщение ClusterSecCookie в поле Timestamp Value (TSval) подзаголовка опций Timestamps option (TSopt);

[175]

• если пакет содержит TCP-сообщение SYNACK (ответ), то

[176]

формируют идентификатор сетевого потока из значений полей: IP-адрес источника, IP-адрес назначения, протокола, порт источника и порт назначения ответа;

[177]

извлекают сообщение ClusterSecCookie из поле Timestamp Echo Reply (TSecr);

[178]

выбирают ключ из таблицы ключей, выполняя следующие действия:

[179]

если в таблице три ключа и значение признака четности из Clus-terSecCookie совпадает с признаком четности ключа, имеющего промежуточное время создания, то выбираем данный ключ;

[180]

если в таблице два ключа и значение признака четности из Clus-terSecCookie совпадает с признаком четности ключа, имеющего более раннее время создания, то выбираем данный ключ;

[181]

если в таблице один ключ и значение признака четности из ClusterSecCookie совпадает с признаком четности ключа, то вы-бираем данный ключ;

[182]

если ключ не выбран и в таблице есть ключ, признак четности которого совпадает с признаком четности из ClusterSecCookie, и время создания которого отличается от текущего времени не более чем на одну четвертую от периода смены ключа, то выбирают данный ключ;

[183]

если не удалось выбрать ключ, то обработка ответа завершается, пакет отбрасывается и далее не обрабатывается;

[184]

вычисляют ККХФ от идентификатора сетевого потока, используя выбранный ключ;

[185]

если вычисленное значение ККХФ не совпадает со значением ККХФ из ClusterSecCookie, то обработка ответа завершается, пакет отбрасывается и далее не обрабатывается;

[186]

если вычисленное значение совпадает со значением поля значение ККХФ из ClusterSecCookie, то выполняют следующие действия:

[187]

пересылают ответ шлюзу, указанному в поле идентификатор шлюза ClusterSecCookie;

[188]

создают правило обработки, которое обеспечивает пересылку в шлюз указанный в ClusterSecCookie сетевых пакетов, идентификатор сетевого потока которых совпадает с идентификатор сетевого потока ответа;

[189]

пакет передается обратно в ОС для дальнейшей обработки (кроме отброшенных пакетов).

[190]

Модуль анализа и пересылки пакетов, для которого уникальный номер текущего ШБ наименьший в списке ШБ, выполняет периодическую смену ключа, если с момента времени последней смены ключа прошло более половины периода смены ключа, для чего выполняются следующие действия:

[191]

• формируют случайный ключ;

[192]

• вычисляют для сформированного ключа порядковые номера, признак четности порядкового номера и время создания ключа;

[193]

• рассылают ключ и связанные с ними атрибуты во все остальные шлюзы безопасности;

[194]

• если в таблице три ключа, то сформированный ключ и атрибуты сохраняют на месте ключа с наиболее ранним временем создания, иначе сформированный ключ и атрибуты добавляют в таблицу.

[195]

В модуле анализа и пересылки пакетов периодически сменяют ключ, выполняя следующие действия:

[196]

если с момента времени последней смены ключа прошло более половины периода смены ключа, то в шлюзе безопасности, имеющий наименьший номер, выполняя следующие действия:

[197]

формируют случайный ключ;

[198]

вычисляют для сформированного ключа порядковый номер, при-знак четности порядкового номера и время создания ключа;

[199]

рассылают ключ и связанные с ними атрибуты во все остальные шлюзы безопасности;

[200]

если получен новый ключ, то в каждом шлюзе выполняют следующие действия

[201]

если в таблице три ключа, то полученный ключ и его атрибуты сохраняют на месте ключа с наиболее ранним временем создания;

[202]

иначе полученный ключ и его атрибуты добавляют в таблицу.

[203]

Сообщение ClusterSecCookie помещается в поля Timestamp Value (TSval) и Timestamp Echo Reply (TSecr) TCP-заголовка, согласно RFC 7323 [https://tools.ietf.org/html/rfc7323], под данные поля отводится 4 байта (32 бита), распределить их можно на основе табл. 1.

[204]

[205]

В поля помещаются следующие данные

[206]

• поле идентификатор шлюза - содержит идентификатора шлюза,

[207]

• поле признак четности - содержит признака четности выбранного ключа,

[208]

• поле значение ККХФ, содержит вычисленное значение ККХФ.

Как компенсировать расходы
на инновационную разработку
Похожие патенты