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

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


Админ - @maksimshap
Download Telegram
🌐 Рунет 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
Собеседование в 2026-м — это проверка не на знание команд, а на архитектурную паранойю. Вы должны уметь строить системы, которые выживут, даже если половина вашей инфраструктуры захвачена. Бэкап, который можно удалить — это не бэкап, а иллюзия. Сеть без Zero Trust — это проходной двор.


Золотое правило: Всегда говорите про Audit Log. Фраза «Я настрою экспорт логов доступа к бэкапам в неизменяемое внешнее хранилище» — это автоматический пропуск на следующий этап.

#собеседование_AF #security #storage #minio #quic #zerotrust #sysadmin #admin_future
🐧 Linux: Смерть динозавров. Почему ты должен забыть про `ifconfig` и `netstat` в 2026-м

Привет, коллеги! Сегодня пятница, 13-е, и самое время провести экзорцизм — изгнать из твоих пальцев привычку вводить команды из учебников 20-летней давности. Если ты до сих пор ставишь пакет `net-tools` на свежую ОС, ты добровольно ставишь себе деревянные протезы вместо современных карбоновых манипуляторов. На ARM-серверах и современных ядрах Linux эти утилиты показывают погоду на Марсе, а не реальное состояние стека.

Техническая суть:
Переходим на связку iproute2 (`ip`) и **iproute2-ss** (`ss`).
Под капотом: Старый `netstat` читает информацию из `/proc/net/`, что при большом количестве соединений превращается в пытку для CPU и диска. Современная утилита `ss` (Socket Statistics) использует механизм Netlink, запрашивая данные напрямую у ядра. Это в десятки раз быстрее и точнее, особенно когда у тебя тысячи IPv6-соединений.

Практика:

Заменяем старые привычки на актуальный CLI. Почувствуй скорость:


# 1. Вместо 'ifconfig' — смотрим адреса и статистику ошибок на интерфейсе
ip -c -s link show eth0
ip -6 addr # Только IPv6, только хардкор

# 2. Вместо 'netstat -tulpn' — ищем, кто слушает порты
# -l (listening), -n (numeric), -p (process), -t (tcp), -4/6 (family)
ss -ltnp4

# 3. Киллер-фича: ищем все соединения от конкретного IP, которые тупят
ss -o state established '( dport = :http or sport = :http )'

# 4. Мониторим изменения в сети в реальном времени (кто поднял интерфейс, кто упал)
ip monitor



Зачем это нужно:
Для личного спокойствия. Когда сервер под нагрузкой «приляжет», старый `netstat` может просто зависнуть, пытаясь распарсить `/proc`. `ss` выдаст результат мгновенно, позволив тебе быстро найти и отстрелить проблемный процесс.

#linux #networking #ss #iproute2 #troubleshooting #admin_future
🪟 Windows: CLI-первенство. Управляем сервером без «тяжелых» окон

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

Техническая суть:
Используем PowerShell Remoting (WinRM) через CLI. Это позволяет выполнять команды на сотнях серверов одновременно, не видя перед собой ни одного рабочего стола.

Под капотом: WinRM работает через HTTP/HTTPS (порты 5985/5986). В 2026-м мы настраиваем его на работу по TLS 1.3 с авторизацией по сертификатам. Это безопаснее, быстрее и позволяет автоматизировать рутину через обычные текстовые команды.

Практика:

Забудь про «Пуск -> Выполнить». Открывай терминал:


# 1. Подключаемся к удаленному Server Core узлу (интерактивно)
Enter-PSSession -ComputerName "SRV-DB-01"

# 2. Магия: узнаем свободное место на дисках сразу на всей группе серверов
Invoke-Command -ComputerName "SRV-APP-01", "SRV-APP-02", "SRV-APP-03" -ScriptBlock {
Get-Volume | Select-Object DriveLetter, FileSystemLabel,
@{Name="FreeGB";Expression={[Math]::Round($_.SizeRemaining / 1GB, 2)}}
}

# 3. Перезапускаем службу только если она "висит"
Invoke-Command -ComputerName "SRV-PRINT-01" -ScriptBlock {
Restart-Service -Name "Spooler" -Force
}



Зачем это нужно:
Скорость и масштабируемость. Пока твой коллега ждет прогрузки графики в RDP, ты уже собрал отчет по всем серверам в сегменте и ушел пить кофе.


#windows #powershell #winrm #automation #sysadmin #admin_future
🔥3
🎓 Собеседование сисадмина. Выпуск #10: Крах гипервизоров (Bare-metal ARM & KubeVirt)

Привет, коллеги! Юбилейный выпуск. В 2026 году классические гипервизоры вроде ESXi или Hyper-V окончательно превратились в музейные экспонаты. Лицензионные войны и потребность в дичайшей плотности вычислений привели нас к тому, что мы запускаем виртуальные машины прямо внутри Kubernetes на Bare-metal ARM серверах. Если ты до сих пор считаешь, что виртуалка — это «просто файл .vmdk на СХД», ты застрял в прошлом десятилетии.

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

Вопрос 1: «Зачем нам тащить виртуальные машины в Kubernetes через KubeVirt, если можно просто всё контейнеризировать?»

Ответ новичка: «Это чтобы было удобнее смотреть на них в одной панели управления».

Ответ инженера:
Не всё можно (и нужно) запихивать в Docker. У нас полно legacy-софта на старых ядрах, специфических ОС или систем, требующих прямого доступа к ядру.

* KubeVirt позволяет управлять VM как обычными подами. Это дает единый IaC-стек (Terraform/Crossplane): тебе не нужно отдельно описывать сеть для виртуалки и отдельно для контейнера.
* Мы получаем общие механизмы мониторинга, логирования и сетевые политики (Cilium/Calico) для всего парка сразу. В 2026-м инфраструктура должна быть однородной, даже если внутри — зоопарк из систем.


Вопрос 2: «В чем главная проблема производительности при запуске VM на ARM-архитектуре и как мы её решаем?»

Ответ новичка: «ARM просто медленнее, чем x86, поэтому виртуалки на нем тормозят».

Ответ инженера:
Проблема не в скорости ядер (ARM Neoverse в 2026-м рвет конкурентов), а в накладных расходах на эмуляцию устройств и обработку прерываний.

* Чтобы не терять 20-30% мощности, мы используем VirtIO и механизмы Hardware-assisted virtualization (вроде ARM Virtualization Extensions).
* Для сетевого трафика мы пробрасываем устройства через SR-IOV или используем DPDK, чтобы пакеты шли в обход виртуального свитча прямо в гостевую ОС. Это критично для отечественных ARM-кластеров, где мы выжимаем максимум из каждого ватта энергии.


Вопрос 3: «Что такое Cloud-Init и почему без него создание виртуалки в 2026 году считается ручным трудом?»

Ответ новичка: «Это скрипт, который ставит софт после того, как я зашел на сервер по SSH».

Ответ инженера:
Cloud-Init — это стандарт де-факто для автоматической настройки инстанса при первом запуске.

* Виртуалка в KubeVirt — это эфемерная сущность. Мы не заходим на неё «настроить сеть». Cloud-Init получает метаданные, сам создает пользователей, прокидывает SSH-ключи, настраивает статику в IPv6 и монтирует диски.
* Если виртуалка не поднялась через Cloud-Init — мы её прибиваем и пересоздаем. Ручная правка конфигов внутри VM — это путь к «дрейфу конфигурации» и хаосу в мониторинге.


---

Практический пример: Декларативная виртуалка в KubeVirt

Вот так в 2026 году выглядит «создание сервера». Никаких кликов мышкой в vCenter:


# vm-arm64-prod.yaml
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: legacy-app-server
spec:
running: true
template:
spec:
domain:
cpu:
cores: 4 # Оптимизировано под ARM ядра
resources:
requests:
memory: 8Gi
devices:
disks:
- name: containerdisk
disk: {}
- name: cloudinitdisk
disk: {}
volumes:
- name: containerdisk
containerDisk:
image: registry.corp.local/vms/debian-13-arm64:latest
- name: cloudinitdisk
cloudInitNoCloud:
userData: |
#cloud-config
users:
- name: admin_future
ssh_authorized_keys:
- ssh-ed25519 AAAAC3Nza...
runcmd:
- systemctl start specialized-service
Переход на KubeVirt и ARM — это не мода, а экономика. Ты либо управляешь тысячей серверов как одной сущностью, либо тонешь в тикетах на «создание одной маленькой виртуалки». В 2026 году админ — это не «хранитель ключей от серверной», а архитектор автоматизированных фабрик по переработке трафика.


Золотое правило: Если систему нельзя описать одним YAML-файлом — эта система не должна существовать в твоем продакшене.

#собеседование_AF #kubevirt #arm #baremetal #virtualization #kubernetes #admin_future
👍2