пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ. пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Много раз в день вы посещаете веб-сайты, на которых вас просят войти под своим именем пользователя, адресом электронной почты и паролем. Банковские сайты, сайты социальных сетей, почтовые службы, сайты электронной коммерции и новостные сайты - это всего лишь несколько типов сайтов, использующих этот механизм.
Каждый раз, когда вы входите на один из этих сайтов, вы, по сути, говорите: «Да, я доверяю этому сайту, поэтому я хочу поделиться с ним своей личной информацией». Эти данные могут включать ваше имя, пол, физический адрес, адрес электронной почты, а иногда даже информацию о кредитной карте.
Но откуда вы знаете, что можете доверять определенному веб-сайту? Иными словами, что делает веб-сайт для защиты вашей транзакции, чтобы вы могли доверять ей?
Эта статья направлена на демистификацию механизмов, которые делают сайт безопасным. Мы начнем с обсуждения веб-протоколов HTTP и HTTPS и концепции безопасности транспортного уровня (TLS - Transport Layer Security), которая является одним из криптографических протоколов. Затем мы объясним центры сертификации (CA - Certificate Authorities) и самозаверяющие сертификаты и как они могут помочь защитить веб-сайт. Наконец, я представлю некоторые инструменты с открытым исходным кодом, которые вы можете использовать для создания и управления сертификатами.
Защита маршрутов через HTTPS
Самый простой способ понять защищенный веб-сайт - это увидеть его в действии. К счастью, сегодня найти защищенный веб-сайт гораздо проще, чем незащищенный веб-сайт в Интернете. Но, поскольку вы уже находитесь на сайте wiki.merionet.ru, будем использовать его в качестве примера. Независимо от того, какой браузер вы используете, вы должны увидеть значок, который выглядит как замок рядом с адресной строкой. Нажмите на значок замка, и вы должны увидеть что-то похожее на это.
По умолчанию веб-сайт не является безопасным, если он использует протокол HTTP. Добавление сертификата, настроенного через хост сайта, может преобразовать сайт из незащищенного сайта HTTP в защищенный сайт HTTPS. Значок замка обычно указывает, что сайт защищен через HTTPS.
Нажмите на сертификат, чтобы увидеть CA сайта. В зависимости от вашего браузера вам может понадобиться скачать сертификат, чтобы увидеть его.
Здесь вы можете узнать кое-что о сертификате, кем, кому и когда был выдан. Эта информация о сертификате позволяет конечному пользователю проверить, что сайт безопасен для посещения.
ВНИМАНИЕ: Если вы не видите знак сертификата на веб-сайте или если вы видите знак, указывающий на то, что веб-сайт не защищен, пожалуйста, не входите в систему и не выполняйте действия, требующие ваших личных данных. Это довольно опасно!
Если вы видите предупреждающий знак, который редко встречается на большинстве общедоступных веб-сайтов, это обычно означает, что срок действия сертификата истек или используется самозаверяющий сертификат вместо сертификата, выпущенного через доверенный CA.
Интернет-протоколы с TLS и SSL
TLS - это текущее поколение старого протокола Secure Socket Layer (SSL). Лучший способ понять его место - посмотреть на модель OSI.
Есть шесть уровней, которые составляют Интернет, каким мы его знаем сегодня: физический, данные, сеть, транспорт, безопасность и приложения. Физический уровень является базовой основой, и он наиболее близок к реальному оборудованию. Прикладной уровень является наиболее абстрактным и ближайшим к конечному пользователю. Уровень безопасности можно рассматривать как часть уровня приложений, а TLS и SSL, которые являются криптографическими протоколами, разработанными для обеспечения безопасности связи по компьютерной сети, находятся на уровне безопасности.
Основным вариантом использования TLS является шифрование связи между веб-приложениями и серверами, такими как веб-браузеры, загружающие веб-сайт. Протокол TLS также можно использовать для шифрования других сообщений, таких как электронная почта, обмен сообщениями и передача голоса по IP (VOIP).
Центры сертификации и самозаверяющие сертификаты
Центр Сертификации (CA) - это доверенная организация, которая может выдавать цифровой сертификат.
TLS и SSL могут сделать соединение безопасным, но для механизма шифрования необходим способ его проверки - это сертификат SSL/TLS. TLS использует механизм, называемый асимметричным шифрованием, который представляет собой пару ключей безопасности, называемых закрытым ключом (private key) и открытым ключом (public key). Важно знать, что центры сертификации, такие как GlobalSign, DigiCert и GoDaddy являются внешними доверенными поставщиками, которые выпускают сертификаты, которые используются для проверки сертификата TLS/SSL, используемого веб-сайтом. Этот сертификат импортируется на хост-сервер для защиты сайта.
Прежде чем какой-либо крупный веб-браузер, такой как Chrome, Firefox, Safari или Internet Explorer, подключится к вашему серверу по протоколу HTTPS, он уже имеет в своем распоряжении набор сертификатов, которые можно использовать для проверки цифровой подписи, найденной в сертификате вашего сервера. Эти цифровые сертификаты веб-браузера называются сертификатами CA. Если с сертификатом на сервере все ок, то мы попадаем на сайт, а если нет, то браузер покажет нам предупреждение. Закрытые ключи, используемые для подписи сертификатов сервера, уже имеют соответствующие пары открытых ключей в веб-браузерах пользователей.
Однако CA может быть слишком дорогим или сложным, когда вы просто пытаетесь протестировать веб-сайт или услугу в разработке. У вас должен быть доверенный ЦС для производственных целей, но разработчикам и администраторам веб-сайтов необходим более простой способ тестирования веб-сайтов, прежде чем они будут развернуты в рабочей среде - именно здесь приходят самозаверяющие сертификаты.
Самозаверяющий сертификат - это сертификат TLS/SSL, подписанный лицом, которое его создает, а не доверенным центром сертификации. Создать самозаверяющий сертификат на компьютере очень просто, и он может позволить вам протестировать защищенный веб-сайт, не покупая дорогой сертификат, подписанный СА, сразу. Хотя самозаверяющий сертификат определенно рискованно использовать в производственной среде, он является простым и гибким вариантом для разработки и тестирования на подготовительных этапах.
Инструменты с открытым исходным кодом для генерации сертификатов
Для управления сертификатами TLS/SSL доступно несколько инструментов с открытым исходным кодом. Наиболее известным из них является OpenSSL, который включен во многие дистрибутивы Linux и в macOS. Тем не менее, другие инструменты с открытым исходным кодом также доступны.
OpenSSL - Самый известный инструмент с открытым исходным кодом для реализации библиотек TLS и шифрования Apache
EasyRSA - Утилита командной строки для создания и управления PKI CA
CFSSL - PKI/TLS "Швейцарский нож" от Cloudflare
Lemur - Инструмент создания TLS от Netflix
В этой статье мы рассмотрим переменные, которые отвечают за локализацию и кодировку операционной системы. Данная тема достаточно важна, т.к. некоторые прикладные сервисы требуют нестандартной кодировки или региональной локализации.
В Linux системах есть основная переменная $LANG – которая задает основной язык системы. Есть и другие переменные, но они берут изначально настройки с этой основной переменной $LANG. Можно настроить отдельные какие-то переменные, но можно все же давать значение основной переменной $LANG и она будет давать значение всем остальным.
Есть так же переменная LC_ALL – которая позволяет нам разом перезаписать все языковые настройки. Есть также утилита locale которая показывает кучу переменных, которые относятся к языковым настройкам.
$LANG= – данную переменную обычно используют для написания скриптов, чтобы те или иные настройки установить по умолчанию для выполнения скрипта. В большинстве случаев данная настройка включает английский язык по умолчанию.
Есть такая команда env, которая выводит заданные переменные в системе.
И тут в частности, есть переменная которая отвечает за языковые настройки. В нашем случае LANG=en_US.UTF-8, т.к скриншот делался на операционной системе с английской локализацией по умолчанию. Мы видим en_US в кодировке UTF-8. En_US – говорит о том, что у нас используется американский английский язык.
Посмотреть все переменные относящиеся к данной локализации мы можем с помощью утилиты locale.
Как вы видите все остальные переменные на данной установленной операционной системе тоже американские. Почему это важно? Во-первых, это важно для логгирования. С такими настройками система будет писать файлы системных и других логов в американском формате yyyy-mm-dd (год-месяц-день: 2006-12-31), в русском формате же правильно будет dd-mm-yyyy. И при передаче логов из одной системы в другую возникнут ошибки. Другой пример - бывают нестандартные решения, допустим хранение базы данных 1С в postgre. Для того чтобы сервер приложений корректно работал с базой опять же необходима русская локализация. И таких примеров взаимодействия можно привести достаточно много.
Теперь, если у нас появилась необходимость поменять какую-нибудь, переменную, например, LC_TIME то делаем следующее:
LC_TIME=ru_RU.UTF-8 – задаем переменную.
export LC_TIME – загружаем переменную.
Мы можем сразу все настройки изменить - LC_ALL=ru_RU.UTF-8
Далее export LC_ALL.
Если мы ошибемся с вводом локали (языковой пакет настроек) или в системе не загружена такая локаль, то система нам выдаст ошибку:
Надо выполнить инсталляцию языкового пакета
sudo apt-get install language-pack-ru
Генерация файла с обновленной информацией о добавленных пакетах в систему: sudo locale-gen
И после этого опять попробовать сменить.
Для возврата в исходное состояние настроек мы можем выполнить команду unset LC_ALL. После выполнения данной команды все настройки языковые системы вернутся в исходное состояние.
Немного о кодировке. Кодировка - это представление символов в определенном виде. Самые распространенные кодировки, используемые в Linux:
ASCII – 128 основных символов;
ISO-8859 – большинство латинских символов;
UTF-8 -символы Unicode.
Для конвертации используется утилита iconv, но есть более практический инструмент. Если нам необходимо конвертировать какой-то файл в другой, то проще всего использовать Notepad++. Открываем файл, в меню выбираем пункт кодировка. Программа покажет текущую и меняем на интересующую нас. Затем сохраняем.
В случае если у нас только консольное подключение, делаем это с помощью iconv. Общий вид команды:
iconv [опция] [-f кодировка 1] [-t кодировка 2] [исходный файл] [целевой файл]
Установка и настройка часовых зон.
Утилита tzselect позволяет осуществить поиск нужной временной зоны. Появляется мастер пошаговый, который позволяет сделать свой выбор и в конце дает инструкцию, как сделать, чтобы выбор сохранился.
Вторая утилита это date, которая выводит текущую дату и время, если запустить ее без параметров, а также позволяет установить их. Опции и форматы можно посмотреть при помощи команды man date
Для установки даты и времени необходимы права суперпользователя.
sudo date -s “yyyymmdd hh:mm” – обратите на формат вводимых данных.
Задержка в сети, или сетевая задержка, - это временная задержка при передаче запросов или данных от источника к адресату в сетевой экосистеме. Давайте посмотрим, как вы можете выявить и устранить задержку в сети.
Любое действие, которое требует использование сети, например, открытие веб-страницы, переход по ссылке, открытие приложения или игра в онлайн-игру, называется активностью. Активность пользователя – это запрос, а время отклика веб-приложения – это время, которое требуется для ответа на этот запрос.
Временная задержка также включает в себя время, которое сервер тратит на выполнение запроса. Таким образом, временная задержка определяется как круговой путь – время для записи, обработки и получения пользователем запроса, где он уже декодируется.
Понятие «низкое значение задержки» относится к относительно недлительным временным задержкам при передаче данных. А вот длительные задержки, или чрезмерные задержки, не слишком приветствуются, так как они ухудшают процесс взаимодействия с пользователем.
Как исправить задержку в сети?
На просторах Интернета есть большое количество инструментов и программных средств, которые могут помочь в анализе и устранении неполадок в сети. Некоторые из них платные, некоторые бесплатные. Впрочем, есть инструмент под названием Wireshark – бесплатное приложение с общедоступной лицензией, которое используется для перехвата пакетов данных в режиме реального времени. Wireshark – это самый популярный и самый часто используемый в мире анализатор сетевых протоколов.
Это приложение поможет вам перехватывать сетевые пакеты и отображать их детальную информацию. Вы можете использовать эти пакеты для проведения анализа в режиме реального времени или в автономном режиме после того, как сетевые пакеты уже будут перехвачены. Это приложение поможет вам исследовать сетевой трафик под микроскопом, фильтруя и углубляясь в него в попытках найти корень проблемы. Оно помогает с сетевым анализом, и, как следствие, с сетевой безопасностью.
Что может вызывать задержку в сети?
Есть несколько основных причин медленного сетевого подключения. Вот некоторые из них:
Большая задержка
Зависимости приложений
Потеря пакетов
Перехватывающие устройства
Нерациональные размеры окон
В данной статье мы рассмотрим каждую из вышеприведенных причин задержки в сети, а также посмотрим, как можно решить эти проблемы с помощью Wireshark.
Проверка с помощью Wireshark
Большая задержка
Понятие «большая задержка» подразумевает время, которое требуется для передачи данных от одной конечной точки к другой. Влияние большой задержки на передачу данных по сети очень велико. На приведенной ниже диаграмме в качестве примера показано время кругового пути при загрузке файла по пути с высокой задержкой. Время задержки кругового пути часто превышает одну секунду, что является недопустимым.
Перейдите к разделу Wireshark Statistics.
Выберите опцию TCP stream graph.
Выберите Round Trip time graph, чтобы посмотреть, сколько времени необходимо для загрузки файла.
Wireshark используют для расчета времени кругового пути для того, чтобы определить, это ли является причиной плохой работы коммуникационной сети протокола управления передачей (TCP - Transmission Control Protocol). TCP используется для разных целей, например, для просмотра веб-страниц, передачи данных, протокола передачи файлов и многого другого. В большинстве случаев операционную систему можно настроить так, чтобы на каналах с большой задержкой она работала более эффективно, особенно когда хосты используют Windows XP.
Зависимости приложений
Некоторые приложения имеют зависимости, то есть они зависят от каких-то других приложений, процессов или от обмена данными с хостом. Допустим, что ваше приложение – это база данных, и оно зависит от подключения к другим серверам, которое необходимо для получения элементов базы данных. В таком случае слабая производительность на этих «других серверах» может негативно повлиять на время загрузки локального приложения.
Рассмотрим, например, просмотр веб-страниц при условии, что целевой сервер ссылается на несколько других веб-сайтов. Например, чтобы загрузить главную страницу сайта
www.espn.com
, вы должны сначала посетить 16 хостов, которые обеспечивают главную страницу рекламой и наполнением.
На приведенной выше картинке показано окно «HTTP/Load Distribution» в Wireshark. В нем отображается список всех серверов, которые использует главная страница сайта
www.espn.com
.
Потеря пакетов
Потеря пакетов – это одна из самых часто встречающихся проблем в сети. Потеря пакетов происходит, когда пакеты данных неправильно доставляются от отправителя к получателю через Интернете. Когда пользователь посещает некий веб-сайт и начинает загружать элементы сайта, потерянные пакеты вызывают повторную передачу, что увеличивает скорость загрузки веб-файлов и замедляет при этом общий процесс загрузки.
Более того, потеря пакетов оказывает крайне негативное влияние на приложение, когда оно использует протокол TCP. Когда TCP-соединение обнаруживает потерянный пакет, то скорость передачи данных автоматически снижается, чтобы компенсировать сетевые проблемы.
Потом скорость постепенно восстанавливается до более приемлемого уровня до следующего потерянного пакета, что снова приведет к существенному снижению скорости передачи данных. Загрузка объемных файлов, которая должна была легко проходить по сети, если бы не было потерянных пакетов, теперь заметно страдает от их наличия.
Что это значит – «пакет потерян»? Это неоднозначный вопрос. Если программа работает через протокол TCP, то потеря пакетов может быть обнаружена двумя способами. В первом варианте получатель отслеживает пакеты по их порядковым номерам и, таким образом, может обнаружить отсутствующий пакет. В таком случае клиент делает три запроса на этот отсутствующий пакет (двойное подтверждение), после чего он отправляется повторно. Во втором варианте потерянный пакет обнаруживает отправитель, когда понимает, что получатель не подтвердил получение пакета данных, и по истечении времени ожидания отправляет пакет данных повторно.
Wireshark указывает, что произошла перегрузка сети, а многократные подтверждения провоцируют повторную передачу проблематичного трафика, который выделен цветом. Большое количество продублированных подтверждений указывают на то, что пакет(ы) были потеряны, а также на существенную задержку в сети.
Для того, чтобы повысить производительность сети, важно определить точное место потери пакетов. Когда Wireshark обнаружил потерю пакетов, он начинает перемещаться по пути следования пакетов до тех пор, пока не найдет место их потери пакетов. На данный момент мы находимся «у истоков» точки потери пакетов, поэтому знаем, на чем нужно сосредоточиться при отладке.
Перехватывающие устройства
Сетевые перехватчики – это связующие устройства, такие как коммутаторы, маршрутизаторы и брандмауэры, которые заняты выбором направления передачи данных. При потере пакетов эти устройства необходимо проверить, потому что они могли стать причиной утери.
Задержка может возникнуть при работе этих связующих устройств. Например, если установлен приоритет трафика, то дополнительная задержка может возникнуть в потоке с низким уровнем приоритета.
Неэффективные размеры окон
Вдобавок к операционной системе Windows, в сетях TCP/IP есть и другие «окна».
Скользящее окно
Окно получателя
Окно отслеживания перегрузок сети
Все эти окна совместно отражают производительность сети на основе протокола TCP. Давайте посмотрим, что из себя представляет каждое из этих окон, и определим, как они влияют на пропускную способность сети.
Скользящее окно
Скользящее окно используется для широковещательной передачи последующих TCP-сегментов по сети по мере подтверждения данных. Как только отправитель получает подтверждение о том, что получатель получил переданные фрагменты данных, скользящее окно расширяется. До тех пор, пока в сети не обнаружатся потерянные данные, передавать можно достаточно большие объемы данных. При потере пакета скользящее окно сжимается, так как сеть уже не может справиться с таким большим объемом данных.
Окно получателя
Окно получателя TCP-стека – это пространство буфера. Когда данные получены, они сохраняются в этом буферном пространстве до тех пор, пока приложение их не перехватит. Окно получателя начинает заполняться, когда приложение не успевает принимать данные, что приводит к сценарию «нулевого окна». Когда получатель объявляет о состоянии «нулевого окна», вся передача данных на хост должна быть остановлена. Пропускная способность падает до нуля. Метод масштабирования окна (RFC 1323) позволяет хосту увеличить размер окна получателя и снизить вероятность наступления сценария «нулевого окна».
На приведенной выше картинке продемонстрирована 32-секундная задержка сетевого соединения из-за сценария «нулевого окна».
Окно отслеживания перегрузок сети
Окно отслеживания перегрузок сети определяет максимально возможный объем данных, с которым может справиться сеть. На это значение влияют следующие факторы: скорость передачи пакетов отправителя, количество потерянных пакетов в сети и размер окна получателя. В процессе корректной работы сети окно постоянно увеличивается до тех пор, пока передача данных не завершится или пока она не достигнет «потолка», установленного работоспособностью сети, возможностями передачи отправителя или размером окна получателя. Каждое новое соединение запускает процедуру согласования размера окна заново.
Рекомендации для хорошей работоспособности сети
Изучите, как можно использовать Wireshark в качестве меры первой помощи, чтобы можно было быстро и эффективно находить источник низкой производительности
Определите источник задержки в сети и по возможности сократите ее до приемлемого уровня
Найдите и устраните источник потери пакетов
Проанализируйте размер окна передачи данных и по возможности уменьшите его
Проанализируйте производительность перехватывающих устройств для того, чтобы посмотреть, увеличивают ли они задержку или, возможно, отбрасывают пакеты
Оптимизируйте приложение, чтобы оно могло передавать большие объемы данных и, если это возможно, извлекать данные из окна получателя
Заключение
В данной статье мы рассмотрели самые основные причины проблем с производительностью сети. Но есть один немаловажный фактор, который просто нельзя упускать, - это непонимание того, как работает передача данных по сети. Wireshark предоставляет визуализацию сети так же, как рентген или компьютерная томография, которая предоставляет визуализацию человеческого тела для точной и быстрой диагностики. Wireshark стал критически важным инструментом, который способен помочь в обнаружении и диагностике проблем в сети.
А теперь проверьте и устраните проблемы с производительностью своей сети с помощью нескольких фильтров и инструментов Wireshark.
