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
Аудит локальных админов на 1000 машинах (PowerShell)

Проблема: Вы уверены, что знаете, кто имеет права локального администратора на рабочих станциях? Вася из бухгалтерии, добавленный "на 5 минут" 2 года назад, — это огромная дыра в безопасности.
Решение: Этот PowerShell-скрипт берет список компьютеров (из файла или AD) и опрашивает их, вытаскивая состав группы "Администраторы".

PowerShell

#
# Get-RemoteLocalAdmins.ps1
# Аудит группы "Администраторы" на удаленных машинах
#
# --- НАСТРОЙКА ---
# 1. Либо получаем список компов из файла:
# $computers = Get-Content -Path "C:\temp\computers.txt"

# 2. Либо (лучше!) получаем из Active Directory (например, все W10 машины)
$computers = Get-ADComputer -Filter 'OperatingSystem -like "*Windows 10*"' | Select-Object -ExpandProperty Name
# --- КОНЕЦ НАСТРОЙКИ ---

$GroupName = "Администраторы" # Или "Administrators" для англ. версий
$Results = @()

Write-Host "Начинаю аудит $(computers.Count) машин..."

foreach ($computer in $computers) {
if (Test-Connection -ComputerName $computer -Count 1 -Quiet) {
Write-Host "Проверяю: $computer" -ForegroundColor Cyan
try {
# Используем CIM (современная замена WMI)
# Сначала получаем саму группу
$group = Get-CimInstance -ClassName Win32_Group -Filter "Name='$GroupName' AND LocalAccount='True'" -ComputerName $computer -ErrorAction Stop

# Затем получаем ее членов
$members = Get-CimInstance -ClassName Win32_GroupUser -Filter "GroupComponent='$($group.Path)'" -ComputerName $computer -ErrorAction Stop

foreach ($member in $members) {
$part = $member.PartComponent.Replace('"',"") # Очищаем путь
$domain = $part.Split("=")[1].Split(",")[0]
$name = $part.Split("=")[2].Split(",")[0]

$Results += [PSCustomObject]@{
Computer = $computer
Member = "$domain\$name"
}
}
} catch {
Write-Warning "Не удалось подключиться к $computer (WMI/CIM): $($_.Exception.Message)"
}
} else {
Write-Warning "Хост $computer не в сети."
}
}

Write-Host "--- РЕЗУЛЬТАТ АУДИТА ---" -ForegroundColor Green
# Группируем для удобного отчета
$Results | Group-Object -Property Member | Sort-Object -Property Count -Descending | Format-Table Name, Count

# Выгружаем полный CSV для анализа в Excel
$Results | Export-Csv -Path "C:\temp\LocalAdmin_Audit.csv" -NoTypeInformation -Encoding UTF8
Write-Host "Полный отчет сохранен в C:\temp\LocalAdmin_Audit.csv"

#АрхитекторскийЛайфхак: Запускайте этот скрипт по расписанию и используйте Compare-Object, чтобы сравнивать новый отчет со вчерашним. Так вы будете получать мгновенные алерты об изменениях в привилегированных группах.

#powershell #activedirectory #security #automation #windows
👍2
AI-ассистент для анализа логов (Концепт + Промпт)

Проблема: В auth.log (Linux) или Security (Windows) валятся тысячи событий. "Админ" ищет глазами Failed password. "Архитектор" просит AI найти аномалии, о которых он даже не подумал.
Решение: Мы не будем писать сложный парсер. Мы используем AI как интеллектуальный grep.

Концепт скрипта (Python/PowerShell):

Берем последние 2000 строк лога (/var/log/auth.log или Get-WinEvent -LogName Security -MaxEvents 2000).
Отправляем этот текст в API (Gemini, ChatGPT, Claude и т.д.).
Используем "архитекторский" промпт.
Промпт для AI (ваш копи-паст для экспериментов):

Plaintext

Ты — старший аналитик по кибербезопасности (SOC L3). Твоя задача — проанализировать предоставленный фрагмент лог-файла.

Игнорируй обычный "информационный шум" (например, успешные входы, плановые задачи).

Твоя цель — выявить **аномалии и потенциальные векторы атак**.

Ищи, но не ограничивайся этим:
- Атаки Brute-force (множественные неудачные входы с одного IP или для одного пользователя).
- Горизонтальное перемещение (успешный вход сразу после неудачного с другого хоста).
- Использование нестандартных портов или протоколов.
- Попытки повышения привилегий (su, sudo).
- Любые паттерны, которые выглядят подозрительно для эксперта.

Предоставь краткую сводку (Summary) и список (List) найденных угроз с указанием IP-адресов или имен пользователей. Если угроз нет, напиши: "Аномалий не выявлено".

Вот лог:
[...сюда вставляем 2000 строк вашего лога...]

#АрхитекторскийЛайфхак: Это — будущее администрирования. Мы не тратим время на парсинг, мы делегируем рутинный анализ машине, а сами принимаем решения на основе ее выводов.

#ai #security #logs #automation #ai4admin #devops
Windows: "Почему папка WinSxS весит 20 ГБ?!" Разбираемся с Component Store

Это главный "пожиратель" места на диске C:. И первая мысль админа: "Можно я это удалю?". Короткий ответ: НЕТ!
Архитектурный ответ: Папка WinSxS (Component Store) — это не просто "папка". Это база данных всех компонентов, обновлений и версий DLL вашей Windows. Файлы, которые вы видите в System32, — это в основном жесткие ссылки (hard links) на файлы внутри WinSxS.

Почему она растет? Каждое обновление (KB) добавляет новые версии компонентов, но старые не удаляются сразу. Они нужны для совместимости и возможности отката.
Как её чистить? Забудьте про cleanmgr.exe. Архитектор использует Dism.exe.
Две команды, которые вам нужны:
Анализ (Что можно удалить?): Запустите и посмотрите на строку "Component Store Cleanup Recommended".

PowerShell

Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

Глубокая очистка (Удалить старые версии обновлений): Эта команда удаляет все предыдущие версии компонентов, которые больше не нужны. После нее вы не сможете откатить последние обновления!

PowerShell

Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

Взгляд архитектора: Вы не просто "чистите диск". Вы управляете жизненным циклом компонентов ОС. Настройка StartComponentCleanup как запланированной задачи (Scheduled Task) — это часть проактивной стратегии по поддержанию "здоровья" парка серверов, а не реактивное тушение пожара "на диске C: кончилось место".

#windows #dism #winsxs #sysadmin #гайд
👍5
Linux: "Закрываем дверь". Автоматическая блокировка Brute-Force атак с fail2ban

Вы открыли SSH-порт (22) в мир. Поздравляем, через 5 минут вас начнут брутфорсить — боты будут подбирать пароль к root 24/7. Смотреть на это в auth.log больно.
fail2ban — это не антивирус. Это автоматизированный парсер логов, который на лету обновляет ваш файрвол (iptables/firewalld).

Как это работает:

Следит: fail2ban в реальном времени читает лог (например, /var/log/auth.log).
Находит: Он видит 3-5-10 неудачных попыток входа с одного IP (вы сами задаете число).
Блокирует: Он немедленно выполняет команду iptables -I INPUT -s <IP_АТАКУЮЩЕГО> -j DROP, блокируя IP на 10 минут, час или навсегда.

План внедрения "на пальцах":
Bash

1. Установка
sudo apt install fail2ban -y

2. Создаем свой конфиг (НИКОГДА не правьте jail.conf)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Что добавить в jail.local:
Ini, TOML

[DEFAULT]
# Баним на 1 час
bantime = 1h
# 5 неудачных попыток
maxretry = 5

[sshd]
# Включаем защиту для SSH
enabled = true
port = ssh
logpath = %(sshd_log)s

3. Перезапускаем: sudo systemctl restart fail2ban

Взгляд архитектора: Это активная защита. Вы не просто надеетесь на сложный пароль. Вы строите эшелонированную оборону (Defense in Depth). fail2ban — это "сторожевой", который автоматически отсекает 99% низкоуровневого "шума", позволяя вам сосредоточиться на реальных угрозах.

#linux #security #fail2ban #automation #cybersecurity #гайд
👍3
Docker на Windows: Зачем админу Linux-контейнеры? Разбираем WSL2

Для многих Windows-админов Docker — это что-то чуждое из мира Linux. Но Docker Desktop на Windows — это революция для вашего рабочего процесса.

Как это работает (под капотом): Docker Desktop использует WSL2 (Windows Subsystem for Linux). Он запускает настоящее ядро Linux в легкой виртуальной машине, интегрированной с Windows. Когда вы пишете docker run ubuntu, вы запускаете нативный Linux-контейнер внутри этого WSL2.

Зачем это Windows-админу?

Тестирование "как в бою": Вам нужно проверить, как ваш PowerShell-скрипт отработает на CentOS? docker run -it centos:7 pwsh. Вы получите чистую среду за 3 секунды.

Идеальное Dev-окружение: Разработчик принес вам приложение (Python, Node.js)? Не надо ставить 100500 библиотек себе в Windows. docker-compose up — и вы подняли точную копию его окружения у себя.

Доступ к Linux-экосистеме: Нужно быстро поднять Nginx, Redis, PostgreSQL или Gitea (как мы писали)? Вам больше не нужен отдельный Linux-сервер. Все это запускается в Docker на вашей Windows-машине.

Взгляд архитектора: WSL2 + Docker стирают границы между ОС. Архитектор получает универсальную, воспроизводимую среду. Проблема "у меня на машине работает, а на сервере нет" исчезает. Это первый шаг от "админа Windows" к "Full-stack DevOps-инженеру".

#windows #docker #wsl #devops #linux #гайд
Windows: "Призраки" в Active Directory. Охота на Lingering Objects

Это один из самых коварных и трудноуловимых багов репликации AD.

Что это: "Зависший объект" (Lingering Object) — это объект (например, пользователь), который был удален на одном контроллере домена (DC), но остался на другом DC, который был в оффлайне дольше, чем "время жизни" удаленного объекта (Tombstone Lifetime, обычно 60-180 дней).

Чем опасно: Ваш HelpDesk не может создать пользователя с именем ivanov (потому что "призрак" ivanov еще существует на одном из DC), Exchange падает с ошибками, GPO не применяются.

Как найти и уничтожить "призраков":

1. Включить строгую проверку репликации (Strict Replication Consistency): Это обязательно на всех DC! Это не ищет, а предотвращает появление новых "призраков".
PowerShell

repadmin /regkey * +strict


2. Найти "призраков": Эта команда — ваш сканер. Ее нужно запустить на каждом DC, используя в качестве "эталона" самый авторитетный DC.
PowerShell

# Запускаем в режиме "Advisory Mode" (только отчет)
# DC-Source - это ваш "чистый" DC (например, владелец FSMO)
# DC-Dest - это DC, который мы проверяем на "призраков"
repadmin /removelingeringobjects DC-Dest.corp.local DC-Source.corp.local-GUID corp.local /ADVISORY_MODE

Проанализируйте dcdiag.log, который будет создан. Если там есть "lingering objects" — переходим к шагу 3.

3. Уничтожить (если найдены на шаге 2):
PowerShell

# Убираем /ADVISORY_MODE, чтобы запустить реальное удаление
repadmin /removelingeringobjects DC-Dest.corp.local DC-Source.corp.local-GUID corp.local

Взгляд архитектора: Архитектор не просто чинит. Он строит надежную топологию репликации. Проблема "призраков" — это симптом. Коренная причина — плохая связность, выключенные на месяц DC или неправильное восстановление из бэкапа. repadmin — ваш скальпель, но лечить нужно саму архитектуру.

#windows #activedirectory #ad #replication #powershell #security #гайд #architect
👍2
Linux: "Кто трогал этот файл?" Настраиваем auditd — ваш черный ящик

fail2ban блокирует атаки. auditd — записывает всё, что происходит в системе. Это "бортовой самописец", который нужен для любого серьезного расследования инцидентов (IR).

auditd позволяет вам поставить "жучок" на любой файл, системный вызов или событие.

План внедрения "на пальцах":

1. Установка: sudo apt install auditd audispd-plugins (Ubuntu/Debian)

2. Настройка правил: Правила — это "что слушать". Они живут в /etc/audit/rules.d/. Создайте sudo nano /etc/audit/rules.d/99-custom.rules

Ini, TOML

# --- 99-custom.rules ---

# 1. Отслеживать ЛЮБЫЕ изменения в /etc/passwd и /etc/shadow
-w /etc/passwd -p wa -k 'identity_changes'
-w /etc/shadow -p wa -k 'identity_changes'

# 2. Отслеживать изменения в конфиге SSH
-w /etc/ssh/sshd_config -p wa -k 'ssh_config_changes'

# 3. Отслеживать вход пользователей с правами root (uid=0)
-a always,exit -F arch=b64 -S execve -F uid=0 -k 'root_activity'

# -w = watch file, -p wa = on write/attribute change, -k = key (для поиска)

3. Перезапуск: sudo systemctl restart auditd

4. Поиск событий: ausearch — это ваш grep для логов аудита.

Bash

# Показать все события, помеченные нашим ключом 'identity_changes'
sudo ausearch -k 'identity_changes'

# Показать, что делал root
sudo ausearch -k 'root_activity' | sudo aureport -f -i

Взгляд архитектора: auditd — это не "просто логи". Это доказательная база для ИБ. Архитектор не просто включает его, он интегрирует его (audispd) с централизованным SIEM (Splunk, ELK). Когда auditd на 100 серверах шлет события в одну точку, вы можете в реальном времени видеть, как атака (например, Lateral Movement) движется по вашей сети.

#linux #security #auditd #sre #cybersecurity #гайд #команды
🔥2
AI-промпт: "Напиши и ОБЪЯСНИ мне этот RegEx"

Регулярные выражения (RegEx) — это язык, на котором 90% админов не говорят, а 10% — думают. Это чистая магия для парсинга логов, Nginx-конфигов или валидации данных. Но писать их — боль.

AI — идеальный переводчик с "человеческого" на "RegEx".

Плохой промпт: регулярка для IP-адреса Результат: \b(?:\d{1,3}\.){3}\d{1,3}\b (А почему? А 256.999.1.1 подойдет?)

Архитектурный промпт (для ChatGPT/Gemini/Copilot):

Выступи в роли эксперта по RegEx и инженера по парсингу логов.
Мне нужен RegEx-паттерн, который находит и извлекает (captures) IPv4-адреса.

Требования:
1. Паттерн должен валидировать каждый октет (от 0 до 255).
2. Он НЕ должен находить невалидные адреса (например, 999.999.999.999).

Формат ответа:
1. Паттерн: [Сам RegEx-паттерн]
2. Объяснение: Предоставь построчное объяснение, что делает каждая группа и каждый символ в паттерне (`\b`, `(?:`, `(25[0-5]|... )` и т.д.).
3. Пример для `grep`: Как использовать этот паттерн с `grep -E`.
4. Пример для `Python`: Как использовать этот паттерн в Python-скрипте.

Взгляд архитектора: AI не просто дал вам "рыбу". Он научил вас. Вы получили не просто RegEx, а полную документацию к нему. Архитектор не использует "черные ящики", которые он скопировал со Stack Overflow. Он понимает, как работает каждый компонент его системы, даже если это RegEx, сгенерированный AI.

#ai4admin #regex #bash #python #automation #промпты #sre
2
База знаний: Огромный сборник шпаргалок по кибербезопасности

Админ не может знать всё. Архитектор знает, где найти всё.

Перед вами — сокровищница знаний по кибербезопасности в одном GitHub-репозитории.

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

Забираем себе в закладки: https://github.com/Ignitetechnologies/Mindmap

#security #cybersecurity #pentest #osint #forensics #musthave #гайд #обучение
3
AD: FSMO-роли — Ваш "Генштаб" домена. Передача и Захват ролей

О ролях FSMO (Flexible Single Master Operations) вспоминают, когда становится по-настоящему жарко: при восстановлении домена, миграции или когда "любимый" DC внезапно вышел из строя. И да, про них очень любят спрашивать на собеседованиях.

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

Напомним 5 главных ролей (и их "хозяев"):

Уровень леса (один на весь лес):

Schema Master: Изменение схемы AD (добавление новых атрибутов).

Domain Naming Master: Добавление/удаление доменов в лесу.

Уровень домена (один на каждый домен): 3. PDC Emulator: Синхронизация времени, блокировки паролей, "босс" для GPO. Самая нагруженная. 4. RID Master: Раздает уникальные ID (RID) для создания пользователей и групп. 5. Infrastructure Master: Синхронизация объектов между доменами.

Как узнать текущих владельцев (2 команды):
PowerShell

# Роли уровня ДОМЕНА (PDC, RID, Infrastructure)
netdom query fsmo
# Роли уровня ЛЕСА (Schema, Domain Naming)
Get-ADForest | Select-Object DomainNamingMaster, SchemaMaster

1. Передача FSMO-ролей (планово): Это штатная процедура. Когда вы повышаете новый DC и хотите перенести роли со старого, или перед выводом DC из эксплуатации.

PowerShell

# Передаем роль Schema Master на DC с именем target-dc01
Move-ADDirectoryServerOperationMasterRole -Identity target-dc01 -OperationMasterRole SchemaMaster

# Можно передать сразу несколько ролей
Move-ADDirectoryServerOperationMasterRole -Identity target-dc01 -OperationMasterRole DomainNamingMaster, SchemaMaster, RIDMaster, PDCEmulator, InfrastructureMaster

2. Захват FSMO-ролей (аварийно): Это аварийная процедура (Seizing). Используется, когда DC-владелец роли полностью и безвозвратно вышел из строя. Старый DC никогда не должен быть запущен снова!

PowerShell

# Захватываем роль PDC Emulator на DC с именем targetDC2
Move-ADDirectoryServerOperationMasterRole -Identity targetDC2 -OperationMasterRole PDCEmulator –Force

Взгляд архитектора: Архитектор не просто "передает" или "захватывает" роли. Он планирует Disaster Recovery (DR).

Где хранятся FSMO-роли? Это часть вашего DR-плана.

Как часто проверяется статус ролей? Автоматический аудит repadmin /replsummary и netdom query fsmo должен быть в мониторинге.

Какое DC будет следующим владельцем FSMO-ролей при сбое? Это должно быть задокументировано и готово к выполнению по скрипту.


#windows #activedirectory #fsmo #powershell #sysadmin #гайд #musthave
👍2
Внимание: Фишеры "переворачивают" URL в вашем браузере!

Исследователи снова бьют тревогу из-за техники фишинга "BiDi Swap". Она не требует взлома, а просто обманывает ваши глаза.

Суть атаки: Злоумышленники используют специальные Unicode-символы (для языков с письмом справа-налево, как арабский). Из-за этого браузер визуально "переворачивает" домен.

Пример:

Вы видите в строке: www.microsoft.com/login

Реальная ссылка: www.com-evil-site/login

Взгляд архитектора: Это не баг сервера, это атака на UI/UX. Злоумышленники эксплуатируют то, как браузер отображает текст. Это доказывает, что технические средства защиты (файрволы, антивирусы) бессильны, если не защищен "слой 8" — человек.

Решение:

Никогда не доверяйте отображаемой ссылке.

Всегда наводите курсор и смотрите на реальный URL в левом нижнем углу браузера.

Обучайте пользователей.

Подробности: https://www.securitylab.ru/news/565259.php

#security #phishing #cybersecurity #гайд #zero_trust
Мы запускаем официальную рекламную кампанию в Telegram, чтобы наше сообщество росло, и мы могли привлекать еще больше крутых специалистов.

Поэтому вы можете увидеть в ленте 1-2 коротких поста в специальном "рекламном" формате (как те, что будут ниже этого). Не удивляйтесь — это для привлечения новой аудитории.

Наш обычный, глубокий контент (гайды, скрипты и разборы) остается в силе и выходит по расписанию. Спасибо, что вы с нами и помогаете строить "Admin Future"!
🔥6
Admin Future: Ваша библиотека IT-инженера. От скриптов до архитектуры.

В мире IT недостаточно просто "знать команды". Нужна система, чтобы строить по-настоящему надежные и эффективные инфраструктуры.

Admin Future — это ваш персональный гид и ресурс, где собраны только проверенные решения и глубокие разборы:

Автоматизация без головной боли: Готовые Ansible-плейбуки, Terraform-шаблоны, продвинутые Bash и PowerShell скрипты.
Безопасность на практике: Гайды по BloodHound, auditd, WSUS-аудиту — всё, чтобы защитить вашу сеть.
Глубокий Linux: Разбираем systemd, eBPF, lsof — заглядываем под капот системы.

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

Подписывайтесь и начните использовать эти знания уже сегодня.

Ваше место здесь: https://t.me/admin_future_channel
3
Admin Future: От Админа к Архитектору. Начните проектировать будущее.

Напарник, хватит работать в реактивном режиме. Админ решает проблему. Архитектор её предотвращает.

Надоело просто "чинить" системы? Хотите строить инфраструктуру, которая не ломается, а эффективно работает и развивается? Тогда вам к нам.

Admin Future — это канал для тех, кто готов расти. Мы даем не мемы, а систему знаний для перехода на следующий уровень:

Практическая Автоматизация: Готовые PowerShell и Bash скрипты, которые решают реальные задачи.
Фундаментальная Безопасность: Гайды по LAPS, DNS Sinkhole, fail2ban — всё, что реально защищает.
Архитектурные Принципы: Разборы IaC, Pets vs Cattle, Zero Trust — как строить scalable и resilient системы.

Мы не постим мемы и "водные" статьи. Мы даём конкретные инструменты и подходы, чтобы вы могли двигаться вперед, от простого исполнителя к стратегу.

Присоединяйтесь и начните строить будущее уже сегодня.

Ваше место здесь: https://t.me/admin_future_channel
Windows: "Журнал переполнен!" Как управлять Event Log'ами на 100+ серверах

"На сервере SRV-APP01 переполнен журнал Application". Классический тикет в понедельник.

Реакция админа: Подключиться по RDP, открыть Event Viewer, нажать "Clear Log..." (и уничтожить все улики инцидента).

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

Для этого не нужны агенты. Используем встроенный wevtutil (Windows Event Utility).

Команда, чтобы узнать текущий конфиг:

PowerShell

# Показывает размер, политику хранения
wevtutil get-log "Application"

Команда, чтобы настроить "по-умному": Это "золотой стандарт" для серверов.

PowerShell

# /rt:true - Включаем хранение (Retention).
# /ab:true - Включаем AutoBackup. Лог будет архивироваться при заполнении.
# /ms:1024m - Устанавливаем максимальный размер в 1ГБ.
wevtutil set-log "Application" /rt:true /ab:true /ms:1024m

Теперь журнал Application никогда не "переполнится". Он будет автоматически бэкапиться в %SystemRoot%\System32\Winevt\Logs в формате .evtx, и логирование продолжится.

Взгляд архитектора: Вы не просто "исправили" проблему на одном сервере. Вы разработали стандарт. Этот стандарт "заворачивается" в GPO (через Preferences) или в Ansible/PowerShell DSC и применяется ко всему парку серверов, гарантируя, что у вас всегда будут логи для расследования (IR) и аудита.

#windows #logging #security #powershell #sysadmin #гайд
👍2
ping — это не просто "жив/мертв". Диагностируем MTU как SRE

Все используют ping <host>, чтобы проверить, "поднят" ли сервер. Но 90% проблем в сети — не "упало", а "тормозит" или "теряет пакеты".

Продвинутый инженер использует ping для диагностики MTU (Maximum Transmission Unit).

Сценарий: Сервер пингуется, SSH работает, но apt update или git clone "виснут". Скорее всего, у вас MTU Black Hole.

Как найти проблему: Мы отправляем пакет с флагом DF (Don't Fragment) и вручную меняем его размер, пока не найдем "потолок".

Команда "скальпель":

Bash

# -c 3 = отправить 3 пакета
# -M do = установить DF-бит (Don't Fragment)
# -s 1472 = размер полезной нагрузки (1472 + 28 байт заголовков = 1500)
ping -c 3 -M do -s 1472 google.com

* Получили ответ? Отлично, 1500 MTU работает.

* Получили Frag needed and DF set? БИНГО! Пакет слишком большой. Уменьшайте размер (-s 1462, -s 1452...) пока пакеты не пойдут.

* Вы нашли "потолок", например, 1452. Это и есть ваш MSS.

Взгляд архитектора: Вы не просто "пингуете". Вы валидируете 3-й уровень (L3) вашей сети. Вы не гадаете, а доказываете наличие проблемы с MTU. Это позволяет вам пойти к сетевым инженерам не с жалобой "у меня тормозит", а с фактом: "На этом маршруте Path MTU Discovery не работает, пакеты с MTU > 1480 дропаются. Проверяйте конфиг ip tcp mss-adjust".

#linux #networking #ping #sre #diagnostics #команды #гайд
SELinux: Хватит делать setenforce 0. Учимся "читать" логи аудита

"Приложение не работает. Наверное, SELinux. setenforce 0... О, заработало! Готово".

Это — самый опасный рефлекс системного администратора. Вы только что отключили самый мощный механизм защиты в ядре Linux, который мог бы спасти вас от 0-day уязвимости.

SELinux (Security-Enhanced Linux) — это Mandatory Access Control (MAC). Он не дает root-процессу, если он скомпрометирован (например, Nginx), читать /etc/shadow. Он работает по принципу "запрещено всё, что явно не разрешено политикой".

Проблема: Как "разрешить", не отключая всю систему? Решение: auditd и audit2allow.

План "Архитектора" по решению SELinux-проблемы (на 3 минуты):

Сценарий: Ваш Nginx не может прочитать файлы в /srv/www/html. Вы видите Permission Denied.

1. Проверьте, что это SELinux:
Bash

# Временно переводим в "разрешающий" режим (только логи, без блокировки)
sudo setenforce 0

# Проверяем, заработало ли приложение. Если да — виновник 100% SELinux.

# ВОЗВРАЩАЕМ ЗАЩИТУ!
sudo setenforce 1

2. Находим причину в логах аудита: auditd пишет все "denied" в /var/log/audit/audit.log.
Bash

# Находим все отказы SELinux за последнее время
sudo ausearch -m AVC -ts recent

# ...или "классика"
sudo grep "denied" /var/log/audit/audit.log | tail -n 5

Вы увидите строку, где comm="nginx" (процесс) пытался read (действие) на path="/srv/www/html/index.html" (цель).

3. Генерируем "исключение" (магия): Утилита audit2allow читает этот лог и сама пишет модуль политики за вас.
Bash

# 1. Собираем все недавние отказы в один файл
sudo ausearch -m AVC -ts recent > /tmp/nginx_denials.log

# 2. Генерируем модуль (myNginxFix)
sudo audit2allow -M myNginxFix -i /tmp/nginx_denials.log

# 3. Устанавливаем этот модуль в политику
sudo semodule -i myNginxFix.pp

Готово. Вы не "отключили" безопасность. Вы уточнили политику, разрешив только Nginx читать только вашу папку.

Взгляд архитектора: setenforce 0 — это признание поражения. semodule -i ... — это инженерное решение. Архитектор управляет политиками безопасности, а не отключает их. Это и есть Principle of Least Privilege (Принцип наименьших привилегий) в действии.

#linux #security #selinux #audit #sre #гайд #musthave
Linux: "Кто съел весь канал?" top для вашей сети — nethogs

Классическая проблема: сервер "тормозит", вы запускаете top — CPU в норме, iotop — диски спят. Но пинги высокие, а ssh лагает. Кто-то "ест" всю полосу пропускания, но кто?

netstat и ss покажут соединения. nethogs покажет, какой ПРОЦЕСС генерирует этот трафик.

Как это работает: nethogs — это top для сети. Он группирует трафик по PID и показывает, сколько KB/sec отправляет и получает каждый процесс в реальном времени.

Установка и запуск:
Bash

# Ubuntu/Debian
sudo apt update && sudo apt install nethogs

# RHEL/CentOS
sudo yum install nethogs

Запуск (обязательно с sudo):
Bash

# 1. Мониторить весь трафик
sudo nethogs

# 2. Мониторить только один интерфейс (например, eth0)
sudo nethogs eth0

Вы увидите интерактивный список: PID - USER - PROGRAM - INTERFACE - SENT - RECEIVED.

Взгляд архитектора: Вы не просто "смотрите" на трафик. Вы проводите аудит. Вы можете мгновенно определить:
* backup.sh (rsync), который забыли ограничить по скорости.
* Скомпрометированный apache2, который стал частью ботнета и рассылает спам.
* java-приложение с утечкой данных.

Это переход от "наверное, сеть" к "процесс PID 1234, запущенный от user www-data, шлет 50 МБ/с на этот IP".

#linux #networking #sre #diagnostics #nethogs #команды #гайд
Windows: "Пятничный аудит дисков". Собираем отчет о месте на 100 серверах

Нет ничего хуже, чем получить в субботу critical alert "Disk C: is full on SERVER-SQL-01". Это 100% предотвратимая проблема.

Реакция админа: Вручную проверять 10 серверов. Реакция архитектора: За 5 минут до ухода домой запустить скрипт, который проверит все серверы и пришлет отчет.

Этот PowerShell-скрипт — ваш аудитор "на выходные".

Что делает скрипт:

1. Берёт список серверов из $ServerList.
2. Параллельно (-Parallel) опрашивает их через WMI.
3. Собирает данные только по дискам, заполненным более чем на 85%.
Код скрипта:
PowerShell

[CmdletBinding()]
param (
[string[]]$ServerList = @(
"DC01",
"SQL01",
"APP01",
"FILESRV01"
# ...добавьте все свои серверы
),
[int]$ThresholdPercent = 85
)

Write-Host "--- Начинаю аудит дисков (пороговое значение: $ThresholdPercent%). ---" -ForegroundColor Cyan

# Используем ForEach-Object -Parallel для ускорения.
# ThrottleLimit - сколько серверов опрашивать ОДНОВРЕМЕННО.
$Report = $ServerList | ForEach-Object -Parallel {
$Server = $_
$ErrorActionPreference = 'SilentlyContinue' # Игнорировать недоступные хосты

Get-CimInstance -ComputerName $Server -ClassName Win32_LogicalDisk -Filter "DriveType=3" |
Select-Object @{Name="Server"; Expression={$Server}},
DeviceID,
@{Name="SizeGB"; Expression={[math]::Round($_.Size / 1GB, 2)}},
@{Name="FreeGB"; Expression={[math]::Round($_.FreeSpace / 1GB, 2)}},
@{Name="PercentFree"; Expression={[math]::Round(($_.FreeSpace / $_.Size) * 100, 2)}}
} -ThrottleLimit 10

# Фильтруем по порогу и выводим отчет
$CriticalDisks = $Report | Where-Object { $_.PercentFree -lt (100 - $ThresholdPercent) }

if ($CriticalDisks) {
Write-Host "`n[!!!] ВНИМАНИЕ! ОБНАРУЖЕНЫ КРИТИЧЕСКИЕ ДИСКИ: " -ForegroundColor Red
$CriticalDisks | Format-Table
} else {
Write-Host "`n[OK] Все диски в норме. Можно спокойно уходить на выходные." -ForegroundColor Green
}

Взгляд архитектора: Это проактивное управление ёмкостью (Capacity Management). Вы не ждете сбоя. Вы получаете данные для принятия решений: "На FILESRV01 нужно выделить место" или "На APP01 лог-файлы растут слишком быстро". Следующий шаг — поставить этот скрипт в Scheduled Task на 16:00 пятницы.

#windows #powershell #automation #sre #скрипты #audit
👎1
Проект на выходные: Homer — ваш идеальный Dashboard для Home Lab

У вас 10+ self-hosted сервисов: Proxmox, Gitea, Uptime Kuma, Nginx Proxy Manager... И вы держите все их IP и порты в голове или в закладках браузера. Это хаос.

Homer — это ваш единый, красивый "пульт управления" для всех ваших сервисов. Это просто статический HTML/YAML сайт.

Почему Homer, а не другие:

* Конфигурация как Код (IaC): Вы не "кликаете" в GUI. Вы описываете свой дашборд в одном config.yml файле.
* Легковесность: Это просто статика. Не нужна БД. Потребляет 0% CPU.
* Интеграции: Показывает "статус" (зеленый/красный) для ваших сервисов.
* Идеально для GitOps: Храните ваш config.yml в Git (на Gitea, который мы ставили!), и ваш дашборд будет версионируемым.

Как запустить (в Docker за 30 сек):
Bash

# 1. Создайте папку и конфиг
mkdir -p /opt/homer/data
touch /opt/homer/data/config.yml

# 2. Запустите контейнер
docker run -d \
-p 8080:8080 \
-v /opt/homer/data:/www/assets \
--name homer \
b4bz/homer:latest

Теперь откройте http://<ip>:8080 и начните редактировать config.yml, добавляя свои сервисы.

Взгляд архитектора: Это "Single Pane of Glass" (Единое окно). Архитектор не ищет инструменты, он организует их. Homer — это не просто "красиво". Это точка входа в вашу инфраструктуру, которая экономит время и снижает когнитивную нагрузку.

#linux #docker #selfhosted #homelab #devops #гайд #weekendproject