Вопрос 17) Протоколы удаленного доступа и интерактивного взаимодействия

Концепция удаленного вызова процедур

Идея вызова удаленных процедур (Remote Procedure Call - RPC) состоит в расширении хорошо известного и понятного механизма передачи управления и данных внутри программы, выполняющейся на одной машине, на передачу управления и данных через сеть. Средства удаленного вызова процедур предназначены для облегчения организации распределенных вычислений. Наибольшая эффективность использования RPC достигается в тех приложениях, в которых существует интерактивная связь между удаленными компонентами с небольшим временем ответов и относительно малым количеством передаваемых данных. Такие приложения называются RPC-ориентированными.

Характерными чертами вызова локальных процедур являются:

- Асимметричность, то есть одна из взаимодействующих сторон является инициатором;

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

Существует несколько реализаций процедур удаленного вызова процедур в различных операционных системах. В операционной системе UNIX используется процедура под одноименным названием (Remote Procedure Call - RPC). Данная процедура внедрена в ядро системы. Ее выполнение обеспечивается протоколом RPC.

В операционных системах Windows удаленный вызов процедур начал развиваться на базе механизмов OLE, которые постепенно развились в технологию DCOM (Distributed Component Object Model). Данная технология позволяет создавать достаточно мощные распределенные сетевые вычислительные среды. В технологии используются фирменные протоколы Microsoft.

Для обеспечения межплатформенного взаимодействия разработана и широко внедряется спецификация CORBA.

CORBA (сокр. от англ. Common Object Request Broker Architecture — общая архитектура брокера объектных запросов; ) — это технологический стандарт написания распределённых приложений, продвигаемый консорциумом OMG.

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

Вопрос 18Протоколы защищенной передачи данных. Создание VPN. Цифровые сертификаты.

SSL (англ. Secure Sockets Layer — уровень защищённых сокетов) — криптографический протокол, обеспечивающий безопасную передачу данных по сети Интернет.

Использует шифрование с открытым ключом для подтверждения подлинности передатчика и получателя. Поддерживает надёжность передачи данных за счёт использования корректирующих кодов и безопасных хэш-функций(Хеширование (иногда хэширование, англ. hashing) — преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш-функциями или функциями свёртки, а их результаты называют хешем, хеш-кодом или дайджестом сообщени).

SSL состоит из двух уровней. На нижнем уровне многоуровневого транспортного протокола (например, TCP) он является протоколом записи и используется для инкапсуляции (то есть формирования пакета) различных протоколов (SSL работает совместно с таким протоколами как POP3, IMAP, SMTP и HTTP). Для каждого инкапсулированного протокола он обеспечивает условия, при которых сервер и клиент могут подтверждать друг другу свою подлинность, выполнять алгоритмы шифрования и производить обмен криптографическими ключами, прежде чем протокол прикладной программы начнёт передавать и получать данные.

Для доступа к веб-страницам, защищённым протоколом SSL, в URL вместо обычного префикса (schema) http, как правило, применяется префикс https, указывающий на то, что будет использоваться SSL-соединение. Стандартный TCP-порт для соединения по протоколу https — 443.

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

SSL, как правило, является компонентом операционных систем, криптографические возможности которых не могут быть изменены обычными пользователями.

Для работы SSL требуется, чтобы на сервере имелся SSL-сертификат.

Первоначальной целью протокола TLS (Transport Layer Security, RFC-2246) является обеспечение конфиденциальности и целостности данных при коммуникации двух приложений. Протокол имеет два уровня: протокол записей TLS и протокол диалога TLS. На нижнем уровне, работающем поверх надежного транспортного протокола (напр., TCP [TCP]), размещается протокол записей TLS. Этот протокол обеспечивает безопасность соединений, которые имеют два основных свойства.

Соединение является конфиденциальным. Для шифрования данных используется симметричная криптография (напр., DES [DES], RC4 [RC4], и т.д.). Ключи для шифрования генерируются независимо для каждого соединения и базируются на секретном коде, получаемом с помощью другого протокола (такого, как протокол диалога TLS). Протокол записей может использоваться и без шифрования.

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

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

Идентичность партнеров может быть выяснена с использованием асимметричной криптографии (например, RSA [RSA], DSS [DSS] и т.д.). Эта аутентификация может быть сделана опционной, но она необходима, по крайней мере, для одного из партнеров.

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

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

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

Цели

Целями протокола TLS в порядке приоритетности являются:

Криптографическая безопасность. TLS должен применяться для установления безопасного соединения между двумя партнерами.

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

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

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

=========VPN

VPN (англ. Virtual Private Network — виртуальная частная сеть) — логическая сеть, создаваемая поверх другой сети, например Интернет. Несмотря на то, что коммуникации осуществляются по публичным сетям с использованием небезопасных протоколов, за счёт шифрования создаются закрытые от посторонних каналы обмена информацией. VPN позволяет объединить, например, несколько офисов организации в единую сеть с использованием для связи между ними неподконтрольных каналов.

VPN состоит из двух частей: «внутренняя» (подконтрольная) сеть, которых может быть несколько, и «внешняя» сеть, по которой проходит инкапсулированное соединение (обычно используется Интернет). Возможно также подключение к виртуальной сети отдельного компьютера. Подключение удалённого пользователя к VPN производится посредством сервера доступа, который подключён как к внутренней, так и к внешней (общедоступной) сети. При подключении удалённого пользователя (либо при установке соединения с другой защищённой сетью) сервер доступа требует прохождения процесса идентификации, а затем процесса аутентификации. После успешного прохождения обоих процессов, удалённый пользователь (удаленная сеть) наделяется полномочиями для работы в сети, то есть происходит процесс авторизации.

Защищённые

Наиболее распространённый вариант виртуальных частных сетей. C его помощью возможно создать надежную и защищенную подсеть на основе ненадёжной сети, как правило, Интернета. Примером защищённых VPN являются: IPSec, OpenVPN и PPTP.

PPTP (англ. Point-to-point tunneling protocol) — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети. PPTP помещает (инкапсулирует) кадры PPP в IP-пакеты для передачи по глобальной IP-сети, например Интернет. PPTP может также использоваться для организации туннеля между двумя локальными сетями. РРТР использует дополнительное TCP-соединение для обслуживания туннеля.

OpenVPN — свободная реализация технологии Виртуальной Частной Сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами находящимися за NAT-firewall без необходимости изменения его настроек. OpenVPN была создана Джеймсом Йонан (James Yonan) и распространяется под лицензией GNU GPL.

Доверительные

Используются в случаях, когда передающую среду можно считать надёжной и необходимо решить лишь задачу создания виртуальной подсети в рамках большей сети. Вопросы обеспечения безопасности становятся неактуальными. Примерами подобных VPN решении являются: Multi-protocol label switching (MPLS) и L2TP (Layer 2 Tunnelling Protocol). (точнее сказать, что эти протоколы перекладывают задачу обеспечения безопасности на другие, например L2TP, как правило, используется в паре с IPSec).

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

Первое что приходит в голову - это VPN сервер. Но ради такого, хоть и полезного дела поднимать отдельный сервак, мало кто проявит инициативу. Поэтому пришлось копать инфу.

Значит часть 1 - Создание VPN-сервера под операцинной системой Windows XP

1. Start -> Settings -> Network Connections -> New Connection Wizard

2. Нажимаем Next

3. На экране выбора типа сетевого соединения, выделяем "Setup an advanced connection" и жмем Next.

4. Далее выбираем пункт "Connect directly to another computer".

5. Выбираем роль для нашего компа "Host"

6. Выбираем устройство для соединения компьютеров. Тут не важно что выбрать, хоть COM, хоть LPT-порт, потом все равно отключим.

7. В появившемся окне со списком пользователей выбираем галками ЛОКАЛЬНЫХ пользователей, которые смогут подключатся к нашему "серверу". Если пользователи еще не созданы, их можно создать кнопкой "Add" (добавить или удалить пользователей VPN можно и позже).

8. Теперь нажимаем Next, а потом Finish.

9. Открываем только что созданное соединение:

Start -> Settings -> Network Connections -> New Incoming Connections

10. В появившемся диалоге снимаем ВСЕ галки с устройств.

Галку в окошке "Virtual private network" обязательно оставить!

11. На закладке Users можно добавить новых пользователей VPN или удалить старых.

Обязательно оставить галку на «Require all users to secure their passwords and data»

12. Чтобы расшаренные ресурсы сервера были видны только пользователям VPN нужно:

• Открыть окно настройки сетевого подключения:

Start -> Settings -> Network Connections -> Local Area Connection

• В появившемся окне выбрать Properties

• На закладке General убрать галку с "File and Printer Sharing for Microsoft Networks"

В подобных настройках для Incoming Connections эту галку нужно наоборот оставить, чтобы пользователи VPN могли видеть расшаренные папки "сервера".

Start -> Settings -> Network Connections -> Incoming Connections->Properties, закладка Networking, установить (оставить) галку на "File and Printer Sharing for Microsoft Networks"

13. В свойствах Incoming Connections выбираем протокол TCP/IP и жмем Свойства.

В появившемся окне вводим диапазон IP-адресов, которые будут назначаться клиентам, например 192.168.1.1 - 192.168.1.11 (если 10 пользователей)

14. Жмем ок. Настройка сервера VPN закончена

часть 2 - Создание VPN-подключения

1. Start -> Settings -> Network Connections -> New Connection Wizard

2. Нажимаем Next

3. На экране выбора типа сетевого соединения, выделяем "Connect to the Network at my workplace" и жмем Next.

4. Выбираем "Virtual Private Network connection"

5. В поле Company Name вбиваем название соединения, например "VPN-сервер"

6. Далее вбиваем IP-адрес сервера-VPN или его имя в сети.

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

8. Нажимаем Finish.

часть 3 - использование VPN

Тут все понятно, стоит лишь отметить, что если обращение к ресурсам VPN-сервера или клиента идет через IP, то IP сервера берется первым из списка разрешенных (п.1.13), а клиенты разбирают все оставшиеся. В любом случае, при подключении к VPN в свойствах соединения можно узнать как IP-сервера, так и IP-клиента.

============Цифровые сертификаты.

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

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

для проверки подписи владельца (аутентификация)

для шифрования посылаемых ему данных (конфиденциальность)

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

Принцип работы

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

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

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

Вопрос 19: Классификация сетевых угроз и методы защиты информации.

Теория 1 - угрозы, позволяющие несанкционированно запустить исполняемый код угрозы основываются на переполнении буфера для входных данных(переполнение стёка) и последующей передачи управления на исполняемый код, занесённый при этом в стёк.
Для переполнения стёка используется тот факт, что при выполнении функций работы со строками, переменными среды исполнения и т.д. программисты не заботятся о проверки размерности входных данных. А это приводит к выходу за границы массивов ( массив - это тип данных, предназначенный для хранения и обработки с помощью индекса целого множества однотипных данных.
Существуют хэш массивы, массивы скаляров и т.д.),выделенные для работы с этими данными. один из методов предотвращения - присвоение атрибута, исключающего исполнение кода страницами памяти, выделенными подстёк.
Теория 2 угрозы, позволяющие осуществлять несанкционированные операции чтениязаписи. угрозы основываются на неправильной интерпретации прикладными и системными программами входных параметров. В результате они дают доступ к объектам, не перечисленными в списках санкционированного доступа. Неправильная интерпретация связанна с некорректной программной реализацией их обработки.
Это происходит потому, что программы, обрабатывающие данные запросы, являются либо системными утилитами, либо прикладными программами, запущенными в контексте безопасности системы. Можно догадаться, что они имеют непосредственный доступ к любым объектам, и могут представить доступ пользователям, не обладающим достаточными правами. профилактикой таких угроз может служить ДЕТАЛЬНЫЙ аудит всех событий, которые происходили на защищаемой машине.
Теория 3 угрозы, позволяющие обойти установленные разграничения прав доступа. Основываются на недоработках в ядре и системных утилитах ОС(ОС - операционная система), позволяющих программными методами обходить установленные разграничения доступа к объектам системы. Единственным решением данноё проблемы является либо установка обновлений от производителя ОС, либо проводить детальный анализ ОС самому.
Теория 4 угрозы, приводящие к отказу в обслуживании (Denial of Servece (DoS) это угрозы, приводящие к отказу в обслуживании. Большую часть этой группы составляют примеры, основанные на недостаточной надёжности реализации стёка сетевых протоколов ОС. Сбои в работе достигаются путём посыла групп пакетов с некорректными заголовками, параметрами и т.д.
Другой пример DoS - провокация отказа путём чрезмерной загрузкой канала. Основным параметром, которым должен владеть атакующий - каналом, шире чем у жертвы. В большинстве случаев рядовой пользователь не может позволить себе канал, по скорости больший чем у жертвы(если принять во внимание что жертва не рядовой пользователь, а сервер Интернета).
Для реализации атаки на данный сервер пишется определённый скрипт (например, флудер-множитель), загружаемый на ранее взломанные сервера, и уже с их пропускной способностью начинается DoS атака. На заметку: случаи, приводящие к DoS, не нарушают безопасность атакуемой системы, а просто выводят её из строя. Но если DoS только составляющее звено атаки, то предыдущее высказывание ставится под сомнение.
Чтобы защититься от такой атаки нужно банально повышать производительность системы в целом, увеличивать пропускную способность канала связи. можно использовать возможности активного сетевого оборудования, как ограничение пропускной способности, имеющейся, например, у маршрутизаторов Cisco.
Теория 5 угрозы, использующие встроенные недокументированные возможности. по существу это угроза не представляющая особой опасности. можно привести примеры предоставляющие недокументированные возможности : встроенные инженерные пароли для входа в систему (пароль фирмы Award "AWARD_SW" , позволяющий получить спектр правдля работы BIOS).
Специальные возможности для недокументированных действий. Закладки в разнообразных прикладных приложениях и т.д. Методы защиты от таких угроз рядовому пользователю не известны. Не имея исходный код, о них можно только догадываться.
Теория 6 угрозы, использующие недостатки системы хранения или выбора данных об аутентификации. Эти угроз позволяют путём реверсирования, подбора или полного перебора пароля получить данные о аутентификации основываются на недостатках алгоритмов кодирования(хеширования) паролей на защищаемых ресурсах.
К примеру, для базовой HTTP - аутентификации используется Base64 как алгоритм кодирования имени пользователя и пароля. Для раскодировки данного алгоритма можно написать простенький сценарий на языке Perl, который исполнит заданную ему цель : use MIME::Base64; print decode_base64($ARGV**0**); для защиты от угроз данного вида нужно переходить на более устойчивые алгоритмы шифрования. Для максимального усложнения подбора пароля методом перебора используйте как можно более длинный пароль.
Теория 7 *троянские программы* это программы, которые прописываются в автозагрузку ОС, и выполняют несанкционированные действия. Для того чтобы данная программа появилась у пользователя в системе, он сам должен первоначально выполнить её.
Но если троянская программа использует уязвимость ОС для проникновения внутрь (например, уязвимость RPC Dcom), то она попадёт в систему без ведома на то пользователя. Для защиты от действий подобного рода нужно придерживаться определённых правил:

1. Устанавливать все обновления выпущенные производителем ОС.

2. Иметь в системе антивирус с постоянно обновляющейся базой. Это спасёт от простейших
вирусов и от неквалифицированных атакующих. Люди, занимающиеся этим делом профессионально, могут "надуть" любой антивирус без особых усилий.

3. Иметь в системе FIrewall. У самого Firewall'а достаточно много функций(фильтрование пакетов, прослушивание соединений и т.д.), но всё рассмотреть в рамках данной статьи невозможно. Firewall спасёт от многих атак, но , ещё раз повторяюсь, если человек, совершающий атаку, квалифицированный, то Firewall будет держать систему в безопасности относительно недолго.

4. Человеческий фактор. Никогда не запускайте файлы ,пришедшие вам по почте, ICQ, и т.д. от неизвестных лиц. Угрозы напрямую используют недостатки ОС и системных приложений и позволяют при полностью сконфигурированных и работающих встроенных в ОС механизмах защиты осуществлять несанкционированный доступ к информации, что подтверждает необходимость усиления встроенных механизмов защиты.

Наши рекомендации