Ansible

Oct. 18th, 2017 11:17 am
beldmit: (Программизм)
Решил попробовать хоть как-то освоить ansible. Не по доброй воле, а потому, что потребовалось разложить по двум десяткам машин новый SSH-ключ.

Создал директорию, создал сценарий, поставил ansible - не работает. В смысле, не видит список хостов.
Коллега проапгрейдил ansible на новую версию. Список хостов увиделся, сценарий не работает. С диагностикой

В общем, вчера тупо долбился об стену несколько часов. Сегодня запустил с повышенной verbosity, почитал внимательно и увидел, что причина диагностики
"module (copy) is missing interpreter line"

в том, что я обозвал свой сценарий так же, как и один из штатных плагинов ansible. В гугле такого варианта идиотизма пользователя не фигурирует, так что хозяйке на заметку.
beldmit: (Программизм)
Освежил в памяти, как нынче заблокировать доступ к файлу на уровне C API.

Linux (и, видимо, прочие юниксы): flock работает всегда, lockf - для файла, открытого на запись. fcntl, наверное, тоже.

В Windows это не портируется, там надо звать Windows API, которое несовместимо в этом месте с OpenSSL BIO. И из виндового HANDLE получить дескриптор файла как-то можно, но это танцы с бубном.

На практике интересен ещё атомарный rename. В Unix-подобных системах, видимо, он действительно атомарный, попутно нашёлся эпический тред про то, как эту атомарность в MacOS 10+ чинили 3 года. В Windows есть ReplaceFile со товарищи, тоже со своими особенностями, и помеченная как deprecated функция для работы через транзакционный механизм NTFS.

Как это всё работает на NFS, не знает примерно никто.

Видимо, наиболее простое по программированию решение всех этих задач - внешнее по отношению к файловой системе, типа именованных мьютексов.
beldmit: (Программизм)
... что при выпуске Windows 7 (и даже ещё Vista) в MS озаботились старыми приложениями, которые пишут в защищённые каталоги (видимо, системный диск, папки Windows и Program Files, а также разделы реестра). Озаботились путём созданием папки и раздела реестра под названием VirtualStore в домашней папке пользователя (Users\Username\AppData\Local\) и в аналогичном разделе реестра.

Для пишущей программы всё происходит прозрачно, пишешь в файл C:\myfile - пишется, читаешь - читается. А вот для пользователя, который ищет записанный таким образом файл - нет: команда dir файл не выводит. Process Monitor, впрочем, позволяет локализовать файл.
beldmit: (Default)
В ФБ подняли тему "Что бы ты сказал себе 15-летнему, кроме как покупать баксы". Я там в среднем постарше большинства отвечающих, повспоминал и понял, что у меня как раз на 15-летие (1990 год) были 2 момента, которые могли мою дальнейшую жизнь серьёзно пошевелить.

Во-первых, я тогда буквально на несколько дней опоздал с отправкой заявки (конвертом с бумажным письмом) на телефонный чемпионат СССР по "Что?Где?Когда?". Мог бы банально попросить отца отдать конверт Владимиру Белкину, мог бы отправить заявку бумажной почтой. Удачный результат тогда давал бы попадание в школьную лигу и вероятно - в телебрейн в самом начале. И сколько-то школьных фестивалей, новых знакомств и т.п. Так я стартовал (и неплохо) через год, но в школьных турнирах вообще не играл.

Во-вторых, я мог бы попросить у родителей, а вернее у деда, денег на комп - человек 6 одноклассников тогда закупались, а я постеснялся про это рассказать дома. Если бы денег дали (у деда они были), то компом оказался бы, кажется, Spectrum, и начал бы я программировать just for fun лет на несколько раньше. Или играть раньше, и соответственно, раньше бы наигрался.
beldmit: (Программизм)
Не то, чтобы в такую шальную погоду у меня были богатый выбор. Да ещё и Нина сбежала на игру, оставив детей мне. И в итоге, прочитав у [personal profile] vitus_wagner про то, что апгрейд на stretch у него прошёл гладко, я вдохновился и запустил апгрейд.

Ну да, апгрейд прошёл легко и непринуждённо, но после перезагрузки я увидел GUI, игнорирующий мышь и клавиатуру. Ок, гугль. Ага, несколько модулей. Ага, хрен. Ого, 2 часа. Пора спать.

Утром я осознал, что у меня ядро осталось аж с позапрошлого выпуска. А проапгрейдить его нельзя, потому что на партиции места нет. Вылез за болванками, записал LiveCD c GPartED, 4 часа двигал партиции, в итоге понял, что расширить раздел всё равно не получится. Долго архивировал домашнюю директорию. Ещё дольше копировал её на флешку, потому как забыл, что файлов больше 4Гб на FAT32 не бывает. Скопировал, запустил установку, ага, gnome3 работает, ого, как оно неудобно-то, да и тормозит, и глючит, ой блин, 2 часа, пора спать.

Утром попытался сделать 2 вещи. Заменить gdm3 на mate, а nouveau на проприетарные от nvidia. В общем, фиг, и проще переставить с нуля. Переставил, ушёл в гости, бросил детей на Надю, отмечавшую день рождения, вернулся, встретил Нину, скопировал настройки с бекапа. Заработало более-менее всё, и часть вещей, которые в gnome делались через задницу, типа добавления кнопок запуска на верхнююпанель, в mate делается интуитивно-понятным способом.

Из замеченного на бытовом уровне: переименованы сетевые интерфейсы (но судя по Debian Wiki, можно по-прежнему править /etc/network/interfaces). Новый openssl (1.1.0).

OpenSSH теперь по умолчанию игнорирует DSA-шные ключи, а он у меня почему-то был именно такой. Так что придётся сгенерировать новый, и непонятно – то ли генерить эллиптический в надежде на новые системы более-менее везде, то ли ограничиться длинным RSA.

WannaCrypt

May. 13th, 2017 12:32 pm
beldmit: (Программизм)
Вчера пошло распространение ransomware (вымогательское ПО) WannaCrypt. Эксплуатируется уязвимость в так называемом SMB-протоколе, исправленная в марте 2017.

Старые версии Windows, в том числе XP, тоже уязвимы. Microsoft, впрочем, сподобилась выпустить исправление и для XP, так что если у кого XP осталась, то надо срочно обновляться. Я, кстати, выпуска обновлений к настолько legacy-версиям вообще не помню, так что это мера оценки опасности.

Текущую эпидемию удалось остановить (она была завязана на некое доменное имя, которое хрен запомнишь, домен зарегистрировали, распространение этой заразы остановилось), но новые пойдут довольно скоро — исходники эксплойта в открытом доступе. Так что рекомендую тем, кто с XP уползать не хочет, обновление поставить. Ну и да, бекапы делать...

Подробное описание заразы на русском языке.
beldmit: (Программизм)
Криптоанализ Keyless SSL. Keyless SSL -
попытка не отдавать в случае CDN секретный ключ на все серверы того CDN. Авторы статьи предложили две атаки, которые всё равно будут валидны при компрометации одного из frontend-сервера CDN, и исправление протокола, чтобы этих атак избежать.

Распределение сертификатов по УЦ. На картинке Let's Encrypt ставит крест на всех прочих УЦ (в части DV-сертификатов).
beldmit: (Программизм)
Отображение русских букв в утилитах командной строки openssl. Она и раньше была, но существенно не везде.

То, что можно было доделать сравнительно малой кровью, я доделал. Subject и issuer сертификатов теперь будет выводиться по-русски, если указать опцию вывода -nameopt utf8. До X509 extensions так просто не добраться, так что завёл issue.

Спасибо [personal profile] vitus_wagner за сделанную в своё время сводку.
beldmit: (Программизм)
Поскольку я сейчас не пишу платных материалов по инфобезу, то выложу здесь несколько ссылок, чтобы не пропадали.

Это отчёт компании Qrator о состоянии с DDoS-атаками по итогам 2016 года. Написано хорошо и понятно даже неспециалисту. Лучшая фраза оттуда, пожалуй, такова:

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

Вторая новость из доменно-браузерной области, так что затрагивает примерно всех.
Несколько дней назад появилась публикация, из которой следовало, что браузеры, стремясь изобразить IDN-домены в человекочитаемом виде, способствуют фишингу. В качестве примеров был взят домен аррӏе.com (все символы в имени из кириллицы, смешивать их с латиницей нельзя, чётвёртая буква - уникодный символ PALOCHKA из кавказских языков). А если учесть, что TLS-сертификат теперь можно получить бесплатно, возможности для фишинга открываются довольно богатые. В качестве рекомендаций предлагают выключить в Mozilla изображение в человекочитаемом виде, а Google Chrome уже вроде бы выключил такое отображение в версии 58 (должна обновиться сегодня).

Хорошего решения тут не найти. Довольно давно запрещено смешение символов из разных кодовых страниц уникода в доменном имени, именно чтобы избежать фишинга. С другой стороны, отображение имён в человекочитаемом виде - благо. В том ПО, которое пишем мы с коллегами, отображение для IDN-доменов мы выводим в двух вариантах.

В выбранном решении утрачивается человекочитаемость (то есть то, ради чего все IDN-домены и выводились на рынок), но вероятность фишинга уменьшается. Но не до нуля: кириллицу от латиницы так отличить можно, а какую-нибудь условную одну крокозябрицу, которая имеет внутреннее представление xn--foo.com от другой с представлением xn--bar.com - уже не очень.

Ссылка на обсуждение в Chrome Bugzilla.
Позиция Mozilla на тему отображения IDN-символов.
beldmit: (Программизм)
Когда технически грамотные программисты рассказывают, что главное в TLS — шифрование, мне становится понятно, что надо пересказать тот кусок презентаций, который я обычно адресую широкой публике. Это упрощённое изложение, но типичный сценарий покрывает.

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

У протокола TLS есть несколько задач. И перед тем, как мы согласуем ключи шифрования и начнём передавать зашифрованные данные, наша задача — убедиться, что соединились мы именно с тем, с кем хотели. Для этого предусмотрена фаза handshake. На этой фазе клиент и сервер сверяют разные куски информации, которыми они обменялись, между собой. Типичный случай — доменное имя в DNS-запросе и в сертификате. Если они не совпали, то возможно, вы пытаетесь договориться не с тем.

Если они совпали, то надо внимательно посмотреть на сертификат, потому что сертификат может выписать кто угодно кому угодно. Но есть список доверенных корневых сертификатов (сертификатов удостоверяющих центров, УЦ), приходящий с браузерами и операционной системой в целом. Если мы смогли проверить, что предъявленный сертификат (вообще говоря, цепочка сертификатов) кончается одним из доверенных, то мы можем на что-то надеяться. Сертификат конкретного домена, конечно, может быть отозван, и это можно проверять, но на практике это работает довольно странно.

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

Процедуры проверки удостоверяющими центрами заявителей сильно регламентированы, и на нарушениях УЦ время от времени попадаются. Так, пару месяцев назад пострадал УЦ WoSign. Сейчас Google предъявляет претензии Symantec. Но проблема не в УЦ, а в том, что если сертификат УЦ выпадает из списка доверенных, то страдают все, кто у них сертификаты купил. В результате единожды попавший в браузеры доверенный сертификат порождает проблему "Too big to fail". Из-за этого реальные проверки в браузерах не сводятся к построению цепочки доверия. Кажется, чуть ли не единственный случай, когда доверие отзывалось моментально, был связан с Diginotar, голландским УЦ, который был взломан несколько лет назад.

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

1. К сайту доступаемся, получая его адрес через DNS. Чаще всего через провайдерский. Который может дать модифицированный ответ на пользовательский DNS-запрос. Страховкой может оказаться DNSSec, но иногда злонамеренные резолверы DNSSec-валидацию отрубали.

2. Контент лежит на хостинге. Это значит, что его могут изменить сотрудники хостинговой компании. Случаев мне неизвестно, но должны время от времени происходить.

3. Если сайт не защищён с помощью TLS-сертификата, то передаваемый контент можно заменить где угодно, и вставка баннеров в код страниц точками Wifi-доступа в кафешках носит характер невинной игры в крысу.

4. Если сайт защищён по https, то надо понимать, что в типичном браузере прошито примерно 200 доверенных УЦ, и каждый может (технически) выпустить сертификат для вашего домена. Страховки от этого есть, Certificate Transparency (поддерживается только в Google Chrome, Mozilla только собирается), Certificate Pinning (Chrome и Mozilla), DANE (требует DNSSec, поддержка только в плагине к Mozilla).

5. Верификацию сертификата вы доверяете браузеру. Местами операционной системе, куда могут быть установлены сертификаты от разного рода TLS Proxies, DLP-систем и т.п. То есть доверяете авторам браузера, которым пользуетесь.

6. Плагины, которые в браузер установлены, тоже могут менять контент web-страницы.

7. Большинство сайтов использует JavaScript-овый код для подключения баннерных сетей. Он тоже будет управлять тем, что вы увидите. Пока что были прецеденты подсовывания ссылок на malware, но думаю, что и таргетированные атаки ещё последуют.

Наверняка что-то ещё я забыл.

С вами была пятничная рубрика «Как страшно жить».
beldmit: (Программизм)
Google анонсировал поэтапное выпиливание Symantec и его дочерних УЦ из Chrome.

Мотивировка - несоблюдение операционных практик в области безопасности. Пишут про 30000 сертификатов, выпущенных без должной проверки. При этом Symantec отвечает за 42% успешных валидаций по статистике Firefox (то есть посещений защищённых сайтов, доля сертификатов при этом скорее всего ниже).

Закат Солнца будет производиться вручную, рассчитан на несколько лет. До сих пор выпиливаний такого масштаба ещё не было, все прошлые казусы были с УЦ меньшего масштаба.

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

Вообще логика проверки сертификатов на валидность становится всё сложнее и сложнее. Вместо безусловной цепочки доверия, начинаем наблюдать массу вариаций на тему "Здесь играем, здесь не играем, тут рыбу заворачивали".
beldmit: (Любовь к ближним)
Чёртовы идиоты из ЖЖ сломали перевели в состояние кота Шрёдингера кросспост с Dreamwidth. Что я по этому поводу буду делать, пока не знаю. Скорее всего какое-то время cut'n'paste, потом разберусь.
beldmit: (Программизм)
У меня метеопатия, как, в общем, у многих горожан категории «бледная немочь». Вылетает, как правило, сон (грядущий). В общем, за прошлую и эту неделю в результате у меня нашлось время, которое удалось позитивно использовать, породив 3 мелких патча к openssl.
Read more... )
На всякий случай прикопаю здесь ссылку на старый пост [personal profile] vitus_wagner на эту тему.
beldmit: (Программизм)
Сделал бету очередного микропроекта на python. Проект пока не публичный, если станет таковым — похвастаюсь.

Собственно, python там оказался (полу)случайно — альфу клиентской версии я сделал на Java, а когда мне заказчик сказал, что нужна серверная, я представил, как я бьюсь лбом о порог вхождения в экосистему Java на сервере и решил, что расшибу я тот лоб гораздо раньше. А со скриптовыми языками всё сравнительно просто, и пример того, что мне надо сделать, написанный на python, заработал с первого раза именно так, как мне требовалось. (На perl аналогичные модули работают несколько не так). Нина выбор тоже горячо одобрила. Я писал на python до того один раз 7 лет назад и воспоминания у меня были скорее положительные.

Некоторое время повозился с Django. Команд у manage.py больше, чем у git-а, документация в сети есть, но при гуглении есть шанс нарваться на какую-нибудь версию 1.4 (Cookbook-а для более новой версии я не нашёл, а удобнее всего для освоения с нуля именно он). Но типовые web-вещи там решаются просто и лучше, чем я бы написал с нуля, а учитывая, что мне нужно было всего-то пара страниц и раздача статики, то всё прошло идеально, хотя головой об стенку я побился. В Debian доступен 1.7.11, в upstream версия сейчас 1.10, а версия 1.7 значится на сайте как не поддерживаемая, я в итоге плюнул и поставил свежую версию через pip install. И прочие пакеты ставил так же, нарушая тем самым чистоту ленинских идей и отказываясь от менеджера пакетов.

Python я взял 2.7 (блин, посмотрел в предыдущие записи по тегу python — и осознал, что прошло 7 лет, а python 3 так и не завоевал мир). Из-за этого мне пришлось повоевать с указанием кодировок и, видимо, явной конвертацией в utf-8 в скрипте.

Финальным аккордом стала отладка cron-скрипта. То есть как нормальный скрипт он делал всё, что надо, а из cron-а он выдавал первое из серии диагностических сообщений, а затем падал с какой-то невнятицей. Через некоторое время нагуглилось, что надо выставлять переменную PYTHONIOENCODING=utf_8, и после этого всё заработало.

Вывод простой. Современные развитые скриптовые языки позволяют написать содержательный код без особого знания синтаксиса языка. Ну то есть я знал минимальные вещи, типа выравнивания пробелами и оформления циклов и управляющих конструкций, за чем-то сложнее лазил в учебник. И да, in stackoverflow we trust, но читать его надо очень внимательно и осмыслять, что же тебе посоветовали — просто копирование кода скорее всего не поможет.
beldmit: (Любовь к ближним)
Промо в ленте опознаётся по тегу article с классом j-e--feedpromo и ещё каким-то такого же типа.
Чтобы сконвертировать это в правило для uBlock, надо дождаться устойчивого воспроизведения поведения.

UPD: говорят, livejournal.com##.appwidget.appwidget-journalpromo не работает. Пробуем livejournal.com##.j-e--feedpromo
beldmit: (Манул)
Очевидные последствия переезда ЖЖ в Россию для тех, у кого ФСБ фигурирует в модели угроз - то, что подзамки, которые и до того, будем честны, особо надёжным укрытием не были, особенно при сотнях подписчиков, перестанут быть таковыми совсем. С другой стороны, понятно, что захотят посадить - посадят или по крайней мере испортят жизнь.

Переезд на DreamWidth, кросс-посты и периодическая синхронизация осмысленна для тех, у кого в модели угроз фигурируют криворукие сисадмины. Потому что бекапов много не бывает. Инструкция, например, здесь. При этом надо понимать, что DW из России периодически блокируется целиком от отдельных провайдеров, и доступ к нему придётся организовывать через Tor или VPN-ы. Переезд на DreamWidth без синхронизации в ЖЖ сократит аудиторию, но частично, пока времена вегетарианские, спасёт от п.1.

Переезд на ФБ мне не кажется осмысленным, потому что там доступе по большому счёту только сиюминутный контент.

Переезд на standalone blog требует какой-то технической квалификации и не лениться затыкать дыры вовремя. И без возможности кросспостов опять-таки приведёт к потере аудитории.

Про переезд на medium не скажу ничего, не знаю.
beldmit: (Программизм)
Мои письма так понравились спам-фильтру, что он теперь им прохода не даёт.

***
— Свяжитесь с нами через LinkedIn.
— Но у меня нет доступа к LinkedIn, Роскомнадзор заблокировал его!
— Вы нам не подходите.

***
И не моё, но прекрасное:
Мало кто знает, что буква S в аббревиатуре IoT обозначает "Security".
beldmit: (Default)
После замены AdBlock и AdBlock+ на uBlock Chrome на линуксовом компе перестал тормозить.

Для FB волшебной пилюлей стал FB Purity. Без него баннер в ленте - каждая вторая запись.

Осталось начйти решение для андроидных устройств, а то ЖЖ оттуда читать тяжко.
beldmit: (Программизм)
Удалось осуществить reverse engineering протокола Skype и сделать альтернативный клиент, пока только для текстового режима. Клиент пока только под Windows, но лиха беда начало.

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

Profile

beldmit: (Default)
beldmit

October 2017

S M T W T F S
1234567
8 910 11 121314
1516 17 18192021
22232425262728
293031    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 19th, 2017 11:46 pm
Powered by Dreamwidth Studios