Admin Future
241 subscribers
50 photos
1 video
4 files
87 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
🛡️ Security: «Канарейки» в конфигах — узнай о взломе раньше хакера 🐤

Как понять, что злоумышленник уже скачал твои дампы или копается в твоем GitLab? Используй Canary Tokens (десепшн-технологии). Это «приманки», которые выглядят как реальные пароли или ключи, но при попытке их использовать — тебе прилетает алерт.

Техническая суть:
Ты создаешь фейковый файл (например, id_rsa, kubeconfig или AWS Access Key) и кладешь его в «соблазнительное» место. Как только кто-то попытается им воспользоваться, сервер-приемник зафиксирует IP и время обращения.


Команда для проверки (пример с DNS-токеном):

# Создаем уникальный домен-приманку через сервис (например, canarytokens.org)
# Если кто-то выполнит резолв этого имени:
host secret-token-unique-id.canarytokens.com
# Тебе тут же упадет письмо/алерт с IP того, кто это сделал.

Админский совет: Подложи такой «токен» в папку .ssh или в переменные окружения CI/CD. Если админ туда не лазил, а алерт пришел — поздравляю, у вас «гости», пора включать план реагирования.

#security #infosec #canary #hacking #intrusiondetection #sysadmin #admin_future
🎓 Собеседование сисадмина. Выпуск #6: Базы данных (Reliability & Scalability)

Привет, коллеги! Сегодня разберем три вопроса, которые проверяют твое понимание того, как данные «живут» на дисках и в сети.

Вопрос 1: «Что такое репликация и в чем разница между Synchronous (Синхронной) и Asynchronous (Асинхронной) репликацией?»

Ответ новичка: «Репликация — это когда данные копируются на другой сервер. Синхронная — это быстро, асинхронная — медленнее».
Ответ инженера:
Репликация — это механизм синхронизации данных между Master (Writer) и Replica (Reader).
* Асинхронная: Мастер записывает данные и тут же подтверждает успех клиенту, не дожидаясь реплики.
* *Плюс:* Максимальная скорость.
* *Минус:* Риск потери данных при падении Мастера (те миллисекунды данных, что не успели улететь на реплику).

* Синхронная: Мастер ждет, пока реплика подтвердит получение данных, и только потом отвечает клиенту.
* *Плюс:* Гарантия сохранности данных.
* *Минус:* Если реплика «залагает» или упадет сеть — встанет и запись на Мастере.


Вопрос 2: «Что такое индексы в БД, и почему нельзя просто навесить их на каждую колонку таблицы "на всякий случай"?»

Ответ новичка: «Индексы нужны для ускорения поиска. Если их много, то всё будет летать».
Ответ инженера:
Индекс — это отдельная структура (обычно B-Tree), которая позволяет не сканировать всю таблицу целиком.
* Проблема: Каждый индекс занимает место на диске. Но главное — любой индекс замедляет запись (INSERT/UPDATE). При каждом изменении данных базе приходится обновлять и все связанные с этой колонкой индексы.
* Вывод: Индексы нужно создавать только на те колонки, по которым реально идет частая фильтрация (WHERE) или сортировка (ORDER BY).


Вопрос 3: «Как вы будете делать бэкап базы объемом в 1 ТБ, чтобы не "положить" сервис во время процесса?»

Ответ новичка: «Сделаю mysqldump или pg_dump ночью, когда никто не пользуется».
Ответ инженера:
Логический бэкап (dump) на терабайтной базе — это плохая идея. Он будет делаться вечно и создаст огромную нагрузку.
* Правильный путь: 1. Снапшоты на уровне ФС/LVM: Замораживаем ФС на секунду, делаем снапшот, размораживаем и спокойно копируем данные.
2. Физический бэкап: Инструменты вроде `pg_backrest` для PostgreSQL или `Percona XtraBackup` для MySQL. Они копируют сами файлы данных «на лету», не блокируя чтение и запись.
3. Бэкап с реплики: Самый надежный способ. Снимаем бэкап с репликационного сервера, чтобы вообще не нагружать основной Master-сервер.


💡 Золотое правило собеса: Если тебя спрашивают про базы, всегда упоминай мониторинг. Фраза «Я обязательно настрою алерты на Replication Lag (задержка репликации) и Disk Space» — это музыка для ушей любого тимлида.

Сохраняйте пост, чтобы не «поплыть», когда база скажет «ой»!

#собеседование_AF #database #mysql #postgresql #replication #backup #sysadmin #devops #admin_future
👍1
🐧 Linux: Даем серверу «второе дыхание» через zRAM

Если у тебя есть виртуалка, которой периодически не хватает оперативной памяти, а классический Swap на диске безбожно тормозит систему и «выжигает» ресурс SSD — пора вспомнить про zRAM. В 2026-м это стандарт для многих дистрибутивов, но на серверах про него часто забывают.

Техническая суть:
zRAM создает сжатое блочное устройство прямо в оперативной памяти. Когда RAM начинает заканчиваться, ядро сжимает неиспользуемые страницы и складывает их в этот «быстрый swap», не обращаясь к медленному диску. Степень сжатия часто достигает 1:3.


Команды для настройки (Debian/Ubuntu):


# Устанавливаем утилиту
sudo apt install zram-tools

# Настройка в /etc/default/zramswap:
# ALGO=zstd (самый эффективный алгоритм сжатия в 2026-м)
# PERCENT=50 (выделяем до 50% RAM под сжатый пул)

# Перезапуск сервиса
sudo systemctl restart zramswap

# Проверка статуса
zramctl



Зачем это нужно: Ты получаешь «виртуальное» увеличение объема памяти почти без потери производительности. Идеально для контейнеров и небольших VPS.

#linux #optimization #zram #performance #sysadmin #admin_future
🪟 Windows: Разгоняем PowerShell через параллельную обработку 🏎️

Утро пятницы — время для регулярных отчетов. Если тебе нужно опросить 100+ серверов через `Get-Service` или проверить наличие файла на 500 рабочих станциях, обычный цикл `foreach` будет работать вечно. В PowerShell 7+ есть киллер-фича: Parallel Processing.

Техническая суть:
Параметр `-Parallel` в командлете `ForEach-Object` позволяет запускать скрипт-блоки одновременно в разных потоках. Лимит потоков можно задать через `-ThrottleLimit`.


Пример быстрого чека сервиса на списке хостов:


$servers = Get-ADComputer -Filter 'OperatingSystem -like "*Server*"' | Select-Object -ExpandProperty Name

# Опрашиваем по 20 серверов одновременно
$servers | ForEach-Object -Parallel {
Get-Service -Name "Spooler" -ComputerName $_ | Select-Object Machinename, Status
} -ThrottleLimit 20



Результат: Задача, которая раньше занимала 10 минут, теперь выполняется за 30 секунд. Твой утренний кофе даже не успеет остыть.

#windows #powershell #automation #sysadmin #efficiency #admin_future
2
🧠 Skill: Doc-as-Code — почему твоя документация должна лежать в Git 📖

Старые Word-файлы с инструкциями и пыльные страницы в Wiki умирают в тот момент, когда их создали. В 2026 году админ использует подход Documentation as Code (DaC). Это значит, что документация пишется в Markdown, хранится в Git и живет рядом с кодом или конфигами.

Техническая суть:

1. Версионность: Ты всегда видишь, кто и когда изменил инструкцию по восстановлению бэкапа.
2. Peer Review: Ты можешь создать Pull Request с описанием новой схемы сети, а коллеги проверят его на ошибки.
3. Автоматизация: При пуше в Git документация может сама собираться в красивый статический сайт (через MkDocs или Hugo).


Простой пример Markdown-структуры:

```markdown
# Инструкция: Восстановление БД из бэкапа
## Шаги:
1. Зайти на сервер `db-backup-01`.
2. Выполнить команду: `cat backup.sql | psql database`.
> Важно: Перед этим проверьте наличие свободного места в `/var/lib/postgresql`.

```

Вывод: Навык работы с Markdown и Git-флоу для документации делает тебя системным инженером нового уровня, чьи знания не потеряются при сбое Wiki-сервера.

#skills #documentation #markdown #git #devops #sysadmin #admin_future
🍦 Священная Read-Only Friday: Искусство вовремя убрать руки от клавиатуры

В мире системного администрирования есть легенда о «Последнем Коммите». О том самом «незначительном исправлении», которое вносится в пятницу в 17:00, а в 19:00 превращается в тыкву, блокирующую выезды из города, семейные ужины и здоровый сон.

🚫 Почему мы не катим в пятницу?

Это не лень. Это управление рисками.
Любое изменение в сложной системе имеет период «дозревания». Баги, утечки памяти или конфликты зависимостей редко проявляются в первые пять минут. Им нужно время под нагрузкой. Если ты вносишь изменения в понедельник — у тебя есть четыре дня, чтобы всё исправить в рабочем режиме. В пятницу вечером ты остаешься один на один с монитором, пока остальной мир отдыхает.


Золотые правила Read-Only Friday:

* Никаких обновлений прошивок на центральных свитчах.
* Никаких массовых изменений GPO в Active Directory.
* Никаких «да я только одну строчку в конфиге nginx поправлю».
* Никаких миграций баз данных.


🛠 Чем заняться, если руки чешутся?

Read-Only — это не «ничегонеделание». Это время для задач, которые обычно откладываются «на потом» из-за текучки.

1. Инвентаризация и аудит. Пройдись по списку софта. Где-то наверняка висят тестовые виртуалки, которые уже три месяца просто едят ресурсы. Прибей их (но сначала убедись трижды!).
2. Документация. Самый скучный, но важный пункт. Опиши ту самую «кривую» схему проброса портов, которую ты собрал на коленке в прошлом месяце. Твой будущий «Я», когда сервер упадет в 3 часа ночи, скажет тебе спасибо.
3. Автоматизация отчетов. Напиши скрипт, который будет каждое утро присылать тебе в Telegram статус бэкапов или место на дисках. Это безопасная работа, которая не трогает продакшен.
4. Самообразование. Почитай про eBPF, разберись с новыми фишками Kubernetes или посмотри доклад с недавней конференции. Инвестируй время в свои мозги, а не в потенциальные инциденты.

🧘‍♂️ Ментальное здоровье

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


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

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

#longread #sysadmin #philosophy #readonlyfriday #devops #it_culture #admin_future
🌐 Рунет 2026: От «защиты» к тотальному управлению

То, что началось в 2019 году как ФЗ №90, к марту 2026 года превратилось в полноценную цифровую крепость. Если раньше ТСПУ (технические средства противодействия угрозам) были «черными ящиками» на случай глобального отключения, то теперь Постановление Правительства №1667 переводит систему в режим активного и централизованного управления.

🛠 Три кита новой инфраструктуры
ЦМУ ССОП (Центр мониторинга): Единая диспетчерская на базе ГРЧЦ, которая видит связность всей страны в реальном времени.

ТСПУ и DPI ($L7$ анализ): Оборудование под прямым контролем Роскомнадзора. Благодаря технологии Deep Packet Inspection, регулятор анализирует не просто IP-адреса, а структуру самих пакетов.

Результат: Можно замедлить видеохостинг, но оставить работать текстовые сообщения, или заблокировать протоколы VPN (VLESS, Reality, Shadowsocks), не затрагивая обычный HTTPS-трафик.

Автономный DNS: Национальная система доменных имен. Даже если внешние корневые серверы станут недоступны, .ru и .рф продолжат резолвиться внутри страны.

🚦 Модель «Белых списков» и маршрутизация
Главное изменение для пользователя — это переход к логике управляемой доступности.

Маршрутизация трафика: Теперь Роскомнадзор и ФСБ могут принудительно менять таблицы маршрутизации через протокол BGP. Если зафиксирована угроза, трафик «заворачивается» на узлы с жесткой фильтрацией.
Что видит пользователь?

Это не «отключение интернета», а его сегментация:
Приоритетный трафик: Госуслуги, банки, VK, национальные маркетплейсы работают на максималках.
Деградирующий трафик: Иностранные ресурсы и «неблагонадежные» сайты начинают выдавать таймауты или грузиться со скоростью модема из 90-х.

⚖️ Спецслужбы и блокировки: IMEI и «Антифрод»
С 1 марта полномочия силовых структур в цифровой среде стали практически безграничными:
Мгновенное отключение: ФСБ может требовать от оператора оборвать связь конкретному абоненту (по IMEI или IP) без объяснения причин. Оператор при этом защищен от исков пользователя.

Система «Антифрод»: Единая база данных банков и операторов для борьбы с мошенничеством, которая делает все коммуникации прозрачными.

Хранение данных: Информация обо всех взаимодействиях пользователей теперь хранится 3 года.

🇷🇺 Интерфейсы и «Традиционные ценности»
Закон добрался и до фронтенда.

Защита русского языка: Кнопки «Login», «Start» или «Sale» теперь должны быть на русском или иметь равнозначный перевод. Англицизмы в навигации без дубля — повод для штрафа до 500к.

Модерация: Соцсети и онлайн-кинотеатры несут уголовную ответственность за контент, «дискредитирующий ценности». Алгоритмы ИИ теперь сканируют каждый пост на этапе загрузки.

🧠 Мысли админа: Что делать?
Для нас, технарей, это значит, что работа с «серыми» схемами и зарубежными облаками становится всё более рискованной.
Импортозамещение — не мода, а выживание. Реестр отечественного ПО — теперь наш основной источник софта.
Аудит интерфейсов. Проверьте свои сайты и аппки на соответствие закону о языке.
Сетевая гигиена. Понимание того, как ваш трафик ходит через ТСПУ, становится критически важным для дебага «непонятных тормозов».
Мир изменился, коллеги. Интернет перестал быть стихией и стал регулируемой инфраструктурой.

#суверенный_интернет #ркн #безопасность #networking #bgp #dpi #admin_future
🐧 Linux: Убиваем демонов. Rootless Podman и systemd-quadlets на страже серверов

В 2026 году крутить жирного демона Docker от пользователя `root` — это не просто моветон, это красная тряпка для любого аудитора ИБ. В условиях тотального импортозамещения и перехода на защищенные отечественные ОС мы давно изолируем всё, что шевелится.

Под капотом:
Мы выкидываем Docker daemon и переходим на rootless Podman. А чтобы не страдать с docker-compose и кривыми авторестартами, отдаем управление жизненным циклом контейнеров нативному systemd через механизм Quadlets. Вы просто пишете декларативный юнит .container, а systemd сам генерирует сервис, следит за зависимостями, пробрасывает порты и пишет логи в journald. И всё это работает в пространстве обычного пользователя!

Практика:
Создаем файл /etc/containers/systemd/nginx-gost.container для запуска веб-сервера с поддержкой отечественной криптографии:


[Unit]
Description=GOST-enabled Nginx Web Server
After=network-online.target

[Container]
Image=registry.corp.local/nginx-gost:latest
PublishPort=8080:80
Environment=TLS_MODE=strict
Volume=/srv/web:/usr/share/nginx/html:ro

[Install]
WantedBy=multi-user.target



Перезагружаем демона и стартуем:


systemctl daemon-reload
systemctl start nginx-gost.service



Зачем это нужно:
Если злоумышленник и пробьет ваш веб-сервер, он окажется заперт в непривилегированном user namespace. Нулевой риск компрометации ядра, идеальная интеграция с системными логами и чистая архитектура без лишних прослоек.

#linux #podman #systemd #security #admin_future
🪟 Windows: Одиночество в DMZ. Управляем Server Core без графики и боли

Графический интерфейс на серверах окончательно умер, а RDP закрыт наглухо еще пару лет назад. Но софт на изолированных машинах в DMZ обновлять надо. Тянуть MSI-пакеты руками по сети через скрытые шары? Оставьте этот антиквариат стажерам из прошлого десятилетия.

Под капотом:
Используем нативный пакетный менеджер WinGet в связке с внутренним приватным REST-репозиторием. Современный WinGet умеет работать в контексте системы (SYSTEM), стягивать подписанные манифесты и дистрибутивы прямо из корпоративного хранилища. Никакого монструозного SCCM, только элегантный CLI по жестко зашифрованному TLS 1.3 каналу.

Практика:
Подключаем наш закрытый корпоративный репозиторий и ставим утилиты мониторинга одной командой:


# 1. Удаляем публичные мусорные репозитории Microsoft
winget source remove msstore
winget source remove winget

# 2. Добавляем корпоративный источник с авторизацией по сертификату
winget source add --name CorpRepo --arg https://repo.internal.local/api --type Microsoft.Rest --accept-source-agreements

# 3. Ставим нужный пакет тихо и без лишних вопросов
winget install Corp.ZabbixAgent --source CorpRepo --exact --silent --accept-package-agreements



Зачем это нужно:
Полный контроль над версиями ПО в изолированных сегментах сети. Вы точно знаете, что на сервер попадет только тот бинарник, который прошел проверку безопасников и лежит в вашем репозитории. Автоматизируется через любой CI/CD за пять минут.

#windows #winget #servercore #powershell #admin_future
🔥2
🚀 Skills: Амнезия админа. Почему вы больше не должны знать пароли от прода

Помните времена, когда пароль от боевой базы данных лежал в `.env` файле или в персональном KeePass старшего инженера? В реалиях 2026 года, если ты физически знаешь пароль от продакшена — инцидент безопасности уже начался.

Под капотом:
Переход на динамические секреты (Dynamic Secrets). Мы используем HashiCorp Vault (или его сертифицированные аналоги). Приложение авторизуется через токен (например, JWT от Kubernetes Service Account). Vault идет в PostgreSQL, генерирует уникального юзера и пароль с Time-To-Live (TTL) ровно на 1 час, и отдает их приложению в память. Через час Vault сам убивает этого пользователя в БД.

Практика:
Запрашиваем временные креды для дебага базы (выдаются лично вам на 15 минут, логируются в аудит):


# Логинимся через корпоративный OIDC
vault login -method=oidc

# Запрашиваем динамический доступ к роли read-only
vault read database/creds/pg-prod-readonly

# Вывод:
# Key Value
# --- -----
# lease_id database/creds/pg-prod-readonly/gK9...
# lease_duration 15m
# password A1b2C3d4_dynamic_hash_8f92
# username v-oidc-adm_ivanov-pg-prod-read-1a2b3c



Зачем это нужно:
База данных больше не хранит вечные пароли, которые можно слить. При увольнении сотрудника или компрометации сервиса вам не нужно судорожно ротировать доступы — они сами превратятся в тыкву по истечении TTL. Ваша главная суперсила теперь — не помнить ничего секретного.

#skills #vault #devsecops #security #admin_future
🤔3
🎓 Собеседование сисадмина. Выпуск #7: Веб-серверы и Проксирование (Nginx & Troubleshooting)

Привет, коллеги! В 2026 году «просто поднять Apache» — это путь к увольнению по статье за профнепригодность. Веб-сервер сегодня — это первая линия обороны «цифровой крепости», где мы жонглируем TLS 1.3, отечественными сертификатами и отбиваемся от ботов еще до того, как они нагрузят наш бэкенд на ARM-процессорах.

Разберем три вопроса, на которых валят тех, кто застрял в 2015-м.

---
Вопрос 1: «В чем разница между proxy_pass на IP и на Unix-сокет? Когда что выбирать?»

Ответ новичка: «IP — это для интернета, а сокет — это внутри сервера. Сокет вроде бы быстрее».
Ответ инженера:
* Unix Sockets: Обмен данными идет напрямую через ядро Linux без участия сетевого стека (TCP/IP).
* Плюс: Меньше задержки (latency) и нагрузки на CPU.
* Минус: Работает только в рамках одной ОС. Если бэкенд переедет на соседний контейнер/сервер, придется переписывать конфиг.

* TCP (IP:Port): Данные проходят через весь сетевой стек, даже если бэкенд на том же хосте (loopback).
* Плюс: Легко масштабировать — просто меняем `127.0.0.1` на IP другого сервера.
* Вывод: В 2026-м для высоконагруженных локальных связок (Nginx + PHP-FPM/Python) используем сокеты, для микросервисов — TCP.

---

Вопрос 2: «Что такое "проблема Client IP" за прокси-сервером и как ее решить?»

Ответ новичка: «В логах бэкенда будет IP балансировщика. Чтобы увидеть реальный IP, нужно что-то включить в настройках».
Ответ инженера:
По умолчанию бэкенд видит IP того, кто к нему обратился — т.е. вашего Nginx. Чтобы передать адрес клиента, мы используем заголовок X-Forwarded-For или X-Real-IP.

* На стороне Nginx: прокидываем заголовок.
* На стороне бэкенда: используем модуль (например, `ngx_http_realip_module`), чтобы подменить адрес источника в логах и логике приложения.
* Важно:* В 2026-м обязательно настраиваем `set_real_ip_from`, чтобы доверять заголовкам только от своих балансировщиков, иначе любой школьник подменит свой IP в HTTP-заголовке.


---

Вопрос 3: «Зачем нужно прокси-буферирование (proxy_buffering) и когда его вредно выключать?»

Ответ новичка: «Буферизация — это кэш. Ее лучше включить, чтобы все работало быстрее».
Ответ инженера:
Буферизация позволяет Nginx «впитать» ответ от бэкенда максимально быстро и отпустить воркер бэкенда заниматься следующими задачами.


* Если включено: Nginx забирает ответ в память (или на диск) и сам медленно отдает его клиенту с плохим 5G-интернетом. Бэкенд свободен.
* Если выключено (off): Бэкенд будет «висеть» открытым, пока клиент не скачает последний байт. При 1000 медленных клиентах ваш бэкенд захлебнется в процессах.
* Исключение: SSE (Server-Sent Events) или стриминг, где данные должны уходить клиенту мгновенно.


---

Практический пример: Bulletproof Proxy Config 2026

Минимальный набор настроек для проксирования на внутренний сервис с учетом безопасности:


upstream backend_cluster {
server unix:/run/php-fpm.sock weight=5; # Быстрый локальный сокет
server 192.168.10.50:8080 backup; # Резерв на случай падения
}

server {
listen 443 ssl http2;
server_name service.local;

# Работа с реальными IP (только от доверенного шлюза)
set_real_ip_from 10.0.0.1;
real_ip_header X-Forwarded-For;

location / {
proxy_pass http_backend_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;

# Защита от "залипания" бэкенда
proxy_connect_timeout 5s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;

proxy_buffering on;
proxy_buffer_size 8k;
}
}



Зачем это нужно

Понимание работы прокси — это разница между «у нас сервер упал под нагрузкой» и «мы просто увеличили количество воркеров».

Вывод: Берегите бэкенды, делегируйте всю «грязную» работу по общению с клиентами Nginx'у.

#собеседование_AF #nginx #linux #proxy #highload #sysadmin #admin_future
🐧 Linux: Диета для ARM. Btrfs и прозрачное сжатие под давлением санкций

Привет, коллеги! В 2026 году, когда объемы логов растут быстрее, чем бюджеты на новые NVMe-накопители, а ARM-серверы стали стандартом в наших ДЦ, умение экономить каждый гигабайт — это не жадность, а профессиональное выживание. Если вы до сих пор используете ext4 на системных разделах, вы просто добровольно сжигаете ресурс ячеек памяти и деньги компании.

Техническая суть:
Мы переходим на Btrfs с использованием алгоритма ZSTD. В отличие от старого доброго Gzip, ZSTD нативно поддерживается ядром и умеет в «умное» сжатие: если данные не сжимаются (например, уже зашифрованные бинарники), драйвер просто перестает тратить циклы CPU.

Под капотом: Используем механизм Copy-on-Write (CoW). При записи блок данных сначала сжимается в памяти, а затем атомарно пишется на диск. Это не только экономит до 40-60% места на типичных текстовых логах и конфигах, но и продлевает жизнь SSD, так как физических операций записи становится меньше.


Практика:

Перемонтируем раздел с прозрачным сжатием и проверяем реальную выгоду:


# 1. Добавляем опции сжатия в fstab (уровень 3 — золотая середина для ARM)
# UUID=... /var/log btrfs defaults,compress-force=zstd:3,noatime 0 0

# 2. Если раздел уже смонтирован, применяем на лету к существующим данным
btrfs filesystem defragment -r -czstd /var/log

# 3. Смотрим реальное потребление (df тут бессилен)
# Утилита compsize показывает магию чисел
compsize /var/log

# Вывод будет примерно такой:
# Processed 12405 files, 204856 blocks.
# Raw size: 12.4G
# Compressed size: 4.1G (33.06%)



Зачем это нужно:
Экономия дискового пространства в 3 раза без потери производительности (а на медленных дисках — даже с приростом, так как узкое место — шина данных, а не CPU). Плюс, мгновенные снапшоты позволяют откатить неудачное обновление системы за секунды.


#linux #btrfs #arm #optimization #storage #admin_future
🪟 Windows: Протокол «Чистые руки». Нативный LAPS и смерть локальных паролей

Коллеги, признавайтесь: у кого в блокноте или в закрытом чате до сих пор лежит «тот самый» пароль от локального админа, который подходит к половине серверов в сегменте? В 2026 году это не просто дыра, это широко распахнутые ворота для любого шифровальщика. Если одна машина в DMZ скомпрометирована — считайте, что упал весь домен.

Техническая суть:
Мы используем Windows LAPS (Local Administrator Password Solution), который теперь нативно интегрирован в ОС и Active Directory. Больше никаких сторонних костылей.

Как это работает: Каждая машина в домене генерирует уникальный, сложный пароль для своей учетки локального администратора. Этот пароль шифруется и сохраняется в защищенном атрибуте объекта компьютера в AD. Доступ к чтению этого атрибута жестко ограничен через ACL только для группы «Trusted Admins». Каждые 30 дней (или по вашему триггеру) пароль ротируется автоматически.


Практика:

Получаем актуальный пароль для проблемного сервера через PowerShell (все действия логируются, так что «просто посмотреть» не выйдет):


# 1. Проверяем состояние LAPS на конкретном сервере
Get-LapsDiagnostics -ComputerName "SRV-DB-01"

# 2. Получаем текущий пароль (требуются права доступа к зашифрованному атрибуту)
Get-LapsADPassword -Identity "SRV-DB-01" -AsClearText

# Вывод:
# ComputerName Password Expiration
# ------------ -------- ----------
# SRV-DB-01 $tr0ng_P@ss_2026! 10.04.2026 14:00:00

# 3. Принудительно заставляем сервер сменить пароль прямо сейчас
Set-LapsADPasswordExpiration -Identity "SRV-DB-01" -In 0



Зачем это нужно:
Полное исключение атаки типа Pass-the-Hash. Даже если злоумышленник вытащит хеш с одного сервера, он не сможет зайти под ним на другой. Админ больше не знает паролей — он получает их по требованию под присмотром аудита.

#windows #security #laps #powershell #activedirectory #admin_future
👍3
🛡️ Security: Рентген для ядра. eBPF вместо гадания на логах

В 2026-м копаться в `strace` или `tcpdump` на высоконагруженном сервере — это как пытаться замерить пульс у бегущего спринтера, вставляя ему палки в колеса. Сервис либо упадет от оверхеда, либо вы утонете в гигабайтах мусора. Когда база «лагает», а сеть «тупит», нам нужны точные ответы, а не догадки.

Техническая суть:
Используем eBPF (Extended Berkeley Packet Filter). Это технология, которая позволяет запускать микропрограммы прямо внутри ядра Linux без его пересборки или загрузки модулей.

Под капотом: Мы вешаем «хуки» на системные вызовы (kprobes) или функции в пользовательском пространстве (uprobes). eBPF-программа собирает статистику в реальном времени с нулевым влиянием на производительность. Вы видите всё: от задержек записи на диск конкретным процессом до того, какой именно микросервис рвет TCP-сессию.


Практика:
Используем bpftrace, чтобы мгновенно найти, кто «насилует» диск медленными запросами (более 10 мс):


# Запускаем однострочник, который строит гистограмму задержек I/O
bpftrace -e 'kprobe:vfs_read { @start[tid] = nsecs; }
kretprobe:vfs_read /@start[tid]/ {
$lat = (nsecs - @start[tid]) / 1000000;
if ($lat > 10) { @[comm] = lhist($lat, 0, 100, 10); }
delete(@start[tid]);
}'

# На выходе получаем четкую картину:
# @[postgres]:
# [10, 20) |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| 152
# [20, 30) |@@@@ | 18
# [50, 60) |@ | 2



Зачем это нужно:
Обнаруживаем «невидимые» проблемы: блокировки в ядре, микро-всплески трафика или утечки дескрипторов. В эпоху Cloud-Native и сложных распределенных систем это единственный способ не сойти с ума при поиске иголки в стоге сена.


#security #ebpf #linux #performance #monitoring #admin_future
🎓 Собеседование сисадмина. Выпуск #8: Сетевой Траблшутинг и Галлюцинации Ядра

Привет, коллеги! В 2026 году, когда каждый пакет проходит через три круга DPI-фильтрации, а зашифрованные туннели накручены друг на друга как слои в бабушкином торте, понимание «базы» сетевого стека — это то, что отличает системного администратора от «человека, который просто перезагружает роутер».
Сегодня разберем три вопроса, которые заставляют потеть даже тех, кто гордо называет себя Senior.


Вопрос 1: «У нас поднята VPN-связка между офисами, пинги ходят, но RDP отваливается, а сайты открываются наполовину. В чем проблема?»

Ответ новичка: «Наверное, канал забит или провайдер глючит. Надо перезагрузить тоннель».
Ответ инженера:
Это классическая проблема MTU (Maximum Transmission Unit) и MSS (Maximum Segment Size). Когда мы упаковываем трафик в туннель (WireGuard, IPsec, GRE), добавляются дополнительные заголовки. Пакет становится больше стандартных 1500 байт и либо дропается, либо фрагментируется (что убивает производительность).
Если на промежуточном узле (или на DPI провайдера в 2026-м) запрещена фрагментация (флаг DF), пакет просто исчезнет в черной дыре. Решение: Нужно уменьшать MSS на интерфейсе туннеля (обычно до 1300-1400 байт), чтобы TCP-сессия сразу договаривалась о меньшем размере полезной нагрузки.


Вопрос 2: «Load Average на сервере зашкаливает (LA = 50.0), но загрузка CPU при этом всего 5%. Как такое возможно и что делать?»

Ответ новичка: «Наверное, какой-то процесс завис. Надо убить всё, что в топе».
Ответ инженера:
Load Average — это не только про CPU. Это очередь процессов в состоянии Running (R) и Uninterruptible Sleep (D). Если CPU свободен, значит, процессы «стоят в очереди» к дисковой подсистеме или ждут ответа от сети (состояние I/O Wait).
Разберем состояния подробнее:
High CPU Usage: Процессы в состоянии R. Решается оптимизацией кода или добавлением ядер.
High I/O Wait: Процессы в состоянии D. Причина: «умирающий» диск, перегруженная NFS-шара или проблемы с контроллером на ARM-сервере. Процессы отправили запрос на запись и замерли.
Zombie Processes: Состояние Z. Код не закрывает дочерние процессы. На LA влияют косвенно, но забивают таблицу процессов.

Вопрос 3: «Как понять, что ваш NVMe-диск скоро "отъедет", если стандартный S.M.A.R.T. не показывает Reallocated Sectors?»

Ответ новичка: «Посмотрю в smartctl -a, если там везде PASSED — значит всё хорошо».
Ответ инженера:
Для NVMe-накопителей в 2026 году классические атрибуты SMART не всегда информативны. Нужно использовать nvme-cli и смотреть на два критических параметра:
Percentage Used: Это прямой показатель износа ячеек. Если там 95%+, диск пора менять превентивно, даже если он работает идеально.
Available Spare: Это резервные блоки. Если этот показатель начал падать ниже 10% — значит, резервные ячейки кончаются, и контроллер скоро переведет диск в режим Read-only (защита данных при смерти).
Media and Data Integrity Errors: Любое число выше нуля — это повод для немедленной миграции данных.

Практический пример: Траблшутинг «на коленке»
Если вы чувствуете запах «сетевой магии» (проблема с MTU), проверьте прохождение пакетов с запретом фрагментации:

# 1. Пытаемся пропихнуть стандартный пакет через туннель
# -M do запрещает фрагментацию, -s задает размер (1472 + 28 байт заголовка = 1500)
ping -M do -s 1472 10.10.1.1

# 2. Если получаем "Frag needed and DF set", ищем рабочее значение опытным путем:
ping -M do -s 1300 10.10.1.1

# 3. Нашли рабочее число? Правим MSS для проходящего трафика через nftables
# Актуально для 2026 года в Linux-роутерах:
nft add rule inet fw mangle forward oifname "wg0" tcp flags syn tcp option maxseg size set 1360

# 4. Или проверяем износ диска на ARM-сервере:
nvme smart-log /dev/nvme0n1 | grep percentage_used
🔥51
Вывод
Понимание того, как пакеты «влезают» в интерфейсы и почему сервер «тупит» при свободном процессоре — это ваш страховой полис. Без этого вы будете бесконечно докупать RAM и ядра там, где нужно было просто поправить один параметр в sysctl или заменить «уставший» NVMe. Спокойствие админа в 2026-м стоит на трех слонах: мониторинг задержек, контроль износа железа и правильный MTU.

#собеседование_AF #networking #mtu #load_average #nvme #sysadmin #troubleshooting #admin_future
🔥2
🐧 Linux: XDP — Аннигиляция пакетов на входе в «Цифровую крепость»

Привет, коллеги! Сегодня четверг, 12 марта 2026 года, и если ваш сетевой стек до сих пор захлебывается от входящего мусора, пока iptables задумчиво перебирает цепочки правил, у меня для вас плохие новости. В эпоху 400-гигабитных каналов и повсеместного IPv6 классический путь пакета через всё ядро Linux — это непозволительная роскошь.

Техническая суть:
Мы переходим на XDP (eXpress Data Path). Это база для современного сетевого админа. XDP позволяет запускать eBPF-код прямо в контексте драйвера сетевой карты, до того, как ядро вообще начнет создавать структуру `sk_buff`.

Под капотом: Пакет перехватывается на уровне RX-очереди. Мы можем либо пробросить его дальше (XDP_PASS), либо мгновенно аннигилировать (XDP_DROP), либо отправить обратно (XDP_TX). Это дает нам производительность, близкую к DPDK, но без необходимости писать драйверы в пользовательском пространстве и терять интеграцию с ОС.


Практика:

В 2026-м мы не пишем байт-код руками. Используем современные обертки для быстрой фильтрации DDoS на подлете:


# 1. Устанавливаем xdp-tools (стандарт для современных дистрибутивов)
# 2. Вешаем фильтр, который будет дропать всё, что не соответствует нашим ACL
# на уровне драйвера (native mode) или программно (skb mode)

xdp-loader load eth0 ./drop_malicious_traffic.o --mode native

# 3. Мониторим статистику прохождения пакетов через eBPF-карты
bpftool map dump name xdp_stats_map

# Пример простейшего правила для xdp-filter (современная замена многим задачам iptables)
xdp-filter load eth0 -p ipv6 --ip 2001:db8:dead:beef::/64 -a drop



Зачем это нужно:
Экономия ресурсов CPU. Пока
nftables
тратит циклы на разбор каждого заголовка, XDP просто «срезает» ненужное на входе. Это единственный способ держать аптайм, когда на твой ARM-кластер прилетает «привет» от ботнета в пару терабит.

#linux #xdp #ebpf #networking #highload #admin_future
👍1👎1😁1🤡1
🪟 Windows: SecretManagement — Смерть паролей в открытом коде

Коллеги, на дворе 2026 год. Если при проверке ваших PowerShell-скриптов безопасник находит переменную `$password = "12345"`, он имеет полное право заблокировать вашу учетку до конца квартала. Скрыть пароль в base64 — это не защита, это костыль из прошлого десятилетия.

Техническая суть:
Используем нативный модуль Microsoft.PowerShell.SecretManagement. Это абстрактный слой, который позволяет скриптам запрашивать секреты, не зная, где они лежат: в локальном зашифрованном Vault, в KeePassXC или в корпоративном HashiCorp Vault.

Под капотом: Модуль отделяет логику скрипта от реализации хранилища. Скрипт просит «дай мне пароль от сервиса X», а SecretManagement сам идет в зарегистрированное расширение (Extension Vault) и достает его. В памяти скрипта секрет живет только в виде объекта `SecureString`.

Практика:

Настраиваем локальное защищенное хранилище и используем его в автоматизации:


# 1. Устанавливаем необходимые модули
Install-Module Microsoft.PowerShell.SecretManagement, Microsoft.PowerShell.SecretStore -Force

# 2. Регистрируем локальный защищенный сейф (требует мастер-пароль или привязку к сессии)
Register-SecretVault -Name LocalSafe -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault

# 3. Сохраняем секрет один раз (интерактивно)
Set-Secret -Name "Service_DB_Prod" -Secret "MySuperSecurePassword2026!"

# 4. В скрипте теперь только чистая логика:
$dbSecret = Get-Secret -Name "Service_DB_Prod" -AsPlainText # Используйте plain text только для передачи в API!
Invoke-Sqlcmd -ServerInstance "DB-SRV-01" -Password $dbSecret -Query "SELECT 1"



Зачем это нужно:
Ваши `.ps1` файлы теперь абсолютно чисты. Их можно спокойно пушить в Git, передавать коллегам и не бояться, что при увольнении придется ротировать сотню паролей, которые вы «где-то там» прописали.


#windows #powershell #security #automation #secretmanagement #admin_future
👍1
🚀 Skills: Инфраструктурный нигилизм. Почему «надежность» больше не цель

Помните, как мы гордились серверами с аптаймом в 500 дней? В 2026 году такой сервер — это позор и огромная дыра в безопасности. Если ваша система не перезагружалась полтора года, значит, она не видела патчей ядра, обновлений микрокода ARM и критических фиксов библиотек.

Техническая суть:
Главный навык админа сегодня — не «поддержать жизнь», а «уметь убить и воскресить». Мы переходим от концепции надежности железа к концепции Resilience (упругости). Инфраструктура должна быть эфемерной.

Под капотом: Мы внедряем **Immutability** (неизменяемость). Конфигурация сервера не правится руками через SSH. Если нужно изменить один параметр в `sysctl`, вы меняете его в коде (IaC), пересобираете образ и пересоздаете инстанс.


Практика:

Ваш рабочий день должен начинаться не с проверки мониторинга «всё ли зеленое», а с проверки «пройдет ли сегодня автоматический редеплой 10% инфраструктуры».


# Пример декларативного описания состояния (Inspec / Goss)
# Мы проверяем не "как долго оно работает", а "соответствует ли оно стандарту 2026 года"

file:
/etc/ssh/sshd_config:
exists: true
contains:
- "Protocol 2"
- "PermitRootLogin no"
- "PubkeyAuthentication yes"
- "KexAlgorithms curve25519-sha256@libssh.org" # Квантово-устойчивые алгоритмы

command:
check_kernel_version:
exec: "uname -r"
exit-status: 0
stdout:
- "6.12" # Мы не сидим на старье



Зачем это нужно:

Это избавляет вас от «дрейфа конфигураций» (configuration drift). Когда у вас 1000 серверов, вы не можете быть уверены, что на 734-м какой-то стажер не поправил конфиг руками в три часа ночи. Только полная пересборка гарантирует идентичность и предсказуемость.


Вывод: Ваша ценность как инженера — в скорости восстановления системы с нуля, а не в умении годами латать дырявое корыто.

#skills #iac #observability #resilience #devops #admin_future
🎓 Собеседование сисадмина. Выпуск #9: Storage & Security (Неудаляемые данные и Zero Trust)

Привет, коллеги! Сегодня четверг, 12 марта 2026 года, и если вы думаете, что бэкап на соседний сервер спасет вас от современного шифровальщика, то вы либо оптимист, либо еще не сталкивались с ИИ-червями, которые первым делом вычищают корзины и снапшоты. В эпоху «цифровой крепости» данные должны быть не просто скопированы, они должны быть «забетонированы».
Разберем три вопроса, которые проверяют, насколько вы готовы к суровой реальности 2026-го.


Вопрос 1: «Что такое Immutable Backups (неизменяемые бэкапы) и как реализовать WORM-политику без покупки ленточных библиотек?»
Ответ новичка: «Это когда мы ставим атрибут read-only на файлы. Можно просто убрать права на запись у пользователя».
Ответ инженера:
В 2026-м «права пользователя» не значат ничего, если злоумышленник получил root или скомпрометировал гипервизор. Неизменяемость (Immutability) должна быть на уровне протокола хранения.
Мы используем Object Lock в S3-совместимых хранилищах (например, MinIO или отечественные облака).
Режим Compliance Mode (WORM — Write Once Read Many) гарантирует, что даже владелец аккаунта или «рут» не сможет удалить файл до истечения Retention-периода.
На уровне Linux-серверов это реализуется через XFS/ZFS snapshots с блокировкой удаления на уровне ядра или использование файловых атрибутов append-only (chattr +a), которые в связке с eBPF-мониторингом делают удаление данных невозможным без физического доступа к консоли.

Вопрос 2: «Почему переход на HTTP/3 (QUIC) — это не только про скорость, но и про головную боль для админа в 2026 году?»
Ответ новичка: «Это просто новая версия протокола, она быстрее работает на ARM-процессорах и лучше грузит сайты».
Ответ инженера:
Главная засада в том, что HTTP/3 работает поверх UDP, а не TCP.
Для админа это означает полный пересмотр правил фаервола (нужно открывать 443/UDP) и проблемы с классическими балансировщиками, которые привыкли к TCP-сессиям.
Connection Migration: QUIC позволяет клиенту менять IP (например, при переходе с Wi-Fi на 6G) без разрыва TLS-сессии. Для систем мониторинга и безопасности это выглядит как магия или атака, если не настроить корректное отслеживание ID соединений.
В 2026-м мы также обязаны учитывать отечественные TLS-сертификаты, которые в связке с QUIC иногда требуют специфического тюнинга MTU, чтобы пакеты не дропались на DPI.

Вопрос 3: «Концепция Zero Trust внутри локальной сети: зачем нам микросегментация, если у нас и так всё за фаерволом?»
Ответ новичка: «Если сеть закрыта извне, то внутри все свои. Достаточно разделить на VLAN для бухгалтерии и админов».
Ответ инженера:
Периметра больше не существует. Любой «умный» чайник или китайский ARM-терминал на складе — это потенциальная точка входа.
Zero Trust подразумевает, что мы не доверяем никому по умолчанию, даже серверу в соседней стойке.
Мы внедряем микросегментацию на уровне L7 через Service Mesh (например, Cilium с eBPF).
Вместо правил «IP A может ходить к IP B», мы пишем политики «Сервис А (подтвержденный сертификатом) может дергать только метод GET /api/v1 у Сервиса B». Всё остальное — drop по умолчанию. Это предотвращает горизонтальное перемещение (lateral movement) хакера по сети.


Практический пример: Включаем «бетон» для бэкапа
Если вы используете MinIO в своем контуре для хранения архивов, настройте корзину так, чтобы ее не удалил даже взбесившийся админ:

# 1. Создаем корзину с поддержкой Object Locking (в 2026-м это стандарт)
mc mb --with-lock myminio/backups-2026

# 2. Устанавливаем политику неизменяемости на 30 дней
# В режиме COMPLIANCE даже root не сможет удалить файл
mc retention set compliance 30d myminio/backups-2026

# 3. Проверяем статус файла
mc stat myminio/backups-2026/db_dump_march.tar.gz

# Вывод покажет:
# Object-Lock-Retain-Until-Date: 2026-04-11 12:00:00
# Любая попытка 'mc rm' выдаст 'Access Denied' до этой даты.
🔥31