CloudFlare DNS

CloudFlare

Это американская компания, которая предоставляет услуги по защите от DDoS атак, распределенной сети доставки (CDN) и безопасных интернет сервисов. Работает с 2009 года и в их клиентах числятся такие гиганты как Nasdaq, DigitalOcean, Zendesk, Eurovision, Udacity и т.п.

DNS

1 апреля 2018 года CloudFlare запустил, аналогично Google (8.8.8.8, 8.8.4.4), свои публичные DNS сервера - 1.1.1.1 и 1.0.0.1.

Фокус в том, что эти публичные сервера ориентированы прежде всего на безопасность. Если Google честно говорит, что данные запросов они собирают и потом на основе этих данных вам будет предлагаться реклама, то CloudFlare заявляет о том, что они не отслеживают кто и что запрашивает.

Но и это еще не все. По данным исследователей - сервера CloudFlare отвечают в среднем в полтора раза быстрее, чем Google. А это заметный прирост к скорости работы в сети.

Но и это далеко не все.

DNS over HTTPS

Теперь, если вы разработчик програмного обеспечения, то вы можете полностью отвязаться от DNS клиента (провайдерский ДНС, настроенный на машине, где запущено ПО) с помощью технологии DNS over HTTPS.

Как это работает? Да все просто. Надо написать обертку, которая будет запрашивать по https сервера CloudFlare преобразование домена в IP и потом посылать запросы по IP к нужным серверам (не забываем при передаче запроса выставить заголовок Host).

Протестировать можно обычным curl:

curl 'https://1.1.1.1/dns-query?ct=application/dns-json&name=lyalyuev.info&type=A'

Ответ будет таким:

{"Status": 0,"TC": false,"RD": true, "RA": true, "AD": false,"CD": false,"Question":[{"name": "lyalyuev.info.", "type": 1}],"Answer":[{"name": "lyalyuev.info.", "type": 1, "TTL": 38400, "data": "51.15.40.165"}]}

Ответ прост и понятен. Очень легко разбирается любым JSON-парсером.

AWS VPC с Terraform

ToC

  1. Packer от Hashicorp
  2. Terraform для AWS
  3. AWS VPC с Terraform

Что такое VPC

Amazon Virtual Private Cloud (Amazon VPC) – это логически изолированный раздел облака AWS, в котором можно запускать ресурсы AWS в созданной пользователем виртуальной сети. Пользователь полностью контролирует свою среду виртуальной сети, в том числе может выбирать собственный диапазон IP-адресов, создавать подсети, а также настраивать таблицы маршрутизации и сетевые шлюзы. Для обеспечения удобного и безопасного доступа к ресурсам и приложениям в VPC можно использовать как IPv4, так и IPv6.

Настройка

Приступим к конфигурации VPC.
Читать далее...

Не храните пароли в Firefox

Этой заметкой я открываю новую рубрику, связанную с безопасностью в сети и не только.

Разработчик AdBlock Plus раскритиковал систему хранения паролей в Firefox. По его словам логины и пароли, которые были сохранены в Firefox можно украсть простым брутфорсом с применением видеокарты.

То же касается и Thunderbird.

Для шифрования базы используется мастер-пароль, который и есть ключ к базе. Метод шифрования - уже слабый SHA-1.

NVIDIA GTX 1080 может генерировать до 8,5 миллиардов вариантов паролей в секунду!

Т.е. увести файлы logins.json и key3.db и все. Все ваши пароли, от всех сервисов, которые вы сохранили в Firefox - утекли.

Фокус в том, что в Firefox используется одноразовый проход шифрования SHA-1, в то время как принято использовать как минимум 10000 раз. Тогда расшифровать брутфорсом базу будет существенно сложнее. Для примера LastPass использует 100000 проходов шифрования.

Эпичности этой ситуации добавляет то, что первое сообщение об этой проблеме опубликовано ДЕВЯТЬ ЛЕТ назад!

Terraform от Hashicorp для Amazon AWS

ToC

  1. Packer от Hashicorp
  2. Terraform для AWS
  3. AWS VPC с Terraform

Terraform от Hashicorp

Terraform - утилита по формированию инфраструктуры от той же компании Hashicorp.

Это очень простая, но вто же время мощная утилита. Конфигурация пишется на языке HCL (фирменный декларативный язык Hashicorp). Он очень напоминет JSON, а потому достаточно легко читается.

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

Для работы с Terraform нужно иметь настроенное окружение для доступа в Amazon AWS. Делается это с помощью aws-cli.

Начнем.

Установка

Установка Terraform заключается в скачивании готового файла и копировании его куда-то в доступное место для переменной PATH.
Читать далее...

Packer от Hashicorp

Hashicorp Packer

Packer от компании Hashicorp - это инструмент, который позволяет создавать образы для виртуальных машин (AWS AMI, VMWare, Virtualbox, и много других провайдеров инфраструктуры). Это весьма удобный инструмент для создания своих образов в вирутальной инфраструктуре.

В этой заметке я буду рассматривать Packer в качестве билдера AMI для AWS EC2.

Почему именно в таком амплуа. Этой зметкой я открываю цикл о подходе IaC (Infrastructure as Code) - популярной вещи в DevOps практиках.

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

  1. версионирование
  2. история
  3. возможность отката
  4. все плюшки хранения кода в CVS

ToC

  1. Packer от Hashicorp
  2. Terraform для AWS
  3. AWS VPC с Terraform

Конфигурация

Итак, packer - это кроссплатформенная утилита, которую можно легко установить на Windows, Linux или MacOS.
Читать далее...

Очередная попытка переехать на Mac OS

Уже в который раз пытаюсь уйти с Ubuntu. Вариантов миграции совсем не много. Самый очевидный - это MacOS X.

В этот раз меня даже не сильно раздражает эта ОС. Вполне сносно можно жить, если допилить ее до вменяемого состояния.

Переходы по словам в консоли

Ни для кого не секрет, что родной терминал в маке довольно убог и все используют iTerm2. Настроить на переход по словам с помощью Alt/Option довольно легко. Инструкций в интернете полно.

После этих настроек все становится хорошо и довольно удобно.

Закрытие последней вкладки в Safari

В Safari, как и в других браузерах, можно закрепить несколько вкладок. Но от этого есть неприятный сайдэффект. Если нажать Cmd+W на последней не закрепленной вкладке, то Safari закрывает все окно. В остальных браузерах тебя просто перебрасывает на закрепленную вкладку.

Исправить можно в системных настройках клавиатуры путем добавления Shortcut (горячей клавиши).

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

В разделе "App Shortcuts" создаем новую комбинацию клавиш для приложения Safari.

В Application выбираем Safari, в Menu item пишем "Close Tab" (регистр букв имеет значение), и в Keyboard Shortcut нажимем Cmd+W.

Все. После этого по нажатии в последней вкладке Cmd+W будет закрыта вкладка и открыты Favorites.

Если у вас система на русском языке, то в Menu item надо ввести название пункта меню в Safari, которое вы хотите чтоб вызывалось по нажатию Cmd+W.

Пока на этом все. Будем пробовать ужиться на этой системе.

Передвигаемся в консоли без стрелок

Сегодня совсем небольшая заметка...

В MacOS меня жутко раздражжает, что нельзя прыгать по словам в консоли (да, я в курсе, что можно это настроить сторонним софтом).

А вот век живи и век учись... Таки можно, и вот как:

Moving in cli

Как переехать в Amazon

Предпосылки

До переезда мы арендовали несколько bare metall серверов в SoftLayer.

На всех из них крутились KVM виртуалки, была своя выделенная подсеть (даже не так, несколько подсетей). Поддерживать все это было то еще удовольствие.

Немного спасал OpsCode Chef, но не сильно. Т.к. три ветки в git, которые сливать в кучку не всегда нормально удавалось из-за шифрования критичных вещей.

Не спрашивайте почему так. Это историческое наследие и выкорчевать его было не так просто.

Последней каплей стало то, что у нас как-то пошла небольшая нагрузка и на двух физических серверах тупо не хватило памяти, чтоб добавить ее в виртуалки. Пришлось ждать два дня, пока поддержка SoftLayer'a добавит нам планки.

В этот момент было принято волевое решение - хватит это терпеть. Пора отказываться от такой схемы работы.

Подготовка инфраструктуры

Было понятно, что переезжать куда-то, кроме облаков, нет смысла. Только там есть та самая динамика, которая нас сможет удовлетворить.

Выбор не велик - DigitalOcean и Amazon AWS. Поскольку DO не предоставляет HIPAA и HiTrust, то выбор стал очевиден сразу.


Читать далее...

Jenkins + LDAPS + самоподписные сертификаты

Проблема

При попытке сконфигурировать Jenkins для подключения к LDAP серверу с использованием шифрования данных получаем ошибку:

Unable to connect to ldaps://ldap.example.com:636 : javax.naming.CommunicationException: anonymous bind failed: ldap.example.com:636 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]

javax.naming.CommunicationException: anonymous bind failed: ldap.example.com:636 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]
    at com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:198)
    at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2788)
    at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:319)
    at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192)
    at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210)
    at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153)
    at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83)

Она говорит нам, что Java не осилила TLS (SSL) из-за того, что у нас самоподписной сертификат.

Лечение

Заходим на сервер с Jenkins (если у вас он в доккере, то делайте все, что описано ниже внутри доккер контейнера).
Читать далее...

Видеонаблюдение дома

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

Для начала я порылся в закромах и нашел Noname Chinese IP Camera, которая умеет слать поток куда-то в Китай, а значит его можно попробовать поймать.

Подключаем камеру и пытаемся посмотреть, какие открытые порты она имеет:

$ sudo nmap -A 192.168.1.156

Ответ впечатляет разнообразностью:
Читать далее...