Yellow Leaf
41 subscribers
243 photos
118 links
Всякое около IT-шное.

Связь с автором: @moose_kazan
Download Telegram
Linux со вкусом драников

Наткнулся на интересный проект: ExoLinux. Делают ребята из Беларуси. Обещают с одной стороны совместимость с Debian 13 а с другой явно пишут что "Никаких обращений к зарубежным зеркалам." Пробовал устанавливать на виртуальную машину и на реальное железо. Не получилось. Но в процессе изучения проблемы нашёл много интересного.

Инсталлятор: похож на инсталлятор Debian, но сильно ограничен. Спрашивает про часовой пояс и на выбор только Минск/Москва/Киев. Необходимо задать пароль root и можно создать одного пользователя. Ещё можно выбрать тип установки: сервер/десктоп. Затем уточняет устройство для установки. Потом тупо сносит все разделы на устройстве и создаёт три новых. Ручной разметки диска не предусмотрено. Дальше начинается установка и зависает не закончившись.

Изучение логов показало: сначала запускается bootstrap и он скачивает всё необходимое с deb.debian.org (т.е. всё-таки зарубежные сервера нужны). А потом инсталлятор пытается получить индексы с repo.exolinux.by, делает три попытки, на все получает ошибку 502 и на этом кончается.

Вобщем пока не получилось у меня попробовать систему из дружественной страны.
😢2
МТС и DNS-трафик

Каждый месяц МТС присылает мне на почту счёт. В последнем счёте обнаружил интересное: DNS-трафик тарифицируется отдельной строкой. Подозреваю что это как-то связано с последними новостями про работу DNS в стране.

Отдельно интересны объёмы. На ~5.5GB трафика приходится почти 30MB DNS-запросов. И это я ещё всякие iodine не пробовал использовать на телефоне. Но теперь вот появилось желание попробовать. Надо проверить работу DNS во время белых списков. Iodine штука не быстрая, но если будет работать то почему бы и да?

P.S. Iodine это такая штука для организации сетевых туннелей поверх DNS.
Iodine и белые списки

Попробовал я Iodine на мобильном интернете во время включения "белых списков". Результаты весьма неоднозначные. С одной стороны как я и предполагал - работает. С другой - скорости в 20-200 кбит/с явно не достаточно для работы.

Причём интересно: если использовать Chrome то потоки телеметрии и синхронизации забивают весь канал и открыть какой либо сайт уже невозможно. А если взять браузер попроще, без телеметрии и с блокировщиком рекламы, например Falkon, то хоть и не очень комфортно, но пользоваться можно.

Самая большая боль это настройка. На мобильных устройствах AndIodine является по сути оболочкой для запуска arm64-сборки iodine, но при этом поддерживает не все опции клиента. На Linux плагин для NM так же как и AndIodine сильно ограничен, но можно просто использовать iodine прямо из командной строки.

Ещё интересно что работа туннеля сильно зависит от оператора. Мегафон сильно ограничивает размер DNS-запроса и mtu туннеля получается около 120 байт. Билайн позволил иметь туннель с mtu около 650 байт. С этим уже можно работать.
Грабли с etcnet

В Alt Linux при инсталляции на сервер для управления сетью предлагается использовать etcnet. И вот с ним я столкнулся со странным. Машина с двумя сетевыми картами:

02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. Device 8126 (rev 01)
03:00.0 Ethernet controller: Intel Corporation Ethernet Controller I226-V (rev 04)


После перезагрузки та что от Intel стартует, а та что от Realtek - нет. Запускается после:

modprobe r8169
ifup enp2s0


Ну OK. Выполняю:

echo r8169 >> /etc/modules-load.d/modules.conf


Перезагружаюсь и снова не работает. В итоге проблему решило такое:

echo MODULE=r8169 >> /etc/net/ifaces/enp2s0/options


После этого интерфейс стал подниматься после перезагрузки сам. Почему второй интерфейс (с драйвером igc) не требует подобного и почему не работает вроде бы штатный способ загрузки модуля я пока не разбирался.
Чувствительные данные в репозиториях

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

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

И вот с кредами в репозиториях примерно такая же история. Даже если лениво внедрять нормальные средства то можно просто хранить все чувствительные данные за пределами репозитория и просто ссылаться на них. Т.е. если креды лежат в файле creds.txt то искать его стоит не в корне репозитория, а на уровень выше. В директории за пределами репозитория.

А какие приёмы подобной гигиены вы знаете/используете?
👍2
Удары дронов по ДЦ

Вчера ударили по ДЦ Яндекса в Сасово. Я был в Сасово в июне и меня тогда позабавило что корпуса ДЦ выкрашены в синий и жёлтый цвета. Прямо напрашивается шутка про "Для обеих сторон как-то не патриотичненько". Но речь не об этом.

Сейчас в РФ действует закон 152 ФЗ "О персональных данных", который предъявляет довольно жёсткие требования к размещению тех самых персональных данных. Хранить их можно только на территории РФ и выполняя ряд требований, которые довольно трудно выполнить самостоятельно. И тем кто желает упростить себе задачу предлагается хранить данные в ДЦ с сертификацией под этот самый 152 ФЗ. Их не так много и их адреса хорошо известны. Один из них как раз тот самый ДЦ в Сасово.

Т.е. сложилась ситуация когда с одной стороны большие объёмы персональных данных стали потенциальными целями атак, а с другой - любое хранение персональных данных в более "безопасном" месте может повлечь за собой довольно большие штрафы для бизнеса.

И пока не понятно как можно законно нивелировать риски. Если кто знает - с удовольствием послушаю.
Национальный мессенджер в Wine

Национальный мессенджер запускается в Wine, но небольшой баг с отрисовкой делает его полностью непригодным к использованию. Причём баг воспроизводится с обоими бэкендами: как X11, так и Wayland. Но вот в свежих версиях Wine@Etersoft баг пофикшен и всё работает.

Я в своё время пытался ограничить Linux-версию с помощью apparamor, но или доступы получались слишком широкие, или процесс не запускался. Wine хоть и не является полноценным средством изоляции приложений, но с некоторыми оговорками в этой роли может быть использован.

Вобщем если не подходит веб-версия и нужно именно приложение то можно посмотреть в эту сторону.
Немного чёрного юмора

На работе обнаружили аномалию в статистике начиная с восьмого октября. Стали выяснить кто и что деплоил в этот день. В итоге вспомнили что восьмого октября была атака на ДЦ Яндекса в Сасово.

Грустно шутим что ВСУ задеплоили дрон в Яндекс-Облако...
Молочник против почтальона

Очень давно для отладки всякого использую Postman. Крайне удобная штука. Но для нормальной работы требуется войти в свой аккаунт, и вот время от времени доступ к зарубежным серверам отваливается и работа встаёт. Пришлось отправиться на поиски альтернативы.

Нашёл забавное: Milkman. Написан на Java. С виду не так удобен как Postman, но тут скорее дело привычки. Необходимый для меня функционал есть. Если чего-то не хватило - можно добрать плагинами. Например поддержка GraphQL вынесена в плагин. Подерживается импорт описаний OpenAPI и данных из Postman/Insomnia/Curl. Есть поддержка тем. Позабавила тема Trump: светлая с оранжевыми заголовками.

Вобщем если есть проблемы с Postman то можно присмотреться к Milkman.
👍1
Про борьбу со спамом

Лет пятнадцать назад делали мы один проект. В числе прочего пользователи могли писать друг другу личные сообщения. Интуитивно понятно что очень быстро набежали спамеры. Не то чтобы очень много, но проблему надо было решать.

Пробовали запрещать сообщения со ссылками и словами из чёрного списка - помогало слабо. И тут меня посетила мысль: "Спамерам обычно не отвечают". В итоге придумал примерно такое решение:

На каждое отправляемое сообщение делал так:

$counter = memcached_get($user_id) ?? -1;
if ($counter > MAX_MESSAGE_PER_HOUR) {
abort_sending()
return;
}

fi ($counter < 0)
{ memcached_set($user_id, 1, 3600); }
else
{ memcached_increment($user_id, 1); }


А при получении примерно так:

$counter = memcached_get($user_id) ?? -1;
fi ($counter < 0)
{ memcached_set($user_id, 0, 3600); }
else
{ memcached_increment($user_id, -1); }


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

Проработало решение несколько лет и кончилось вместе с тем проектом. Понимаю что обойти его можно, но в тот момент оно нас просто спасло.
👍3