Обновить
352.41

Linux *

Пишем под *nix

Сначала показывать
Порог рейтинга
Уровень сложности

Настраиваем безопасный DNS: приватность, DNSSEC и DoT на практике

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели14K

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

В этой статье покажу, как настроить безопасный и приватный DNS-резолвер на базе Unbound:

Читать далее

Как я сделал рабочий pgAdmin4 Desktop для Arch Linux и почему это оказалось сложнее, чем кажется

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели8.9K

pgAdmin4 - де-факто стандартный GUI для PostgreSQL.
И при этом на Arch Linux его Desktop-версия годами находится в полурабочем состоянии.

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

Если вам тоже надоело чинить pgAdmin после каждого обновления Python или Electron - это для вас.

Читать далее

Физик проанализировала более 100 000 «исправленных» багов ядра Linux

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели30K

В вашем ядре сейчас есть баги, которые не найдут в течение многих лет. Я знаю это, потому что проанализировала 125 183 из них, каждый в 20-летней git-истории ядра Linux помечен прослеживаемым тегом Fixes:.

Средний баг ядра существует 2,1 года. А некоторые подсистемы намного хуже: драйверы CAN‑шины [шины сети контроллеров] — в среднем 4,2 года, работа с сетью SCTP4,0 года. Самый долгоживущий баг в моём наборе данных — переполнение буфера в ethtool — сохранялся в ядре 20,7 лет. Подробно остановлюсь на утечке памяти из‑за подсчёта ссылок в netfilter, существовавшей 19 лет.

Я создала инструмент, который выявляет 92% исторических багов в отложенном тестовом наборе данных о времени коммита. Вот что я узнала.

Читать далее

Почему системные вызовы обходятся дорого: углубляемся в дебри Linux

Время на прочтение20 мин
Охват и читатели13K

Здесь рассказано, как именно Linux обрабатывает системные вызовы в архитектуре x86-64, и почему при профилировании они выглядят как дорогостоящие операции.

Читать далее

Практическое применение eBPF: serverless-платформа с поддержкой TCP-приложений

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.8K

Привет! Меня зовут Дима Веселов, уже три года я развиваю облачные технологии в команде Evolution App Services как техлид. Мой путь начинался с классической backend-разработки на Python, но со временем я все глубже погружался в то, как работает инфраструктура, сетевые протоколы, Kubernetes. Сегодня я хочу рассказать, как eBPF буквально в два присеста позволяет делать то, что раньше требовало невероятных усилий.

Кому будет полезен этот материал? В первую очередь разработчикам PaaS-платформ, DevOps-инженерам и архитекторам, которым тесно в рамках классического HTTP-only serverless. Расскажу, как обеспечить масштабирование с нуля для любых TCP-приложений без переписывания их кода.

Читать далее

Защита для домашнего сервера — настраиваем защиту через VPN-доступ за один вечер

Уровень сложностиПростой
Время на прочтение25 мин
Охват и читатели20K

Показываю, как за один вечер настроить WireGuard VPN с Nginx и закрыть сервисы от всего интернета, без сложной сетевой инженерии.

Читать далее

Продолжение темы доступа к ресурсам сети интернет из домашней сети Tor + Privoxy + Squid: HTTP и SOCKS5 proxy

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели668

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

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

Дополнительно потребовалось:

Читать далее

Linux 6.19: итоги шестой ветки и переход к 7.0. Что нового и что изменилось?

Время на прочтение6 мин
Охват и читатели9.1K

Итак, спустя два месяца работы вышел релиз ядра Linux 6.19. В него вошло больше 15 тысяч исправлений от 2000 разработчиков. Патч получился солидным — больше 50 мегабайт, изменения затронули почти 14 тысяч файлов. Основная часть работы традиционно пришлась на драйверы устройств, архитектурный код и сетевой стек. А еще появилось несколько заметных изменений, которые касаются серверных нагрузок, виртуальных сред, сетей и встроенных девайсов. 

Кстати, сразу после этого анонса Линус Торвальдс объявил о переходе к ветке 7.0. Почему и зачем? Давайте разбираться. 

Читать далее

Пошаговое руководство: Установка отказоустойчивого кластера Kubernetes 1.35 с помощью kubeadm на Ubuntu 24.04

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели6.3K

Полное руководство по развертыванию высокодоступного кластера Kubernetes 1.35 на Ubuntu 24.04

Эта подробная техническая статья представляет собой пошаговое руководство по созданию отказоустойчивого кластера Kubernetes версии 1.35 с использованием утилиты kubeadm. В руководстве рассматривается развертывание производственного кластера с тремя master-нодами и тремя worker-нодами, что обеспечивает высокую доступность и отказоустойчивость.

Читать далее

ОС linux на btrfs subvolume. Изобретаем велосипед вместо дистрибьюторов

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.8K

Не все инсталляторы linux могут установить систему на btrfs subvolume. Ни один инсталлятор не может установить систему с применением nocow и compress только для определенных subvolume.

На примере Astra linux 1.8.4 с максимальным уровнем защищенности (включен МКЦ и МРД) и написанных мною скриптов для автоматизации я покажу, как перенести установленную систему на btrfs subvolume, а также установить nocow только у необходимых subvolume. Дополнительно будет описан второй скрипт для создания и восстановления снимков.

Читать далее

Партизанский Telegram: как поднять прокси-невидимку, прикидываясь онлайн-магазином

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели75K

Привет, Хабр!

Это продолжение серии про обход блокировок Telegram. В первой части мы подняли MTProxy на nineseconds/mtg с Fake TLS. Работает, подключаешь и забываешь. Но есть нюанс.

Fake TLS маскирует протокол. DPI смотрит на пакеты и видит обычный TLS к 1c. Всё красиво, пока к вашему серверу не придёт краулер и не попробует на него зайти.

Читать далее

Событийный цикл в asyncio: как Python-код работает поверх механизмов Linux

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели13K

Большая статья для тех, кто, как и я, споткнулся об asyncio и так не разгадал до конца «магию» событийного цикла. Попробовал распутать этот клубок через подробный рассказ (в как можно более доступной форме) о внутренних механизмах Линукса и самого asyncio, которые лежат в основе событийного цикла. К концу статьи, надеюсь, магия исчезнет, а взамен придет ясное понимание фундамента. Статья будет полезна и тем, кто работает с asyncio на других платформах.

Погружаемся

XDP + Jenkins: высокоскоростной фильтр по TLS-отпечаткам

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели8.2K

В период массового импортозамещения средств защиты от DDoS один из провайдеров перевёл свои центры очистки трафика на отечественное решение. Помимо стандартной защиты на уровне L4, провайдер позиционировал его нам как эффективную защиту от L7-атак за счёт механизма фильтрации по TLS-отпечаткам (тогда это был ещё JA3). Однако на практике мы показали, что рандомизация параметров отпечатка (cipher suites, extensions, порядок) позволяет обойти этот механизм и существенно снижает его эффективность против L7-атак. Стоит ли использовать механизмы защиты по отпечаткам JA3/JA4, зная о возможности обхода? Да, стоит. Процесс обхода требует от атакующего значительных ресурсов — кастомного TLS-клиента для генерации уникальных отпечатков. При дополнительной настройке, например, добавлении счётчика с разными лимитами для новых и известных отпечатков (более высокие лимиты для «белых» отпечатков), можно добиться высокой эффективности против ботовых L7-атак (флуд от ботов с повторяющимися отпечатками).

 В этой статье мы реализуем защиту на основе фильтрации TLS-отпечатков, вдохновлённую подходом JA4, но в упрощённой версии FST1 (по отсортированным cipher suites с использованием Jenkins-хэша). Почему не полноценный JA4? Из-за жёстких ограничений eBPF (ограниченный стек, запрет на сложные циклы, отсутствие динамической памяти и строгие правила верификатора ядра) реализация полного JA4 (с учётом всех расширений, ALPN и других параметров) становится крайне сложной.

Читать далее

Ближайшие события

Изучаем, как работает клавиатура в Linux, и пишем шуточный модуль ядра

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели18K

Часто в учебной литературе по Linux приведены скучные и неинтересные примеры написания модулей ядра. Я решил исправить этот пробел и показать, что разработка небольшого модуля — это задача под силу многим, если понимаешь базовые принципы разработки программ.

Читать далее

Настройка автоматической архивации отчетов Matomo на сервере

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели4.7K

В прошлой статье я закончил полноценную настройку сервера сбора событий и тегов Matomo. Кроме того, я дал наглядную методику расчета нагрузки, исходя из посещаемости ресурса, который вы планируете отслеживать. Сегодняшняя статья из разряда оптимизационных, она нужна только для профессионалов, которые тонко настраивают свои серверы для отслеживания высоконагруженных ресурсов. Важно сразу обозначить границу: эта настройка почти не влияет на маркетологов и аналитиков в интерфейсе Matomo, но радикально воздействует на сервер, базу данных и разработчиков, которые поддерживают всю эту инфраструктуру. По сути, мы переводим Matomo из реактивного режима («пользователь зашел - система начала считать») в предсказуемый серверный процесс с контролируемой нагрузкой.

Читать далее

Индикация смены раскладки клавиатуры в виде лампы с RGB-светодиодом для Gnome

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели10K

Этот cказ о том, как мне надоело приглядываться к раскладке клавиатуры, и я решил проблему попутно освоив нестолько фичей в программировании и не только

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

Читать далее

Самодельный NAS на ARM. Часть 1

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели25K

В качестве хобби-проекта я захотел собрать простейший домашний NAS на 7 дисков на базе одноплатного компьютера.

В данной статье я расскажу о «железной» части проекта: список компонентов для сборки, корпус, нюансы при сборке, установка операционной системы.

Читать далее

Опыт использования Линукс смартфона. Ubuntu Touch на Xiaomi Poco X3 NFC

Время на прочтение3 мин
Охват и читатели46K

В общем то решил я как-то попробовать перейти на Linux phone. Но решил сделать это тестово и дешевым способом, купил себе Xiaomi Poco X3 NFC за 5 тыс. руб на Авито, хорошенько потанцевал с бубнами и накатил себе Ubuntu Touch.

Читать далее

far2l и буфер обмена: ускоряем bracketed paste

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели11K

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

Поговорим о скорости. А точнее — о том, как мы заставили far2l мгновенно «проглатывать» большие объемы текста из буфера обмена терминала, даже если вы сидите через медленный SSH на сервере, где нет иксов.

Читать далее

Установка GrapheneOS через терминал Debian-based Linux

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели11K

О том, как установить GrapheneOS без браузера через командную строку, используя ПК на Debian или его деривативах.

Читать далее