Между инцидентами
84 subscribers
32 photos
2 videos
52 links
Меня зовут Иван. Это мой канал о системном администрировании, разработке и IT в целом.

- @i_davydoff
- https://davy.page
- https://habr.com/ru/users/Davydoff33/
Download Telegram
Семь бед — один ресет 👌

Представь. Ты сидишь дебажишь повторяющуюся проблему с каким-то сервисом. Читаешь его логи. Смотришь метрики. Пытаешься сопоставить какие-то ошибки в логах с метриками. Пытаешься определить, после чего происходит ошибка, что её вызывает? Смотришь, когда был последний деплой сервиса. Чем новая версия отличается от предыдущей? Ничего не находишь. Думаешь: «Ну ладно, раз на нашей стороне ничего не можем найти, то, может, были какие-то аномалии со стороны более низкоуровневой инфраструктуры в это же время?». Там тоже ничего.

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

Я как-то пришёл к такому решению с consul-esm, это хелсчекер для внешних сервисов Consul. В целом он работает сносно, но бывают у него моменты, когда он начинает делать больше хелсчеков, чем нужно. Типа ты ему прописал в конфиге «проверяй ресурс раз в 10 секунд», а у него в голове что-то стрельнет, и он начнёт проверять его не 1, а 2 раза каждый 10 секунд. И вот как только это начинает происходить, с каждым днём он делает всё больше и больше лишних хелсчеков. Если это вовремя не заметить, то тачка, на которой он запущен, просто тупо помрёт. Либо CPU в полку упрётся, либо оперативка кончится, либо логов от этих лишних хелсчеков станет настолько много, что какой-нибудь logrotate не будет успевать их ротейтить, и они засрут вам весь диск 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Только такие проекты в гитхаб и выкладывайте пожалуйста
👍3😁1
Интересное про SSH

Если вы когда-нибудь пытались дампить SSH-трафик (а вдруг!), то, вероятно, замечали, что пакетов вашим клиентом генерируется на порядок больше, чем вы совершаете нажатий клавиш.

Это происходит из-за фичи "obfuscate_keystroke_timing", которую в 2023 году добавили для борьбы с "keystroke timing attack" (хрен его знает, как это корректно перевести). Суть атаки в том, что когда человек печатает, в задержках между нажатием клавиш есть характерные паузы. Например, для букв внутри слова паузы короче, чем в момент начала нового слова. Соответственно, если достаточно долго собирать тайминги между нажатием клавиш у жертвы, то можно значительно сузить диапазон вариантов для перебора паролей, да и в целом иметь представление о том, что человек делает на своём сервере.

Включенный obfuscate_keystroke_timing добавляет «мусорные» пакеты в трафик, когда этого трафика передается совсем немного (например, когда вы нажали только одну клавишу).

Посмотреть «в живую», как это работает, можно, установив соединение с сервером с повышенным вербоузом (-vvv). После нажатий клавиш вы будете видеть вот такие дебаг-строчки «obfuscate_keystroke_timing: stopping: chaff time expired (23 chaff packets sent)» (количество пакетов может быть разным).

Если таких строчек видеть не будете, то можете попробовать явно включить обфускацию опцией «ObscureKeystrokeTiming=yes». Если строчки появятся, но в них всегда будет «0 chaff packets sent», то, скорее всего, сервер не поддерживает просто эту фичу. Добавлена она была в версии 9.5, сверьте со своей на серваке («ssh -v server», где-то в начале будет вывод «remote software version»).
👍6
Если вас когда-нибудь спросят «что такое DDOS-атака?» – скиньте вот эту картинку
👍3😁1
Менеджер угрожает джуну судом за удаление продового сервиса

Вероятно, фейк, который впоследствии превратится в отличную историю для обсуждения в курилке. Джун в одном небольшом cybersec стартапе по ошибке выполнил «rm -rf» по директории, в которой лежал код работающего продакшен сервиса. Ну и, как обычно, бэкапов нет, полностью восстановить почти невозможно 👍

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

Как результат, CEO компании грозит этому джуну увольнением и судом (😬), если он всё не восстановит. Ситуация какая-то совсем карикатурная.

https://www.reddit.com/r/cscareerquestions/comments/1qjsfv8/accidentally_rm_rfd_a_production_server.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5
Крутая тулза для просмотра логов — lnav

Что по фичам:

🟢 Автоматически мерджит содержимое всех лог-файлов в одно целое. Не нужно скакать по файлам, сверять таймстемпы и т. д. Выполнил lnav ./ и сразу видишь все логи в текущей директории. Отсортированные по времени естественно.

🟢 Умеет читать сжатые логи. Вот за это прям респект, эта фича отлично дополняет предыдущую.

🟢 Автоматически распознаёт в логе ошибки (!) и имеет горячие клавиши для переключения между ними в логах (нажал на «e» — тебя телепортировало к следующей ошибке).

🟢 Фильтрация по логам (в том числе используя RegExp). Вот так вот взял и отфильтровал логи своего nginx'а только по 4xx ошибкам: 'filter-in "4\d\d"', если надо ещё фильтр накинуть, такую же команду ввел, и вот у тебя уже фильтрация по двум параметрам. Если надо какой-то удалить или временно выключить, нажал TAB и сделал со своими фильтрами, что тебе нужно.

🟢 Автораскраска логов. Ну тут понятно, я думаю, что это такое. Большинство логов однотонные, и вот вместо того, чтобы смотреть в эту мешанину, как герой из «Матрицы», в lnav части строк и отдельные символы логически (на сколько это возможно) разделены разными цветами, чтобы их можно было визуально отделять друг от друга.

https://lnav.org/features
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Ну было же?
🍾2💯1
У меня сейчас как раз опять началась фаза тестирования очередного линукс-дистрибутива в надежде на то, что он будет работать у меня «как часики». Взял на этот раз как будто бы суперстабильный дистриб, посмотрим, сколько он проживёт (пока не буду говорить какой).

Последний, которым я пользовался (Omarchy) не прожил и квартала 😊. После одного из обновлений поломался интернет — скорость порезалась до нескольких десятков килобит в секунду. Махнул тогда рукой и временно пересел на винду.
Please open Telegram to view this post
VIEW IN TELEGRAM
1😢1
Продолжаем тренироваться 💪

Раз пост про бандита так зашел, то вот ещё один проект из той же оперы. 42 уровня-челленджа на знание базовых Linux-команд. find, grep, ls, cat, sed и так далее.

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

Понадобится ли вам это в работе? Я думаю, что какая-то часть точно нет, а если и понадобится, то к тому моменту вы уже её забудете.

Но тем не менее позалипать в это часик другой очень интересно. Особенно если готовитесь к какому-нибудь собесу 💼

https://cmdchallenge.com
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Помню мне на одной из первых работ сказали: «Мы пока на твоём ноуте впн не можем настроить, поэтому работай пока на нашем калокомпе. Это и тебе лучше, не будешь батарейку своего ноута прожигать 👍»
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6
Один пайплайн вместо тысячи (питон) слов

Встала передо мной недавно задача — автоматизировать создание некоторых клауд-сущностей, которые катятся через терраформ.

Первая мысль — ну щас какую-то микроапишку напишу на питоне, которая будет использовать какой-нибудь GitPython и коммитить нужные мне изменения в гит-репозиторий. Но, честно признаться, как только мне эта мысль пришла в голову, я сразу представил, как геморройно будет реализовать это чисто питон-кодом. То есть то, что башем делается буквально в несколько строк, в питоне превратилось в целую гору кода. А помимо этого эту апишку же надо было бы и запускать где-то. То есть писать для неё ещё хелмчарт, деплоить в какой-то кластер и ещё следить за уязвимостями и периодически обновлять образ контейнера.

В общем, как-то много всего для небольшой автоматизации.

В какой-то момент до меня дошло, что всё это можно реализовать за полдня (перерывы на кофе учтены) через Gitlab CI/CD пайплайны. То есть я создаю репу (2 клика), описываю там 2 джобы, которые мне нужны (строк 80), создаю токен для запуска пайплайнов через API (2 клика) и всё! Ну, в общем, так я и поступил. В прикреплённой картинке как раз показаны темплейты для джоб, в которых происходит вся логика и вносятся изменения в репу. А дальше (уже не стал показывать на скрине) есть пара джоб, которые инклюдят в себя этот темплейт и описывают переменные для своего окружения (dev, prod).
👍4
«ЧатГПТ, не используй эмодзи в коде! Мне уже перед коллегами стыдно»
😁4🔥1
Что будет с Linux после ухода Торвальдса?

Вопрос, который, даже чисто ради интереса, интересует достаточно много человек. И вот частично ответ на него был сформулирован и закомичен в директорию документации Linux в виде файла с названием conclave.rst.

В течение 72 часов после того, как Линус не сможет больше поддерживать основной репозиторий, организатор последнего Maintainer Summit (или председатель Linux Foundation Technical Advisory Board (LF TAB) в качестве резерва) откроет обсуждение с участниками последнего Maintainer Summit и членами LF TAB (выбранные участники комьюнити, которые консультируют Linux Foundation). Во время обсуждения будут приняты какие-то решения, и в течение двух недель участники сообщества через email-рассылку ksummit@lists.linux.dev будут уведомлены о том, что будет дальше. Всё.

В теории во время обсуждения могут быть избраны новые (сомневаюсь, что это будет кто-то один) меинтейнеры основного репозитория Linux, но об этом в документе не говорится. В нём также не говорится о самом интересном лично для меня: в случае голосования за «следующего Линуса» будет ли иметь место «вес голоса» и будет ли чей-то голос весомее других.

То есть пока что только зафиксировали текстом, кто будет организовывать дискуссию и кто будет в ней участвовать.
Chrome и HTTP/2

Наткнулись на интересную «особенность» хрома при работе с HTTP/2 соединениями.

В общем, какая у нас база: если вы откроете сайт, который использует HTTP/2, и в другой вкладке ещё раз откроете этот же сайтик, то на обе вкладки у вас будет шариться одно TCP соединение. В целом прикольно, но, зная, как работает HTTP/2, вау не случается.

Но!

Представим, что у вас есть сайты «a.ru», работает на HTTP/2, и «b.ru», работает на HTTP/1.1. Два отдельных сайта со своей логикой, своей тематикой, клиентами и т.д. Но на одном IP-адресе. Если вы в одной вкладке сначала откроете «a.ru», а потом в другой попытаетесь открыть «b.ru», то поймаете ошибку (скорее всего, 404).

Почему? Да потому что хром уже открыл HTTP/2 сессию с «a.ru», у которого IP-адрес такой же, как и у «b.ru». Соответственно, он не считает нужным открывать новую сессию, потому что «ну IP-адрес-то один и тот же», и все запросы, которые должны были идти в «b.ru», идут в сессию «a.ru» 😊.

При этом если «не дёргать» какое-то время вкладку c «a.ru», то сессия протухает и появляется возможность нормально пользоваться сайтом «b.ru».

Такое поведение воспроизводится в браузерах на базе хрома — если попробовать проверить это же, например, в Safari, то всё будет окей.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯5👍1
Увидел в интернетах вот такой комментарий под очередным ИИ-инструментом.

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


Не в бровь, а в глаз.
👍4
Публичные VPN-сервисы врут о своих локациях

Вы не факт, что пользовались, но наверняка много раз видели VPN-сервисы (хотя бы их рекламу), у которых и в США, и в Великобритании, и в Бразилии, и в Нидерландах, и в Швейцарии, и ещё в куче других стран есть свои сети. Как они поддерживают такую большую инфру в таком количестве стран? Удивительно!

На самом деле подход у большинства из них существенно проще. Ребята из ipinfo выяснили, что многие публичные VPNы, заявляющие о наличии сетей в 100+ странах, на самом деле физически держат оборудование большинства из них в одном или нескольких дата-центрах США или Европы 😊. Как такое может быть? Они просто врут ARIN, RIPE и провайдерам геоданных, предоставляя тем ложную информацию о расположении их IP-адресов.

Вскрывается это путём сравнения RTT (Round-Trip Time) из разных локаций до IP-адреса VPN. Для примера: если у VPN'а заявленная локация — это Сомали, а RTT от Лондона до неё 0.32ms, то, скорее всего, где-то в Европе этот VPN в реальности и находится.

https://ipinfo.io/blog/vpn-location-mismatch-report
Please open Telegram to view this post
VIEW IN TELEGRAM
💯3
Меинтейнер SUDO ищет финансирования

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


Написал Тодд Миллер на домашней странице своего блога.

С 2010 по 2024 год главным спонсором sudo выступал работодатель Тодда — компания Quest Software. Спонсорство прекратилось, вероятно, в связи с уходом Тодда из дочерней компании Quest'а в 2024 году.

Сколько ещё на столько важного опенсурс софта поддерживается сейчас одним единственным разработчиком за бесплатно? Вопрос для размышления.

Касательно sudo, у нас уже есть замена в виде sudo-rs. По сути, тот же самый sudo, но переписанный на Rust и поддерживающийся фондом Trifecta Tech. Контрибьюторов в фонде достаточно, деньги (вроде как) имеются, да и сам Тодд в разговоре с The Register сказал, что поддерживает связь с разработчиками sudo-rs и верит, что они идут в верном направлении.
Телегу сегодня официально начали душить. И по невероятному совпадению сегодня же в максе стало доступно создание каналов для простых смертных.

Видимо время пришло. Для тех, кому интересно читать, что я тут публикую, и у кого (почему-то) всё еще не настроен ВПН, я создал канал в этом великолепном мессенджере 😬

Канал в телеграме продолжит жить, но те же самые посты будут дублироваться в макс.

https://max.ru/join/ccIT52cWJG2Yss0Y8UHJocQj8PwIjvbIRC7yzGwP0Wk
Please open Telegram to view this post
VIEW IN TELEGRAM
🤬4😢3
В OCI-реестрах можно хранить вообще всё

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

Например, как-то рядом, связно с образом, хотелось бы хранить и его SBOM (Software Bill of Materials) и подписи. Помимо этого есть ещё всякие Helm-чарты, которые также неплохо было бы поместить где-то по соседству.

Так появился ORAS — инструмент-воркэраунд, который позволяет хранить в OCI-реестрах не только образы, но и другие артефакты. Список приложений, которые поддерживают ORAS, можно посмотреть тут. Среди них, например, есть вышеупомянутый Helm, Inspektor Gadget (коллекция дебаг-тулов для куба) и OpenTofu (форк терраформа).

Но на воркэраунде никому долго жить не хочется, поэтому в спецификации OCI 1.1, вышедшей в ещё 2024 году, добавили две важные штуки. Первое — поле artifactType, в котором нативно можно указать тип артефакта, без «костылинга». Второе — добавили возможность связывать артифакты друг с другом, то есть у вас теперь тот же Helm-чарт может быть связан с образом, и, конечно же, все связанные с образом артифакты можно запросить по API.

До сих пор не все тулы и реестры поддерживают OCI 1.1, но однажды...

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

🟢WASM Модули
🟢Docker Compose YAML
🟢Helm чарты
🟢Gatekeeper политики
🟢Желаемый стейт приложения в Flux
🟢Homebrew bottles
🟢Подписи, SBOM и тд (через Cosign, Notation и другие тулы)
Please open Telegram to view this post
VIEW IN TELEGRAM