По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Шестая часть тут.
Рассмотрим процесс, который вы используете для чтения этой лекции. Вы изучаете набор меток, созданных для контраста с физическим носителем-чернилами на бумаге. Эти знаки представляют собой определенные символы, которые вы затем интерпретируете как буквы. Эти буквы, в свою очередь, вы можете сложить вместе, используя правила интервалов и компоновки, чтобы сформировать слова. Слова, через знаки препинания и интервалы, вы можете сформировать в предложения.
На каждом этапе процесса существует несколько видов взаимодействующих вещей:
Физический носитель, на который может быть наложен сигнал.
Символическое представление единиц информации, используемых для перевода физических символов в первый уровень логического содержания. При интерпретации символов необходимы две вещи: словарь, который описывает диапазон возможных логических символов, которые могут соответствовать определенному физическому состоянию, и грамматика, которая описывает, как определить, какой логический символ относится к этому экземпляру физического состояния. Эти две вещи, вместе взятые, можно описать как протокол.
Способ преобразования символов в слова, а затем слова в предложения. Опять же, это будет состоять из двух компонентов, словаря и грамматики. Опять же, они могут быть описаны как протоколы.
По мере перемещения «вверх по стеку» от физического к буквам, к словам, к предложениям и т. д. словарь становится менее важным, а грамматика, которая позволяет преобразовывать контекст в значение, более важной - но эти две вещи существуют на каждом уровне процесса чтения. Словарь и грамматика считаются двумя различными формами метаданных, которые вы можете использовать для превращения физических представлений в предложения, мысли, аргументы и т. д.
Цифровая грамматика и словари.
На самом деле нет большой разницы между человеческим языком, таким как тот, который вы сейчас читаете, и цифровым языком. Однако цифровой язык не называется языком; это называется протоколом. Более формально:
Протокол — это словарь и грамматика (метаданные), используемые для перевода одного вида информации в другой.
Протоколы, конечно, не работают только в одном направлении; их можно использовать как для кодирования, так и для декодирования информации. Языки, вероятно, самая распространенная форма протокола, с которой вы сталкиваетесь ежедневно, но есть много других, таких как дорожные знаки; пользовательские интерфейсы на вашем тостере, компьютере и мобильных устройствах; и каждый человеческий язык.
Поскольку вы разрабатываете протокол, который в первую очередь означает разработку словаря и грамматики, вы можете работать над двумя видами оптимизации:
Эффективность использования ресурсов. Сколько ресурсов используется для кодирования любого конкретного бита информации? Чем больше метаданных включено в систему вместе с самими данными, тем эффективнее будет кодирование—но тем больше реализаций будут полагаться на словари для декодирования информации. Протоколы, использующие очень малые сигналы для кодирования большого количества информации, обычно считаются компактными.
Гибкость. В реальном мире все меняется. Протоколы должны быть каким-то образом разработаны, чтобы иметь дело с изменениями.
Компромисс метаданных - один из многих, которые вы найдете в сетевой инженерии; либо включите больше метаданных, позволяя протоколу лучше справляться с будущими требованиями, либо включите меньше метаданных, делая протокол более эффективным и компактным.
Словарь в протоколе — это таблица цифровых шаблонов для символов и операций. Пожалуй, наиболее часто используемые цифровые словари — это коды символов. Таблица 1 воспроизводит часть словаря символов Unicode.
Используя таблицу 1, если компьютер «читает» массив, представляющий собой серию букв, он распечатает (или обработает в процессе обработки) число 6, если число в массиве равно 0023, число 7, если число в массиве равно 0024 и т. д. Эта таблица, или словарь, связывает определенные числа с определенными символами в алфавите, точно так же, как словарь связывает слово с диапазоном значений.
Как компьютер может определить разницу между ценой банана и буквами в слове банан? Через контекст информации. Например, возможно, что рассматриваемый массив хранится в виде строки или серии букв; массив, хранящийся в виде строковой переменной, предоставляет метаданные или контекст, который указывает, что значения в этих конкретных ячейках памяти должны рассматриваться как буквы, а не числовые значения, содержащиеся в массиве. Эти метаданные, обрабатываемые компьютером, обеспечивают грамматику протокола.
В протоколах словари часто выражаются в терминах того, что содержит то или иное конкретное поле в пакете, а грамматики часто выражаются в терминах того, как пакет построен или какие поля содержатся в каких местах пакета.
Есть несколько способов создания словарей и базовых (первого уровня) грамматик.
Мы уже рассказывали об опасности атак на системы IP-телефонии, о том, как можно использовать скомпрометированную систему и кому это может быть выгодно.
В данной статье, подробно разберём один из способов атак на системы, работающие по протоколу SIP, через генерацию вредоносного пакета и последующую компрометацию учётной записи.
Вы убедитесь, что провести подобную атаку - совсем не сложно. Инструменты для её осуществления не являются какой-то сверхсекретной разработкой и находятся в свободном доступе.
Цель данной статьи - показать, к чему может привести недостаточное внимание, уделённое вопросам безопасности при настройке систем IP-телефонии и как просто это могут использовать злоумышленники.
Внимание! Информация, представленная в данной статье, носит исключительно ознакомительный характер. Компания Мерион Нетворкс не несёт ответственности за последствия применения техник и способов, описанных в данном материале. Напоминаем, что неправомерный доступ к компьютерной информации преследуется по закону и влечет за собой уголовную ответственность.
Атака, о которой мы поговорим, связана с процессом аутентификации по протоколу SIP, а именно - с получением информации из заголовков SIP пакета и её последующая обработка для извлечения учётных данных. Чтобы понять её суть и определить, какие системы уязвимы к данной атаке, нужно вспомнить как происходит SIP аутентификация.
Как показано на рисунке:
Клиент отправляет запрос регистрации на сервер;
Сервер сообщает о необходимости зарегистрироваться и запрашивает данные для аутентификации;
Клиент повторно отправляет запрос регистрации, но на этот раз со строкой Authorization, в которой указаны учётные данные;
Сервер проверяет учётные данные в локальной базе и если есть совпадения – разрешает регистрацию.
В стандартном процессе SIP аутентификации все запросы клиентов и ответы от сервера идут в строгой последовательности. Пользователь просто вводит учётные данные и клиент сам формирует пакеты для отправки на сервер, которые он может обработать. Если учётные данные не верны, то сервер не разрешит регистрацию и дальнейшее взаимодействие для осуществления звонков.
Однако, злоумышленник, используя специальные инструменты, может сам решать какие отправлять пакеты и более того - осуществлять их формирование.
Наверное, Вы догадались, что ключевым моментом процесса SIP аутентификации является отправка клиентом повторного запроса REGISTER, который также содержит учётные данные для регистрации на сервере. Как раз в этот момент, наш потенциальный злоумышленник и нанесёт свой удар.
Давайте рассмотрим, что из себя представляет строка Authorization в повторном запросе REGISTER.
Как видно на рисунке, заголовок Authorization включает в себя следующие поля:
Authentication Scheme - метод аутентификации;
Поскольку SIP многое унаследовал от протокола HTTP, то и схема аутентификации в нём основана на HTTP аутентификации, которая также называется Дайджест (Digest) аутентификация. Эта схема применяется серверами для обработки учётных данных от клиентов. При этом, часть учётных данных передаётся в виде хэш-сумм, которые сервер комбинирует с открытыми данными и вычисляет пароль для данного клиента. Это значительно повышает уровень безопасности, но как мы убедимся в дальнейшем – не помогает при некорректной настройке учётной записи.
Username - имя пользователя, заданное на сервере. В нашем случае – это внутренний номер 3354;
Realm - параметр, определяющий подключение к серверу телефонии;
Как правило, администратор VoIP сервера сам настраивает realm и транслирует его пользователю, который хочет осуществить подключение. Например, у провайдеров облачных услуг это может быть строка вида domain.com, в сервере Asterisk, по-умолчанию значение этой строки - asterisk.
Nonce Value - рандомно сгенерированная сервером, уникальная строка, при формировании ответа 401 в сторону клиента. В дальнейшем используется сервером в вычислениях после получения учетных данных от клиента, должна совпадать с тем, что пришло от сервера;
Authentication URI - унифицированный идентификатор ресурса. В нашем случае, ресурсом является сервер, расположенный по адресу 123.45.67.89, обращение к нему происходит по протоколу SIP, по порту 5060.
Digest Authentication Response - ответ от клиента, посчитанный на основании данных, полученных от сервера. На основании этого значения сервер в том числе сверяет пароль, который задан клиенту.
Согласно RFC 2069, который описывает HTTP дайджест аутентификацию, response вычисляется следующим образом:
HA1 = MD5(username:realm:password)
HA2 = MD5(method:digestURI)
response = MD5(HA1:nonce:HA2)
Как видите, на основании MD5 хэш-сумм полей: username, realm, password (да, это пароль клиента), method, digestURI и nonce высчитывается тот самый заветный response, от которого зависит регистрация клиента на сервере, а следовательно, и возможность осуществлять им вызовы.
Algorithm - алгоритм, по которому высчитывался response
Догадываетесь о чём идёт речь? О том, что если злоумышленник заполучит полную строку Authorization, то он может вычислить пароль клиента, зарегистрироваться на сервере и спокойно звонить куда ему вздумается.
Пространство для данной атаки достаточно обширное. Дело в том, что клиент может передавать строку авторизации в нескольких запросах – в уже известном нам REGISTER, INVITE или BYE.
Атакующему не составит труда притвориться “сервером” и затребовать от клиента аутентификации. Для этого, атакующий направит в сторону клиента, созданный с помощью специальной программы вредоносный SIP пакет с ответом 401 Unauthorized, который будет содержать строку, заставляющую клиента отправить учётные данные. Данная строка должна содержать realm и nonce . Выглядит эта строка следующим образом:
Таким образом, атака может выглядеть следующим образом:
С точки зрения атакуемого, это будет выглядеть как простой звонок, на другой стороне трубки которого будет тишина. Он даже не будет подозревать о том, что его учётные данные вот-вот утекут к злоумышленнику. Атакующий в нужный момент разорвёт соединение, отправив BYE и затем сформированный вредоносный пакет.
Нагляднее всего приводить в пример прямое взаимодействие между клиентами. Такой сценарий становится, когда есть возможность отправлять SIP запросы напрямую до оконечного клиента. Например, когда телефон выставлен в открытую сеть по SIP порту. Помимо этого, уязвимости подвержены сервера, разрешающие прямое взаимодействия между оконечными клиентами. Лучше всего, пропускать все запросы через Proxy-сервер.
Итак, данной атаке могут быть подвержены:
IP-телефоны с открытыми в интернет SIP-портами;
IP-телефоны, отвечающие на запросы INVITE от неизвестных серверов;
IP-АТС, разрешающие запросы INVITE напрямую до клиентов.;
Заполучив полную строку Authorization атакующий может в оффлайн режиме подобрать пароль к учётной записи. Для этого ему нужно подать на вход специального скрипта, который перебирает хэш-суммы по словарям, перехваченные данные: username, realm, method, digestURI, nonce и наконец - response. На выходе он получит пароль от учётной записи. Если пароль слабый или, ещё хуже, совпадает с username, то время перебора не превысит 1 секунды.
Чтобы этого не случилось, даже если злоумышленник перехватит необходимую информацию, используйте стойкие пароли к учётным записям, да и вообще везде, где только можно. В этом Вам может помочь наш генератор паролей.
При внедрении культуры DevOps, вне зависимости от инфраструктуры организации, программного инструменты имеют решающее значение. В этой статье расскажем о лучших инструментах управления конфигурацией в DevOps. Но давайте сначала выясним, что такое DevOps.
Что такое DevOps, что нужно знать и сколько получают DevOps - специалисты?
Что такое DevOps?
DevOps происходит из интеграции команд разработчиков (Dev) и специалистов по информационно-техническому обслуживанию(Ops), чтобы обеспечить ценность для клиентов и создать гибкость в разработке программного обеспечения.
DevOps сосредоточен на том, как люди работают и сотрудничают, делясь своими мыслительными процессами и приоритетами, чтобы ускорить разработку программного обеспечения. Как культура, основная идея DevOps заключается в оптимизации функций и эффективности задействованных команд независимо от используемых инструментов. Но как началась эта единая разработка?
Ранее в жизненном цикле разработки программного обеспечения были разработчики, чья работа заключалась в написании кода, как указано клиентами, без настройки и обслуживания среды для требуемого программного продукта. Команда информационно-технического обслуживания выполняла производственные операции и задачи технического обслуживания, переживая все кошмары, связанные с производственным этапом.
Представьте себе управление программным продуктом, в разработке которого вы не участвовали! Тяжело, да?
Команда Ops несла бремя реализации ошибок, управления зависимостями инфраструктуры и, скорее, проблем, связанных с производственной средой программного обеспечения.
Чтобы устранить этот пробел, был придуман DevOps – тандем людей, задач и всех сквозных процессов, необходимых для предоставления клиентам тщательно разработанного продукта.
Почему DevOps так важен?
Когда команды в любой среде разработки правильно интегрируют методы DevOps, такие как непрерывная интеграция и управление конфигурацией, компании получают следующие преимущества:
Более короткие циклы выпуска приложений
DevOps служит для поддержки готовой к развертыванию базы кода, где в любой момент команда DevOps может запускать доступные версии программного обеспечения без сбоев продукта.
CI/CD-конвееры, со всей автоматизацией и тестами, обеспечивают последовательную запуск стабильного программного продукта в производство, что позволяет разработчикам добиться более коротких циклов выпуска.
Наглядность процессов разработки
Выявление дефектов программирования, обнаружение угроз безопасности, инициирование откатов и даже реагирование на инциденты могут быть затруднены, когда среда разработки подобна черному ящику.
Более короткие циклы выпуска и непрерывный мониторинг в DevOps приводят к большей видимости всех операций.
Что такое управление конфигурацией в DevOps?
Управление конфигурацией - это автоматизация значительных и повторяющихся действий в ИТ-среде. Управление конфигурацией решает задачи, которые должны быть выполнены на тысячах машин.
Такие задачи могут включать установку, модернизации и обновление программного обеспечения, управление исправлениями, обеспечение безопасности, управление пользователями и т.д.
С появлением контейнерных технологий и других усовершенствований инфраструктуры, системные администраторы считают, что настройка ИТ-сред без средств автоматизации является сложной задачей. К счастью, существуют средства управления конфигурацией для создания и оптимизации сред времени выполнения.
Инструменты управления конфигурацией в DevOps предоставляют необходимую инфраструктуру через сценарии/Инфраструктуру как код.
Рассмотрим следующие широко используемые средства управления конфигурацией.
1. Ansible
Решение Ansible автоматизирует настройку инфраструктуры, развертывание приложений и выделение ресурсов облачных сред, используя модель услуг «Инфраструктура как код».
Ansible - это полезный инструмент, который инженеры DevOps могут использовать для автоматизации управления инфраструктурой, приложениями, сетями и контейнерной средой. Инженеры широко используют этот инструмент для автоматизации и настройки серверов.
Это средство масштабирует повторяющиеся задачи в администрировании инфраструктуры с помощью определенных плэйбуков. В данном случае плэйбук представляет собой простой файл сценария на YAML, детализирующий действия, выполняемые механизмом автоматизации Ansible. С помощью автоматизации Ansible сисамдины могут создавать группы машин для выполнения определенных задач и управлять работой машин в производственных средах.
Anible используют такие известные компании, как Udemy, Alibaba Travels, Tokopedia.
Особенности
Ansible Tower, платформа в рамках Ansible, является панелью управления визуализацией для всей ИТ-среды.
С помощью управления доступом на основе ролей (RBAC) область Ansible может создавать пользователей и управлять разрешениями для сред.
Технология Ansible поддерживает как локальные конфигурации, так и мультиоблачные инфраструктуры.
Подробнее про Ansible
2. Puppet
Puppet - это еще одна платформа с открытым исходным кодом, подходящая для обеспечения отказоустойчивой инфраструктуры. Инженеры DevOps могут использовать Puppet для настройки, развертывания, запуска серверов и автоматизации развертывания приложений на настроенных серверах.
С помощью Puppet можно устранять операционные риски и риски безопасности в ИТ-среде путем обеспечения постоянного соответствия нормативным требованиям. Она включает автоматизацию инфраструктуры Windows, управление исправлениями и управляемые операции приложений.
Тысячи компаний, включая Google, Cisco и Splunk, используют Puppet для управления конфигурацией.
Особенности
Высокая расширяемость, поддержка нескольких инструментов для разработчиков и API.
Puppet включает Bolt, мощный оркестратор задач для автоматизации ручных задач.
Puppet хорошо интегрируется с Kubernetes и Docker.
Подробнее про Puppet
3. Chef
Chef, как средство в DevOps позволяет выполнять задачи управления конфигурацией на серверах и других вычислительных ресурсах. Chef для управления инфраструктурой использует агентов, таких как Chef Infra, для автоматизации конфигурации инфраструктуры. Использование Chef в процессах автоматизации просто. С помощью нескольких щелчков мыши можно включить и запустить несколько узлов.
Для управления конфигурацией команды DevOps создают «рецепты». Рецепты содержат описание ресурсов и пакетов программных обеспечений, необходимых для настройки серверов. Chef использует Cookbooks, Chef servers и Nodes в качестве основных компонентов для настройки и автоматизации.
Ведущие компании как Facebook, Slack и Spotify, использовали Chef в своих экосистемах.
Особенности
Chef - платформа автоматизации на базе Агента.
Chef обрабатывает инфраструктуру как код.
Поддерживает все операционные системы и интегрируется с любой облачной технологией.
Chef обладает аналитикой Chef для мониторинга изменений, происходящих на сервере Chef.
Подробнее про Chef
4. Saltstack
Saltstack или просто соль - это масштабируемый инструмент управления конфигурацией и оркестровки. Команды DevOps используют Saltstack для управления ИТ-средами как центры обработки данных, посредством управляемой событиями оркестровки и удаленного выполнения конфигураций.
Структура управления конфигурацией Salt использует состояния и файлы конфигурации, чтобы показать, как выполняется выделение и развертывание ИТ-инфраструктуры. Файлы конфигурации описывают устанавливаемые пакеты инфраструктуры, запускаемые или останавливаемые службы, пользователей и процессы создания пользователей, а также многие другие необходимые задачи по выделению ИТ-среды.
Особенности
Платформа Salt Cloud для настройки ресурсов в облаке.
Поддерживает управление узлами как на основе агентов, так и без агентов.
Поддерживает операционные системы * NIX и Windows.
5. CFEngine
CFEngine - это высокомасштабируемая платформа для автоматизированного управления ИТ-инфраструктурой. С помощью CFEngine команды могут выполнять физическое и виртуальное назначение ресурсов инфраструктуры, управление исправлениями, управление доступом, управление пользователями и безопасностью системы.
Автономные агенты CFEngine постоянно работают для непрерывного мониторинга, устранения неполадок, обновления и восстановления ИТ-инфраструктуры. Непрерывная проверка системы и автоматизированное восстановление в CFEngine гарантирует надежность и согласованность инфраструктуры.
Особенности
Высокая гибкость из-за схемы конфигурации «написать один раз использовать повторно».
Имеет CFEngine Enterprise Mission Portal, центральную панель для мониторинга ИТ-систем в режиме реального времени.
Использование облегченных агентов автоматизации в платформе WebScale для настройки нескольких узлов и управления ими.
Заключение
Лучший способ найти инструменты для ваших потребностей - попробовать их. То, что работает для других, может не сработать для вас, поэтому попробуйте их чтобы увидеть, как работает, как помогает вашей организации обеспечить согласованность и безопасность конфигурации.