Сетевые принципы и технологии | Основы построения и работы компьютерных сетей

 

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

# Что такое Hash и с чем его едят? Нужны ли еще «соль» и «перец»? Часть 1.   (Дата: 16.02.2020)

HASH, Digest, Message DigestHash – это алгоритм или функция, которая создает уникальный цифровой отпечаток данных – Digest или Message Digest или просто Hash.

Произносятся как «хааш», но в русскоязычной среде, почему то обычно принято произносить как «хеш». То ли это пресловутый «русский акцент», то ли просто чтобы не спутать с дивным армянским/грузинским/кавказским блюдом хаш, быстро приводящим в себя похмельным утром. Но не суть, это не урок кулинарии или английского языка.

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

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

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

Например, когда мы заходим на сайт и вводим логин с паролем, то для пароля вычисляется его hash, который и сравнивается с уже хранящимся в базе данных. Обратного преобразования в текст не производится.

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

Например, для алгоритма MD5 это 128 бит, для SHA-1 это 160 бит SHA-256 это 256 бит.

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

Но сразу же уточню, что сейчас алгоритмы MD5 и SHA-1 не считаются безопасными. Доказано, что они имеют так называемые коллизии и можно подобрать две разные комбинации исходных данных имеющих на выходе этих алгоритмов то же самое значение hash.

Поэтому MD5 и SHA-1 более не рекомендуются к применению. В зависимости от задач, имеющихся вычислительных ресурсов и требуемых политик безопасности, лучше использовать такие, например алгоритмы, как SHA-2, SHA-3, PBKDF2, SCRYPT и прочие с более длинным размером генерируемого дайджеста.

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

Что же происходит и как такое возможно?

Атаки по словарю Dictionary Attacks и подбор паролей Brute Force

Есть два основных метода подбора хэшированных паролей. Это «атаки по словарю» и «грубый» подбор паролей.

Атаки по словарю (Dictionary Attacks) базируются на предварительно вычисленных значениях hash для популярных паролей. Такие словари еще называют «Радужными Таблицами» (Rainbow Tables).

В них для каждого пароля есть уже готовое значение hash для заданного алгоритма хэширования.

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

Есть много таких онлайн сервисов, например:

https://crackstation.net/

Для демонстрации получим MD5 хэш простейшего пароля «qwerty».

Это также можно сделать онлайн, например:

https://www.tools4noobs.com/online_tools/hash/

Либо из командной строки FreeBSD:

root@anikolaev:~ # md5 -s qwerty
MD5 ("qwerty") = d8578edf8458ce06fbc5bb76a58c5ca4

Или Ubuntu:

root@MAIN-PC:~# echo -n qwerty | md5sum
d8578edf8458ce06fbc5bb76a58c5ca4 -

Если теперь ввести полученное значение MD5 hash d8578edf8458ce06fbc5bb76a58c5ca4 на сайте https://crackstation.net/ то мы получим исходный пароль «qwerty».

HASH, MD5

Таким образом, несложные пароли достаточно легко и быстро определяются по их хэш.

Brute Force атаки – это методичный «грубый» подбор паролей с последовательным перебором всех возможных символов в нем.

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

Метод хорошо работает для коротких и простых паролей. Но для сложных паролей время их подбора растет экспоненциально.

Краткие рекомендации по выбору паролей:

  • Рекомендуемая длина пароля - не менее 12 символов и в нем должны быть комбинации букв, заглавных буквы, цифр и спецсимволов.
  • На разных ресурсах должны использоваться различные, уникальные пароли. Не стоит задавать один и тот же пароль для всех своих аккаунтов. Тут может помочь какой либо менеджер паролей и достаточно помнить один мастер-пароль. Я, например, использую KeePassXC (https://keepassxc.org).
  • Также следует регулярно менять пароли, хотя бы раз в 3 месяца. Не использовать предыдущие пароли и производные от них. Периодически hash паролей утекают в открытый доступ.

 

Проверить, были ли похищены Ваши пароли, и на каких ресурсах можно в сервисах:

 

Возможно ли это предотвратить или, хотя бы, усложнить?

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

 

В начало ›

 

Автор: Алексей Николаев, CCIE #27142 (Security)

Метки: Hash, Digest, Message Digest

Публичные DNS серверы - какой выбрать для безопасного и приватного доступа в Интернет?   (Дата: 07.03.2020)

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

Напомню лишь, что DNS это критичный компонент сетевой инфраструктуры. Если DNS сервер, настроенный в IPv4 или IPv6 TCP/IP стеке не отвечает, то на компьютере Вы увидите предупреждение, что Интернет недоступен, соединение без Интернета. Даже если и проходит ping по IP адресам известных интернет ресурсов.

Обычно, в таких случаях я дают ping на легко запоминающиеся IP адреса, например:

  • ping 1.1.1.1
  • ping 8.8.8.8
  • ping 9.9.9.9

 

и др. Но об этом чуть позже.

И если ping проходит, а в браузере сайты не открываются, то это верный признак проблемы с DNS.

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

Когда вы подключаетесь к Интернет-провайдеру, помимо IP адреса (или диапазона адресов), он еще выдает Вам маску подсети, шлюз и свои DNS серверы.

Но далеко не всегда эти DNS серверы будут достаточно безопасны и оптимальны именно для ваших задач. Не секрет, что практически все Интернет- провайдеры регистрируют ваши обращения к ресурсам Интернета в лог файлах DNS запросов. Туда попадают и Ваши IP адреса и запросы к конкретным сайтам, доменным именам, URL-ам.

И, как правило, использование протоколов HTTPS/SSL от этого не спасает, ибо первый запрос HTTP GET к URL транслируется сначала в DNS запрос для определения IP адреса сайта. Он никак не шифруется и не скрывается обычными DNS серверами. И только после установления защищенного соединения с сайтом трафик начинает шифроваться. Но домен Вы уже «засветили». Эта информация может быть использована для составления Вашего личного Интернет профиля, интересов и привычек.

Либо, эта информация может передаваться Интернет-провайдерами по запросу сами знаете кого и куда. Проект СОРМ» и иже с ним никто не отменял и не собирается. Количество подобных проектов только растет и методы сбора личной информации расширяются. Например, внедряемая сейчас в России система «глубокого анализа пакетов» DPI.

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

В любом случае, не думаю, что кому-либо понравиться, чтобы за ним следили. Даже если Вы и не делаете ничего нелегального, а просто серфите Интернет.

Что же можно сделать в этой ситуации?

Проблему маскировки DNS запросов от посторонних позволяет решить новая технология «DNS поверх HTTPS» (DNS-over-HTTPS, или сокращенно DoH). Она позволяет шифровать все DNS запросы и ответы. Конечно же, эта технология должна поддерживаться с обеих сторон, как DNS сервером, так и браузером.

Хорошая новость в том, что эту технологию можно применять уже прямо сейчас, все прекрасно работает!

Вторая проблема, которую позволяет решить DoH это атаки типа Man-In-The-Middle (MiTM, «Мужик посередине»). Если DNS обмен не зашифрован, то злоумышленник может подменить ответ DNS сервера и перенаправить весь трафик на фейковый сайт, где может быть вредоносное программное обеспечение, вирусы, фишинговые страницы для сбора логинов и паролей. Да и много еще каких зловредов.

Какой оптимальный DNS сервер выбрать?

Вот пятерка наиболее известных и популярных публичных DNS серверов:

 

Выбор конкретного DNS сервера зависит от Ваших первичных задач и приоритетов. Например, поддерживает ли DNS сервер технологии DoH, DoT, обеспечивает ли защиту от опасных и вредоносных сайтов, есть ли защита от ботов, блокируются ли «взрослые» сайты, насколько быстро сервер отвечает на запрос и т.д.

Например, самые быстрые DNS сервера на сегодняшний день и с очень широкой географической зоной покрытия, это Cloudflare DNS. Убедиться в этом можно утилитой dig из командной строки Linux:

dig @1.1.1.1 mail.ru | grep time

Linux dig

В параметрах надо через @ указать IP адрес DNS сервера, и какой сайт резолвить. В этом примере вручную перебираются все пять рассматриваемых здесь DNS серверов, и запрашивается IP адрес сайта mail.ru.

Для наглядности и упрощения анализа времени ответа DNS сервера можно с помощью утилиты grep в выводе оставить только строку, содержащую time.

Чтобы Linux был всегда под рукой, даже если Вы и работаете под Windows, можно включить поддержку Linux подсистемы и установить из Microsoft Store нужный вам его вариант.

Мне лично нравится Ubuntu. Если интересно, как все это прикрутить к Windows, пишите в комментариях внизу страницы, сделаю тогда видео.

Если же Вы не фанат Linux, то можно просто воспользоваться одной из утилит для Windows, например DNS Benchmark.

DNS Benchmark

Все полные характеристики рассматриваемых DNS серверов можно посмотреть по выше приведенным ссылкам и подобрать для себя наиболее подходящий.

Для себя же я выбрал Cloudflare DNS, и вот почему:
  • самый быстрый
  • безопасный, не ведет логов
  • поддерживает «DNS-over-HTTPS»
  • легко запоминающиеся IP адреса (1.1.1.1, 1.0.0.1)
  • можно указывать как для сетевых устройств (маршрутизаторов, межсетевых экранов и т.д.), так и для конечных пользователей сети

 

Ранее я активно пользовался OpenDNS (Cisco Umbrella) и Google DNS, пока не перешел на Cloudflare. Пишите Ваши соображения и рекомендации в комментариях.

Также есть дополнительная группа серверов, поддерживающих новые технологии, включая «DNS-over-HTTPS».

И еще, ориентироваться на результаты работы команды ping для замера скорости ответа сервера особого смысла нет. Важнее скорость получения ответа на DNS запрос (dig), а она может быть гораздо выше, чем просто ping.

А теперь самое интересное и практичное!

Поддержка «DNS поверх HTTPS» в браузерах

Совсем не обязательно дожидаться официального анонса поддержки этого функционала в популярных браузерах. Сегодня все это уже прекрасно работает в последних версиях Mozilla Firefox и Google Chrome.

Mozilla Firefox (версия 60.х и старше)

Для проверки версии введите в адресную строку браузера about:support

Самый простой способ включить DoH, это установить последнюю версию Firefox, зайти в

Настройки > Основные > Параметры сети > Включить DNS через HTTPS

(или ввести в адресной строке about:preferences), перейти в Параметры сети и поставить галку напротив "Включить DNS через HTTPS":

DoH Firefox

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

Либо, для пытливых умов и/или владельцев старых версий Firefox можно сделать следующее (еще дополнительно включить и eSNI для TLS 1.3):

  • ввести в адресную строку Firefox about:config
  • подтвердить, что принимаете на себя вес риски, когда откроется страница с предупреждением
  • через строку поиска найти параметр network.trr.mode и дважды щелкнуть по нему (TRR: Trusted Recursive Resolver)
  • установить значение, равное 2, чтобы DNS-over-HTTPS использовался по умолчанию, а стандартный DNS-сервер в качестве резервного (оптимальный вариант для совместимости)
  • также можно установить значение 1, если хотите чтобы Firefox автоматически выбрал самый быстрый вариант между DNS или DoH; 3 – чтобы использовался только DoH; 4 – теневой режим (зеркалирование): запускает DoH параллельно со стандартным DNS для синхронизации и измерений, но использует только результаты стандартного DNS; 0 – чтобы отключить DoH по умолчанию, 5 – чтобы отключить DoH по выбору

  • через строку поиска найти параметр network.trr.uri, дважды щелкнуть по нему и ввести адрес сервера DNS-over-HTTPS. По умолчанию там уже стоит https://mozilla.cloudflare-dns.com/dns-query, но можно указать и https://dns.google.com/experimental
  • найти параметр network.trr.bootstrapAddress и, дважды щелкнув по нему установить значение 1.1.1.1 (если выбрали Cloudflare), либо 8.8.8.8 (если выбрали Google DNS)

  • найти параметр network.security.esni.enabled и установить его значение в true

  • перезапустите браузер Firefox

 

Вот наглядная демонстрация основных шагов:

 

Проверка работы DoH в Firefox

Для проверки, работает ли DoH и с какими сайтами, введите в адресной строке about:networking#dns

Откроется страница с кэшем DNS и в столбце TRR будет указано значение «true» для сайтов, где используется DoH.

Также можно проверить работоспособность всех настроек безопасности браузера, перейдя по ссылке: https://www.cloudflare.com/ssl/encrypted-sni/

Если все 4 галки зеленые, то поздравляю! Теперь Вы защищены от шпионажа за вашими действиями в Интернет, точнее, за посещаемыми сайтами. И в качестве бонуса, Вы также сможете заходить и на заблокированные РКН сайты без всяких дополнительных VPN!

 

DoH в Google Chrome

В последних версиях Google Chrome включить DoH можно введя в адресной строке:

chrome://flags/#dns-over-https

Для включения DoH в более ранних версиях браузера Google Chrome, надо запустить его со следующими параметрами:

--enable-features="dns-over-https<DoHTrial" --force-fieldtrials="DoHTrial/Group1" --force-fieldtrial-params="DoHTrial.Group1:server/https%3A%2F%2F1.1.1.1%2Fdns-query/method/POST

 

Передать этот параметр можно в Shortcut, через который Вы запускаете Google Chrome. Я делаю это через Панель задач (Taskbar), но можно также создать Shortcut и на десктопе.

Например,

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --enable-features="dns-over-https<DoHTrial" --force-fieldtrials="DoHTrial/Group1" --force-fieldtrial-params="DoHTrial.Group1:server/https%3A%2F%2F1.1.1.1%2Fdns-query/method/POST

 

 

DoH в Brave Browser

В браузере Brave DoH включается аналогично Google Chrome. Необходимо ввести в адресной строке:

brave://flags/#dns-over-https

 

Для проверки работы DoH с Cloudflare достаточно перейти по ссылке https://1.1.1.1/help

 

 

На этом пока все, пишите Ваши комментарии, вопросы и предложения внизу страницы. Безопасного всем серфинга!

 

В начало ›

 

Автор: Алексей Николаев, CCIE #27142 (Security)

Метки: DNS, DNS-over-HTTPS, DNS поверх HTTPS, DoH


На главную ›   К списку статей ›