Linux Ninja
3.42K subscribers
865 photos
143 videos
1 file
858 links
Linux Ninja – ваш гид по миру Linux! Лайфхаки, фишки и мощные команды для настоящих мастеров CLI.
Download Telegram
Из Linux удаляют огромное количество драйверов устройств… потому что разработчики ядра Linux не хотят разбираться с потоком сгенерированных ИИ патчей и "ИИ-багрепортов" по этим драйверам.

Среди удаляемых драйверов Linux – драйверы для мышей, Ethernet-карт, любительского радиооборудования, NFC и других устройств, включая legacy-железо ещё с 2002 года.

Другими словами: ИИ/LLM напрямую приводят к тому, что Linux начинает поддерживать заметно меньше оборудования.

«Давайте удалим это, раз LLM уже начинают туда лезть».


«Эти старые драйверы — LLM-покалипсис».


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


✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Как проиндексировать весь исходный код Linux Kernel (28 млн строк) для AI-агента всего за 3 минуты?
Нужно перестать заставлять агента читать файлы по одному.

Недавно вышел любопытный open-source проект — codebase-memory-mcp.
Это движок для анализа кода, который заменяет обычный поиск по файлам на высокоскоростной граф знаний, построенный на AST.

Самое интересное здесь — исследование, на котором основан проект.
Согласно результатам из статьи arXiv:2603.27277, где систему тестировали на 31 реальном репозитории, такой подход даёт:
→ снижение расхода токенов на структурные запросы на 99%
→ 83% качества ответов на сложных задачах
→ в 2,1 раза меньше вызовов инструментов

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

Отдельный плюс — всё работает полностью локально.

Без Docker, Ollama и API-ключей.
Скачиваешь бинарник, перезапускаешь агента — и можно работать.
Интересно, насколько сильно такие индексы смогут сократить расходы на AI-разработку в ближайшие годы.

https://github.com/DeusData/codebase-memory-mcp

✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
SSH-туннели: локальный и удалённый проброс портов

SSH – технология старой школы, которая до сих пор остаётся невероятно полезной. Всего одной командой ssh можно:

- Получить доступ к приватным сервисам внутри VPC через bastion host
- Открыть в браузере порт localhost на удалённой машине
- Пробросить сервис из homelab наружу через публичный сервер
- Превратить SSH-соединение в SOCKS-прокси для всей приватной сети


В этом обновлённом туториале разбирается SSH port forwarding с диаграммами, практическими лабораторными заданиями и наглядной шпаргалкой, которая поможет понять разные типы SSH-туннелей и запомнить нужные флаги:
https://labs.iximiuz.com/tutorials/ssh-tunnels 🍆

✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤‍🔥2
Реверс-инжиниринг и извлечение прошивки из смарт-часов — Damien Cauquil

https://blog.quarkslab.com/modern-tale-blinkenlights.html

✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
nsntrace — инструмент для захвата трафика нужного приложения в Linux.

С помощью создания виртуальных интерфейсов и отдельного сетевого пространства имён, nsntrace запускает нужное нам приложение, и выполняет трассировку трафика только для него используя libpcap. Результат работы может быть либо перенаправлен в другое приложение, либо в файл, который можно будет прочитать любой стандартной утилитой, умеющей работать с pcap.

1. Ставим nsntrace из репозитория:

# apt install nsntrace
# dnf install nsntrace


2. Пробуем выполнить захват трафика для обычного wget, который обращается к сайту. По-умолчанию, дамп будет иметь имя nsntrace.pcap:

# nsntrace --use-public-dns wget -q -O /dev/null https://sysadmin.pm/
Starting network trace of 'wget' on interface enp1s0.
Your IP address in this trace is 172.19.28.255.
Use ctrl-c to end at any time.
Finished capturing 131 packets.


Аналогично для PHP скрипта, например:

# nsntrace php -f index.php
Starting network trace of 'php' on interface enp1s0.
Your IP address in this trace is 172.19.213.255.
Use ctrl-c to end at any time.
Finished capturing 52 packets.


3. Работаем с дампом привычной утилитой, в данном случае tcpick:

# tcpick -r nsntrace.pcap 
Starting tcpick 0.2.1 at 2023-04-28 12:28 MSK
Timeout for connections is 600
tcpick: reading from nsntrace.pcap
1 SYN-SENT 172.19.28.255:40638 > 104.244.78.134:https
1 SYN-RECEIVED 172.19.28.255:40638 > 104.244.78.134:https
1 ESTABLISHED 172.19.28.255:40638 > 104.244.78.134:https
1 FIN-WAIT-1 172.19.28.255:40638 > 104.244.78.134:https
1 FIN-WAIT-2 172.19.28.255:40638 > 104.244.78.134:https
1 RESET 172.19.28.255:40638 > 104.244.78.134:https
tcpick: done reading from nsntrace.pcap

131 packets captured
1 tcp sessions detected


Собрать nsntrace из исходников, при необходимости можно так:

# apt install automake docbook-xml docbook-xsl iptables libnl-route-3-dev libpcap-dev pkg-config xsltproc git make gcc
# git clone https://github.com/nsntrace/nsntrace
# cd nsntrace/
# ./autogen.sh
# ./configure
# make


Github проекта: https://github.com/nsntrace/nsntrace

✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
Попался сегодня пост про traceroute, и вспомнил, как часто эта штука реально спасает, когда сеть ведёт себя как-то странно.

Traceroute по сути делает простую вещь: отправляет пакеты с разным TTL и смотрит, где они умирают. Каждый роутер, на котором TTL падает в ноль, шлёт ответ типа "я тут, пакет сдох" — и так собирается маршрут до цели.

Когда пакет наконец добирается до сервера — прилетает другой ICMP-ответ, и на этом всё заканчивается.

Утилита умеет работать по-разному в зависимости от системы:

Linux/macOS: обычно гоняет UDP
Windows: использует ICMP, почти как ping, но smarter
TCP: отдельная версия, которая пробивается туда, где ICMP/UDP заблокированы фаерволами — например, на порты 80/443

Команды:

Linux:

traceroute google.com


Windows:

tracert google.com


Зачем вообще это запускать?

- понять, на каком этапе всё разваливается
- увидеть, где растёт задержка
- проверить маршрут до сервисов, клаудов, VPN или CDN

✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2🔥2
Хватит качать четырёхгигабайтные ISO, чтобы создать Linux-ВМ. 🔨

Тебе не нужен инсталлятор, GUI или мастер в стиле Next > Next > Finish. Нужна просто директория с файлами.

Вот как я собираю кастомные, немного колхозные, но загрузочные Debian-ВМ примерно за минуту с помощью debootstrap.

По сути, любая дистрибуция это ядро плюс набор юзерспейс-бинарей. Если разложить эти файлы в нужные места на диске, ядро спокойно с этим заработает.

Инструмент, о котором почти никто не думает

Обычно мы воспринимаем VM-образы (.qcow2) как чёрный ящик. Но qemu-nbd позволяет примонтировать виртуальный диск как реальное устройство — например, /dev/nbd0. После этого можно форматировать и монтировать его как обычную флешку.

"Установка"

Когда диск смонтирован, ты ничего не устанавливаешь. Ты просто распаковываешь систему:

sudo debootstrap stable /mnt/disk


Команда скачивает минимальный набор бинарей, нужных для Debian, и кладёт их в эту директорию. Никаких мастеров.

Загрузка

Я запускаю VM через QEMU, подкидывая ядро напрямую, полностью обходя загрузчик:

qemu-system-x86_64 -kernel ... -append "init=/bin/bash ..."


На последнем скриншоте виден Kernel panic — Attempted to kill init! И это нормально. Я сказал ядру выполнить простой скрипт. Скрипт завершился. init вышел. У ядра не осталось задач, поэтому оно упало. Миссия выполнена, просто странным способом.

Такой подход удобен для CI/CD или быстрого прототипирования. Он показывает простую мысль:
если ты понимаешь файловую структуру — система принадлежит тебе.


✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Когда я впервые открыл Wireshark, я просто завис.

Пакеты повсюду. IP-адреса. Порты. Протоколы.

Мне казалось, что нужно понимать вообще всё.

А потом я понял главное:

Не пытайтесь анализировать каждый пакет.

Сначала сформулируйте вопрос.

Что именно я ищу?

→ необычный адрес назначения?
→ повторяющиеся соединения?
→ подозрительный протокол?
→ трафик, который выглядит ненормально?

Вот тогда Wireshark наконец начал становиться для меня понятным.

Анализ пакетов снова вернул меня к основам сетей.

TCP. UDP. DNS. Порты. IP-адреса.

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

Инструмент не заменяет фундаментальные знания.

Наоборот, именно фундамент помогает понять, как правильно пользоваться инструментом.

Поэтому я всё меньше пытаюсь запоминать отдельные функции Wireshark и всё больше учусь самому процессу анализа сетевого трафика.

✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2
Готовитесь к CKS в 2026 году?

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

Больше всего отдачи даст практика в этих направлениях:

• NetworkPolicy + CiliumNetworkPolicy

Default-deny, выборочный ingress/egress и политики Cilium. Cilium прямо входит в текущую программу.

• Pod Security Admission

PSP больше нет. Нужно уверенно работать с метками namespace вроде:

pod-security.kubernetes.io/enforce: restricted

• AppArmor + seccomp

Применять профили, понимать режимы enforcement и уметь написать точечный seccomp-профиль, который блокирует конкретный syscall.

• CIS hardening

Использовать отчёты kube-bench, чтобы находить и исправлять проблемы на control plane и worker-нодах.

• RBAC + Secrets

Доступ по принципу минимальных привилегий, риски service account, шифрование данных на диске и расследование того, кто получал доступ к Secret.

• Безопасность цепочки поставки

Минимальные базовые образы, SBOM, сканирование образов, разрешённые реестры, подпись и проверка образов, ревью Dockerfile.

Помимо Trivy стоит практиковаться с Kubesec и KubeLinter.

• Runtime security

Поведенческое обнаружение в стиле Falco, неизменяемые контейнеры, audit logs и расследование инцидентов.

• Изоляция + шифрование

RuntimeClass и изолированные контейнеры, а также шифрование трафика между Pod через Cilium или Istio mTLS.

• TLS + доступ к API

Безопасный Ingress, ограничение доступа к API, защита metadata и endpoint-ов нод, а также проверка бинарников платформы.

Главное преимущество на CKS — скорость.

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

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

NetworkPolicies → PSA → RBAC/Secrets → CIS → runtime detection

K16S — бесплатная лаборатория для подготовки к CKA/CKS, где можно реально ломать kubelet, systemd, containerd, static pods, etcd и сертификаты.

Не kind.

#cks #kubernetes #cloudnative #containersecurity #devsecops

✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Линус Торвальдс говорит, что крупные обновления ядра Linux становятся "новой нормой", отчасти из-за AI-инструментов.

Предстоящий релиз Linux 7.2 получился необычно большим, и Торвальдс признаёт, что не особо рад тому, насколько сильно он разросся

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

Несмотря на масштаб обновления, Торвальдс не видит в нём ничего особенно тревожного и ожидает, что Linux 7.2 будет двигаться к релизу по плану

👀

✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Самой большой ошибкой Elastic была не смена лицензии. А отказ от идеи, которая впоследствии стала Grafana.

В 2013 году Торкель Эдегор был никому не известным разработчиком в Orbitz. Ему нужны были нормальные дашборды для временных рядов и метрик.

Он предложил команде Kibana отвязать её от Elasticsearch, чтобы она могла работать и с другими источниками данных.

Ему отказали.

Тогда он сам сделал форк.

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

К концу 2014 года он стал сооснователем Grafana Labs. В 2021 году компания привлекла $220 млн всего за один раунд.

Сегодня Grafana работает на рынке объёмом примерно $20 млрд. А среди DevOps-инженеров, которые каждый день работают с дашбордами, Grafana, пожалуй, даже более узнаваемое имя, чем Elastic.

Затем в 2021 году уже сами основатели Grafana перевели свои основные проекты с Apache 2.0 на AGPL, чтобы облачные гиганты не могли бесплатно перепродавать их работу.

MongoDB и Elastic к тому моменту уже прошли через ту же проблему и получили серьёзную критику за то, как они с ней справились.

Grafana — нет. Сообщество открытого исходного кода назвало их подход справедливым, прозрачным и уважительным.

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

Возможно, это самое дорогое «нет» в истории открытого исходного кода.

✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Awesome List собирает большую подборку статей, технических разборов и научных работ по кибербезопасности, посвящённых исследованию и эксплуатации уязвимостей.

https://github.com/0xor0ne/awesome-list

✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Быстрый совет по Linux

Хотите проверить неудачные попытки входа на сервер?

Запустите:
lastb


Команда читает /var/log/btmp и выводит список всех неуспешных авторизаций

🟠Почти всегда это боты, подбирающие пароли к SSH. Такие атаки могут стать фатальными, если включён вход по паролю и используется слабый или распространённый пароль

🟠 Решение: отключите вход по паролю и используйте только SSH-ключи

🟠Рекомендуется отключить парольную аутентификацию и использовать только SSH-ключи

✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
Совет по Linux

Vim умеет откатывать изменения по времени, а не только по шагам.

Вместо того чтобы жать u много раз, можно использовать:
:earlier 2m


Это откатит буфер к состоянию, в котором он был 2 минуты назад. Очень удобно после массовых правок.

Нужно вернуть часть изменений? Можно переместиться вперёд по времени:
:later 30s


Эта команда повторно применит правки, сделанные за последние 30 секунд. Можно представить дерево undo в Vim как временную шкалу, по которой можно перемещаться вперёд и назад.

Указывать время необязательно. Если его нет, Vim воспринимает число как количество шагов undo.

Например, чтобы откатить последние 3 изменения:
:earlier 3


А затем вернуть одно изменение:
:later 1


Если хочешь превратить свою сессию Vim в машину времени, включи:
:set undofile


Это сохранит историю undo на диск, и ты сможешь откатывать изменения даже после закрытия и повторного открытия файла

✈️ Linux Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥3