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

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


Админ - @maksimshap
Download Telegram
AI-промпт: Генерация Regex за 30 секунд

Регулярные выражения (Regex) — мощнейший инструмент для парсинга логов, валидации данных и поиска. Но писать их вручную — это боль. Давайте делегируем это AI.

Задача: Нам нужен Regex для проверки пароля. Требования: минимум 8 символов, одна заглавная буква, одна строчная буква, одна цифра и один спецсимвол.

Плохой промпт: сделай regex для пароля
Результат будет неточным и без объяснений.

Хороший промпт (для ChatGPT/Gemini/Copilot):

Выступи в роли эксперта по регулярным выражениям.

Создай Regex-паттерн для валидации пароля, который соответствует следующим правилам:
1. Минимальная длина: 8 символов.
2. Максимальная длина: 64 символа.
3. Должен содержать как минимум одну заглавную букву (A-Z).
4. Должен содержать как минимум одну строчную букву (a-z).
5. Должен содержать как минимум одну цифру (0-9).
6. Должен содержать как минимум один специальный символ из набора: !@#$%^&*()_+-=[]{}|;:,.<>?

Предоставь ответ в следующем формате:
- **Паттерн:** [сам regex]
- **Объяснение:** Детально разбери каждую часть паттерна и объясни, как она работает, используя lookaheads.
- **Примеры:** Приведи 3 примера строк, которые соответствуют паттерну, и 3 примера, которые не соответствуют.

Почему это работает?

Роль: эксперт по регулярным выражениям задаёт контекст.
Чёткие правила: Вы даёте машине исчерпывающие требования.
Формат вывода: Вы заставляете AI структурировать ответ, что делает его полезным и понятным.

Экономьте своё время на рутине. Архитектор ценит свой мыслительный ресурс и автоматизирует всё, что можно автоматизировать.

#ai4admin #regex #powershell #bash #automation #промпты
2
Windows: Хватит кликать по Event Viewer! Фильтруем логи как профи с PowerShell

Журнал событий (Event Viewer) — мощный инструмент, но его графический интерфейс медленный и неудобный для поиска конкретных событий. Когда на сервере происходят тысячи событий в минуту, вам нужен скальпель, а не молоток.

Get-WinEvent — это ваш скальпель. Этот PowerShell-командлет позволяет мгновенно фильтровать и анализировать любые системные журналы.

Практические примеры:

Найти 10 последних ошибок в системном журнале:

PowerShell

Get-WinEvent -LogName System -MaxEvents 10 -FilterXPath "*[System[Level=2]]"

Level=2 — это ошибки (Errors).

Найти все неудачные попытки входа (RDP/локальные) за последние 24 часа:
Это самый мощный способ — фильтрация через хеш-таблицу.

PowerShell

$StartTime = (Get-Date).AddDays(-1)
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
Id = 4625 # ID события "An account failed to log on"
StartTime = $StartTime
} | Select-Object TimeCreated, Message

Проверить тот же лог на удалённом сервере:
Просто добавьте параметр -ComputerName.

PowerShell

Get-WinEvent -ComputerName DC01 -FilterHashtable @{LogName='Security'; Id=4625}

Интерактивный поиск:
Для быстрой визуальной фильтрации отправьте результат в Out-GridView.

PowerShell

Get-WinEvent -LogName Application | Out-GridView

Откроется интерактивное окно, где можно сортировать и фильтровать события по любому полю.

Взгляд архитектора:
Умение быстро работать с логами из командной строки — это основа для создания систем автоматического реагирования. Скрипты на основе Get-WinEvent могут отправлять алерты в Telegram/Slack при появлении критических событий, собирать статистику для отчётов по безопасности и проводить аудит действий пользователей по всей инфраструктуре.

#windows #powershell #security #logging #audit #команды
Linux: Настрой и забудь. Автоматические обновления безопасности с Unattended-Upgrades

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

Архитектурно правильное решение — автоматизировать установку только критически важных обновлений безопасности, чтобы минимизировать риски простоя и обеспечить базовую защиту. В Ubuntu/Debian для этого есть unattended-upgrades.

Пошаговая настройка:

Установка (если его ещё нет):

Bash

sudo apt update
sudo apt install unattended-upgrades

Основная конфигурация:
Откройте файл /etc/apt/apt.conf.d/50unattended-upgrades. Найдите и раскомментируйте (уберите //) строку, отвечающую за security-апдейты:

// Раскомментировать эту строку:
"${distro_id}:${distro_codename}-security";

Это разрешает установку обновлений только из репозитория безопасности.
В этом же файле можно настроить отправку отчётов на email или автоматическую перезагрузку, если она требуется.

Включение автоматического запуска:
Откройте файл /etc/apt/apt.conf.d/20auto-upgrades и убедитесь, что его содержимое выглядит так:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Первая строка включает ежедневное выполнение apt update. Вторая — ежедневный запуск unattended-upgrade.

Проверка и отладка:
Вы можете запустить процесс в "сухом" режиме, чтобы посмотреть, что именно будет обновлено:

Bash

sudo unattended-upgrades --dry-run --debug

Все логи работы хранятся в /var/log/unattended-upgrades/.

Взгляд архитектора:
Это не просто скрипт в кроне. Это компонент зрелой стратегии управления уязвимостями. Он обеспечивает постоянный базовый уровень безопасности для всего парка машин, освобождая время инженера для более сложных задач. Риск "сломать всё" минимален, так как обновления приложений и ядра (которые могут повлиять на совместимость) остаются для установки вручную.

#linux #security #automation #ubuntu #debian #гайд
Мониторинг: Сервер онлайн, а сайт лежит. Что такое Health Checks и зачем они вам?

Классический мониторинг (CPU, RAM, Disk) отвечает на вопрос: «Жива ли операционная система?». Но он не отвечает на главный вопрос: «Работает ли наш сервис?». Сервер может быть в порядке, но приложение внутри — зависнуть или потерять связь с базой данных.

Health Checks (проверки здоровья) — это конечные точки (endpoints) в вашем приложении, которые отвечают на вопрос о его внутреннем состоянии.

Простой пример:
Представьте, что у вас есть веб-приложение. Вы создаёте в нём специальный URL, например, /health.

Когда система мониторинга обращается к http://myapp.local/health, приложение выполняет внутреннюю проверку:

Может ли оно подключиться к своей базе данных?

Доступен ли кэш (Redis)?

Есть ли место в очереди сообщений (RabbitMQ)?

Если всё хорошо, оно возвращает HTTP-статус 200 OK и простое сообщение {"status": "ok"}.

Если есть проблема (например, отвалилась БД), оно возвращает 503 Service Unavailable.

Как это проверить даже вручную?

Bash

curl -s -o /dev/null -w "%{http_code}" http://myapp.local/health
# Ожидаемый здоровый ответ: 200
# Любой другой ответ (500, 503, 000) - это сигнал тревоги

Взгляд архитектора:
Health checks — это основа для построения отказоустойчивых и самовосстанавливающихся систем.

Балансировщики нагрузки (Nginx, HAProxy) используют их, чтобы автоматически убирать из ротации "заболевшие" серверы.

Оркестраторы (Kubernetes, Docker Swarm) с помощью health checks понимают, что контейнер завис, и его нужно автоматически перезапустить.

Системы мониторинга (Zabbix, Prometheus) создают на их основе осмысленные алерты, которые сигнализируют о реальной проблеме, влияющей на пользователя.

Начните требовать от разработчиков такие эндпоинты. Это переход от мониторинга инфраструктуры к мониторингу качества сервиса (SRE).

#devops #monitoring #sre #architect #linux #гайд
👍2
Linux & macOS: Устал читать man? Получай примеры команд за 1 секунду с tldr

Страницы man — это исчерпывающе, но когда тебе срочно нужно запаковать папку в tar или найти файл по размеру, читать трактат на 10 страниц нет времени.

tldr (Too Long; Didn't Read) — это утилита, которая показывает самые частые примеры использования команд. Никакой "воды", только практика.

Установка:

Bash

# macOS
brew install tldr

# Ubuntu/Debian
sudo apt install tldr

# Другие ОС (через Node.js)
npm install -g tldr

Сравним на примере tar:

man tar: Выдаст вам огромный мануал об истории tar, всех возможных флагах и опциях.

tldr tar: Покажет вам это:

# Создать архив из файлов:
tar -cvf target.tar file1 file2

# Создать gzip-архив:
tar -czvf target.tar.gz file1 file2

# Распаковать архив в текущую директорию:
tar -xvf source.tar

# Распаковать gzip-архив:
tar -xzvf source.tar.gz

# Посмотреть содержимое архива:
tar -tvf source.tar

Ещё пара примеров:
tldr find — покажет, как искать по имени, расширению, размеру.
tldr docker — даст базовые команды для работы с контейнерами и образами.

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

#linux #macos #cli #tldr #productivity #команды
👍2
macOS: Воспроизводимая среда с Homebrew. Управляем софтом через Brewfile

Каждый раз, настраивая новый Mac, вы вручную ставите десятки утилит и приложений через brew install ...? Это долго и легко что-то забыть.

Архитектурный подход — описать всё необходимое ПО в одном файле и развернуть среду одной командой. Для Homebrew такой файл называется Brewfile.

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

Создаём "снимок" текущей системы:
Если у вас уже настроен Mac, создайте Brewfile из установленных пакетов:

Bash

brew bundle dump

Эта команда создаст в текущей директории файл Brewfile со всем, что у вас установлено.

Создаём Brewfile вручную (рекомендуется):
Создайте текстовый файл с именем Brewfile и опишите в нём всё, что вам нужно. Это даёт чистую и осознанную конфигурацию.

Ruby

# Добавляем сторонний репозиторий (tap)
tap "homebrew/cask-fonts"

# CLI-утилиты (formulae)
brew "git"
brew "htop"
brew "wget"
brew "tldr"

# GUI-приложения (casks)
cask "visual-studio-code"
cask "iterm2"
cask "docker"

# Шрифты для терминала/редактора
cask "font-fira-code-nerd-font"

Разворачиваем на новой машине:
Скопируйте ваш Brewfile на новый Mac (например, через Git) и выполните:

Bash

brew bundle install

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

Взгляд архитектора:
Brewfile — это Конфигурация как Код (Configuration as Code) для вашей рабочей станции.

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

Версионирование: Храните его в Git. Теперь у вас есть история изменений и резервная копия вашей идеальной среды.

Автоматизация: Ускоряет настройку нового компьютера с нескольких часов до нескольких минут.

#macos #homebrew #automation #iac #гайд
🔥2
От Админа к Архитектору: 5 столпов, на которых стоит ИТ-инфраструктура

Проектировать надёжные системы, а не просто чинить их — значит мыслить в нескольких измерениях одновременно. Это и есть работа архитектора. Любое техническое решение, от выбора типа VM до настройки VPN, должно оцениваться по этим пяти критериям.

🛡️ Безопасность (Security):
Не просто "настроить файрвол". Это принцип наименьших привилегий, управление доступом (IAM), шифрование данных (в пути и в хранилище), регулярный аудит и управление секретами.
Вопрос для самопроверки: Где ваши скрипты хранят пароли?

⚙️ Надёжность (Reliability):
Не просто "99% аптайма". Это отказоустойчивость (fault tolerance), планы аварийного восстановления (DRP), регулярное тестирование бэкапов и построение самовосстанавливающихся систем (например, health checks в Kubernetes).
Вопрос для самопроверки: Вы уверены, что ваши бэкапы можно восстановить прямо сейчас?

🚀 Производительность (Performance Efficiency):
Не просто "купить процессор помощнее". Это правильный выбор ресурсов под задачу, оптимизация баз данных, использование кеширования (Redis, CDN) и мониторинг узких мест (bottlenecks).
Вопрос для самопроверки: Какой компонент вашей системы упадёт первым при росте нагрузки в 10 раз?

💰 Оптимизация затрат (Cost Optimization):
Не просто "выбрать самый дешёвый сервер". Это понимание моделей ценообразования (особенно в облаках), автоматическое отключение dev-стендов на ночь, использование spot-инстансов и постоянный поиск ресурсов, которые тратят деньги впустую.
Вопрос для самопроверки: Сколько стоит час простоя вашего главного сервиса? А час его работы?

🛠️ Операционное совершенство (Operational Excellence):
Фундамент, на котором стоят остальные. Это автоматизация всего, что можно (Infrastructure as Code), CI/CD для развёртывания, централизованный сбор логов и метрик, и наличие понятных инструкций (runbooks) для решения инцидентов.
Вопрос для самопроверки: Какую рутинную задачу вы автоматизируете следующей?

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

#architect #devops #sre #security #career #гайд
Аудит и чистка SSH-ключей в authorized_keys

Со временем файлы ~/.ssh/authorized_keys на серверах превращаются в свалку из десятков ключей: от бывших сотрудников, старых ноутбуков, CI/CD систем. Каждый забытый ключ — это потенциальная дверь в вашу инфраструктуру.

Воскресенье — идеальное время для ревизии.

Ваш чек-лист по аудиту:

Найдите все файлы authorized_keys:

Bash

# Ищем в домашних директориях и у root
find /home /root -name "authorized_keys"

Проверьте на слабые типы ключей:
Ключи ssh-dss (DSA) и ssh-rsa длиной 1024 бит считаются устаревшими и небезопасными.

Bash

# Эта команда подсветит строки со старыми типами ключей
grep -E 'ssh-dss|ssh-rsa' /path/to/authorized_keys

Что делать: Свяжитесь с владельцем и попросите сгенерировать новый ключ типа ed25519 или rsa (3072/4096 бит).

Добавьте осмысленные комментарии:
Каждый ключ должен иметь комментарий, отвечающий на вопрос «Кто, откуда и когда?». Это золотой стандарт.

ssh-ed25519 AAAA... alice@workstation-2025-10-05
ssh-ed25519 AAAA... jenkins-ci@build-server

Сверяйте отпечатки (fingerprints):
Чтобы не сравнивать гигантские строки, получите отпечаток публичного ключа. Это проще и надёжнее.

Bash

# Команда выполняется на машине, где лежит ПУБЛИЧНЫЙ ключ
ssh-keygen -lf my_key.pub

Сравните его с отпечатком ключа на сервере.

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

#linux #security #ssh #audit #гайд #чеклисты
План на неделю: 3 технологии, на которые стоит потратить время

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

Для админов Windows: Chocolatey

Что это: Мощный, управляемый сообществом менеджер пакетов для Windows. "Старший брат" Winget.

Зачем: У Chocolatey огромный репозиторий пакетов и расширенные возможности для скриптов установки/удаления. Умение работать и с Winget, и с Chocolatey позволяет решать 100% задач по автоматизации ПО в Windows-среде. Это признак эксперта.

Для админов Linux: Podman

Что это: Движок для контейнеров без демона, позиционируется как полная замена Docker.

Зачем: Podman по умолчанию работает в режиме rootless (без прав суперпользователя), что гораздо безопаснее. Он нативно интегрируется с systemd для управления жизненным циклом контейнеров. Понимание его преимуществ — это шаг в сторону современных и более защищённых контейнерных сред.

Для всех (концепция): Zero Trust (Нулевое доверие)

Что это: Модель безопасности, основанная на принципе «никогда не доверяй, всегда проверяй». В ней нет понятия «внутренней доверенной сети». Каждый запрос, даже внутри периметра, должен быть аутентифицирован и авторизован.

Зачем: Это будущее корпоративной безопасности в мире облаков и удалённой работы. Изучите базовые понятия: микросегментация, Identity-Aware Proxy (IAP), MFA. Это изменит ваш подход к проектированию сетей и доступов.

Выберите одну тему и посвятите ей пару вечеров. Какой будет ваш выбор?

#career #learning #windows #chocolatey #linux #podman #security #zerotrust
Быстрая проверка всех Windows-серверов

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

Этот PowerShell-скрипт пробежится по списку ваших серверов и покажет статус ключевых служб, аптайм и свободное место на диске.

Код скрипта:

PowerShell

# Список серверов для проверки
$servers = @(
"DC01",
"WEBSRV01",
"SQLSRV01",
"FILESRV01"
)

# Список критически важных служб
$services = @(
"dns", # DNS Server
"w3svc", # IIS
"MSSQLSERVER", # SQL Server
"LanmanServer" # Server (File Sharing)
)

Write-Host "--- Начинаю утреннюю проверку серверов ---"

foreach ($server in $servers) {
Write-Host "`n[+] Проверяю сервер: $server" -ForegroundColor Yellow

# Проверяем доступность сервера
if (-not (Test-Connection -ComputerName $server -Count 1 -Quiet)) {
Write-Host " - Статус: НЕДОСТУПЕН" -ForegroundColor Red
continue
}

# Получаем аптайм
$osInfo = Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName $server
$uptime = (Get-Date) - $osInfo.LastBootUpTime
Write-Host (" - Аптайм: {0:N0} дней, {1} часов" -f $uptime.TotalDays, $uptime.Hours)

# Проверяем место на диске C:
$disk = Get-CimInstance -ClassName Win32_LogicalDisk -ComputerName $server -Filter "DeviceID='C:'"
$freeSpaceGB = [math]::Round($disk.FreeSpace / 1GB, 2)
Write-Host " - Свободно на диске C:: $freeSpaceGB GB"

# Проверяем статус служб
Write-Host " - Статус служб:"
foreach ($service in $services) {
$svc = Get-Service -Name $service -ComputerName $server -ErrorAction SilentlyContinue
if ($svc) {
if ($svc.Status -eq "Running") {
Write-Host " - $($svc.DisplayName): OK" -ForegroundColor Green
} else {
Write-Host " - $($svc.DisplayName): $($svc.Status)" -ForegroundColor Red
}
}
}
}

Как использовать:

Заполните массив $servers именами ваших машин.
Адаптируйте список $services под вашу инфраструктуру.
Запустите и получите полный отчёт за минуту.

Взгляд архитектора:
Это не просто скрипт, это элемент проактивного мониторинга. Он позволяет поймать проблему до того, как о ней сообщат пользователи. Следующий шаг — интегрировать его в Планировщик заданий и настроить отправку отчёта в почту или Telegram, превратив ручную проверку в полностью автоматическую систему.

#windows #powershell #automation #скрипты #monitoring
👍2
Linux & systemd: Управляем ресурсами "на лету" без перезагрузки

Представьте, один из сервисов (например, тестовое веб-приложение или скрипт аналитики) начал потреблять слишком много CPU или памяти, влияя на работу основных служб. Классическое решение — убить процесс. Архитектурное — ограничить его аппетиты.

systemd позволяет управлять ресурсами (CPU, память, I/O) для любого сервиса с помощью cgroups (Control Groups), и делать это "на лету".

Практический кейс: Ограничить сервис analytics.service максимум 20% CPU и 512MB RAM.

Проверяем текущее потребление:
systemd-cgtop — это htop для контрольных групп. Он покажет, какие сервисы и пользователи сколько ресурсов потребляют.

Bash

sudo systemd-cgtop

Устанавливаем ограничения "на лету":
Эти настройки будут действовать до перезагрузки сервиса или системы. Идеально для экстренных ситуаций.

Bash

# Ограничиваем CPU до 20%
sudo systemctl set-property analytics.service CPUQuota=20%
# Ограничиваем память до 512MB
sudo systemctl set-property analytics.service MemoryMax=512M

Закрепляем настройки на постоянной основе:
Чтобы ограничения применялись при каждом запуске, нужно добавить их в unit-файл сервиса.

Bash

# Открываем unit для редактирования
sudo systemctl edit analytics.service

В открывшийся файл добавьте секцию [Service] с параметрами:

Ini, TOML

[Service]
CPUQuota=20%
MemoryMax=512M

Сохраните файл и перезагрузите конфигурацию: sudo systemctl daemon-reload.

Взгляд архитектора:
Это гарантия качества обслуживания (QoS) на уровне одного сервера. Управляя ресурсами, вы предотвращаете ситуацию, когда один второстепенный процесс кладёт всю систему. Это фундаментальный подход для построения стабильной и предсказуемой инфраструктуры, особенно в средах с множеством сервисов (multi-tenant).

#linux #systemd #cgroups #sre #гайд
🔥4
Создай свой Runbook: Перестань быть героем, начни строить систему

Герой — это админ, который в 3 часа ночи в одиночку поднимает упавший сервер. Профессионал — это тот, кто создал Runbook (или Playbook), по которому этот сервер может поднять любой дежурный инженер за 15 минут.

Runbook — это подробная пошаговая инструкция по решению конкретной проблемы или выполнению стандартной операции.

Из чего состоит хороший Runbook:

Название: Чёткое и понятное. Пример: "Восстановление работы веб-сервера после сбоя БД".

Контекст: Когда применять эту инструкцию? Какие симптомы у проблемы? Пример: "Сайт отдаёт ошибку 503, в логах приложения ошибки подключения к PostgreSQL".

Пошаговые действия: Команды, которые нужно выполнить, скриншоты, куда нажать. Каждый шаг должен быть атомарным и проверяемым.

Проверка результата: Как убедиться, что проблема решена? Пример: "Выполнить curl -I site.com, ожидаемый ответ — HTTP/2 200".

План отката (Rollback): Что делать, если инструкция не помогла или сделала хуже?

Контакты: К кому обратиться за помощью, если ничего не помогает.

Где хранить?
Начните с простого: корпоративная Wiki (Confluence, Notion) или даже репозиторий в Markdown-файлах. Главное — чтобы это было доступно всей команде.

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

#devops #sre #runbook #architect #стратегия
🔥32
Windows: Перестань быть слепым. Включаем "чёрный ящик" с помощью Sysmon

Стандартные логи Windows (Event Log) показывают, что произошло. Sysmon (System Monitor) показывает, как это произошло. Это бесплатная утилита из набора Sysinternals от Марка Руссиновича, которая превращает ваш сервер в настоящий бортовой самописец.

Sysmon — это не антивирус. Это инструмент для Threat Hunting (охоты на угрозы). Он логирует то, что обычно остаётся невидимым:

Создание процессов с хешами файлов.
Сетевые соединения для каждого процесса.
Загрузку драйверов и DLL.
Изменения в WMI и реестре.

Быстрый старт:

Скачайте Sysmon с сайта Microsoft (Sysinternals Suite).

Создайте конфигурационный файл. Начинать с нуля сложно, поэтому используйте проверенный шаблон от SwiftOnSecurity. Он отфильтровывает 95% шума и оставляет только потенциально вредоносные события.

PowerShell

# Скачиваем конфиг
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/SwiftOnSecurity/sysmon-config/master/sysmonconfig-export.xml" -OutFile sysmonconfig.xml

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

PowerShell

# Устанавливаем Sysmon как службу с нашим конфигом
.\sysmon.exe -accepteula -i sysmonconfig.xml

Где смотреть логи?
Все события Sysmon пишутся в стандартный Event Viewer по пути: Журналы приложений и служб / Microsoft / Windows / Sysmon / Operational.

Пример реального кейса:
Вы видите, что powershell.exe установил подозрительное сетевое соединение с IP-адресом в Китае (Событие ID 3). Открыв событие создания этого процесса (ID 1), вы видите его родительский процесс — winword.exe. Это классический признак фишинговой атаки через макрос в документе. Со стандартными логами вы бы этого не увидели.

Взгляд архитектора:
Sysmon — это основа для построения централизованной системы сбора и анализа логов (SIEM). Отправляя события Sysmon в ELK Stack, Splunk или Graylog, вы получаете полную картину происходящего в вашей инфраструктуре и можете выявлять сложные атаки на ранних стадиях.

#windows #security #sysmon #sysinternals #threat_hunting #architect
👍2
Linux & curl: Ты используешь его неправильно. 3 продвинутых трюка

Все знают curl https://google.com. Но curl — это не просто браузер в терминале, это швейцарский нож для работы с любым HTTP-ресурсом. Пора использовать его как профессионал.

Трюк 1: Анализ времени ответа (профилирование)
Когда сайт тормозит, где именно проблема: DNS, TCP-соединение, SSL-рукопожатие или ожидание ответа от сервера? curl может разложить всё по полочкам.

Bash

# Создаём файл curl-format.txt с нужными переменными
cat > curl-format.txt <<EOF
{
"time_namelookup": "%{time_namelookup}",
"time_connect": "%{time_connect}",
"time_appconnect": "%{time_appconnect}",
"time_pretransfer": "%{time_pretransfer}",
"time_starttransfer": "%{time_starttransfer}",
"time_total": "%{time_total}"
}
EOF

# Запускаем curl с нашим форматом вывода
curl -w "@curl-format.txt" -o /dev/null -s https://habr.com/

Вы получите JSON с точным временем каждого этапа соединения.

Трюк 2: Отправка JSON и заголовков (тестирование API)
Не нужно ставить Postman, чтобы протестировать API.

Bash

# Отправляем POST-запрос с JSON-телом и кастомным заголовком
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer mysecrettoken" \
-d '{"username":"admin","status":"active"}' \
http://api.example.com/users

Трюк 3: Повтор запроса при ошибке (для скриптов)
Ваш скрипт упал, потому что сеть моргнула? curl может сам повторить запрос.

Bash

# Попробовать 5 раз с задержкой в 10 секунд между попытками
curl --retry 5 --retry-delay 10 https://updates.example.com/latest.zip -O

Взгляд архитектора:
curl — это не просто утилита, это универсальный кирпичик для построения систем автоматизации и мониторинга. Глубокое понимание его возможностей позволяет писать надёжные скрипты, создавать health checks для сервисов и проводить отладку сетевых взаимодействий без привлечения тяжеловесных инструментов.

#linux #curl #devops #api #networking #команды
Pets vs Cattle: Главный принцип облачной архитектуры, который должен знать каждый админ

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

Pets (питомцы):

Это серверы, к которым вы относитесь как к домашним любимцам.
У них есть уникальные имена (db-master-01, mail-srv).
Вы их холите и лелеете, ставите обновления вручную, лечите, когда они "болеют".
Если такой сервер падает — это катастрофа, все бегут его поднимать.
Примеры: Контроллер домена, основной сервер баз данных, старый монолитный сервер приложений.

Cattle (скот):

Это серверы, к которым относятся как к стаду.
У них нет имён, только номера (web-worker-001, web-worker-002).
Их никто не лечит. Если один сервер "заболел", его просто "пристреливают" (удаляют), а на его место автоматически приходит новый, созданный из того же образа.
Потеря одного сервера — не событие. Система в целом продолжает работать.
Примеры: Веб-серверы за балансировщиком, воркеры в Kubernetes-кластере, инстансы в Auto Scaling Group.

Взгляд архитектора:
Цель современной архитектуры — превратить как можно больше "питомцев" в "стадо". Это достигается через автоматизацию (Ansible, Terraform), контейнеризацию (Docker, Kubernetes) и проектирование приложений, которые не хранят состояние локально (stateless). Такой подход позволяет строить масштабируемые, отказоустойчивые и легко управляемые системы.

Задайте себе вопрос: сколько в вашей инфраструктуре "питомцев", и что нужно сделать, чтобы их стало меньше?

#architect #cloud #devops #petsvscattle #sre #стратегия
Windows DNS: Построй свою "черную дыру". Создаем DNS Sinkhole для защиты от вредоносов

Когда пользователь кликает на фишинговую ссылку, его компьютер сначала обращается к DNS-серверу, чтобы узнать IP-адрес вредоносного домена. Что если мы можем перехватить этот запрос и отправить пользователя в безопасное место (или в никуда)?

Это и есть DNS Sinkhole (или Blackhole) — один из самых эффективных способов блокировки вредоносной активности на уровне всей сети.

Как это реализовать на Windows DNS Server:

Создаем "черную дыру":
Откройте диспетчер DNS.
Создайте новую зону прямого просмотра (Primary Zone).
Имя зоны — это вредоносный домен, который вы хотите заблокировать (например, malicious-site.com).
Создайте в этой зоне запись типа A с * (звездочка) в качестве имени.
В качестве IP-адреса укажите 127.0.0.1 (localhost) или IP-адрес внутреннего сервера с заглушкой "Доступ заблокирован".

Автоматизируем с PowerShell:
Вручную добавлять тысячи доменов — не вариант. Используем PowerShell и списки блокировки.

PowerShell
# Список доменов для блокировки (в реальности он будет загружаться из файла или URL)
$BlockList = @(
"bad-domain-1.com",
"phishing-site-2.net",
"malware-dist-3.org"
)

# IP-адрес нашей "черной дыры"
$SinkholeIP = "127.0.0.1"

foreach ($Domain in $BlockList) {
Write-Host "Создаю зону для: $Domain"
# Создаём зону
Add-DnsServerPrimaryZone -Name $Domain -ReplicationScope "Forest" -PassThru

# Создаём wildcard A-запись, которая перенаправляет весь трафик
Add-DnsServerResourceRecordA -ZoneName $Domain -Name "*" -IPv4Address $SinkholeIP
}

Этот скрипт можно поставить в Планировщик Задач для автоматического обновления из публичных блэклистов (например, StevenBlack/hosts).

Взгляд архитектора:
DNS Sinkhole — это первый эшелон обороны. Он не требует установки агентов на клиентские машины и защищает все устройства в сети, включая те, которые сложно контролировать (BYOD, IoT). Это проактивный подход к безопасности, который блокирует угрозу еще до того, as она достигнет своей цели.

#windows #security #dns #powershell #architect #гайд
👍4
Linux: Когда top и htop бессильны. Знакомство с perf — скальпелем для анализа производительности

top показывает, какой процесс грузит CPU. perf показывает, какая функция внутри этого процесса грузит CPU. Это инструмент уровня SRE и kernel-разработчиков, но основы его использования должен знать каждый продвинутый админ.

Практический кейс: Веб-сервер Nginx начал потреблять много CPU. Почему?

Собираем данные (профилирование):
Запускаем perf на 10 секунд, чтобы собрать статистику по всей системе с частотой 99 Гц.

Bash
# perf требует прав root или специальной настройки
sudo perf record -F 99 -a -g -- sleep 10

-a — по всей системе, -g — записывать графы вызовов.
В текущей директории будет создан файл perf.data.

Анализируем отчет:
Открываем собранные данные в интерактивном режиме.

Bash
sudo perf report

Вы увидите псевдографический интерфейс, где сможете "проваливаться" внутрь процессов и функций. В нашем случае мы найдем процесс nginx, раскроем его и увидим, что, например, 90% времени CPU тратится на функцию, связанную со сжатием gzip или обработкой SSL.

Другие полезные команды:

sudo perf top — интерактивный режим, похожий на top, но с функциями.

sudo perf stat <command> — запускает команду и показывает детальную статистику по её выполнению (промахи кэша, ошибки страниц и т.д.).

Взгляд архитектора:
perf позволяет находить коренные причины (root cause) проблем с производительностью, а не бороться с симптомами. Умение работать с такими инструментами отличает инженера, который может оптимизировать систему на низком уровне, от админа, который в любой непонятной ситуации просто добавляет CPU.

#linux #performance #sre #perf #monitoring #команды
AI-промпт: "Напиши за меня PowerShell скрипт для аудита локальных администраторов"

Одна из самых частых задач ИБ-аудита — проверить, кто входит в группу локальных администраторов на всех рабочих станциях. Давайте заставим AI сгенерировать для нас готовый к работе скрипт.

Промпт (для ChatGPT/Gemini/Copilot):
Выступи в роли Senior PowerShell-разработчика и эксперта по безопасности Active Directory.

Напиши PowerShell-скрипт, который выполняет следующие действия:
1. Берёт список всех активных компьютеров из указанного Organizational Unit (OU) в Active Directory.
2. Для каждого компьютера из списка получает членов локальной группы "Администраторы" (Administrators).
3. Игнорирует стандартных членов группы (Administrator, Domain Admins).
4. Выводит результат в виде таблицы: Компьютер, Пользователь/Группа.
5. Экспортирует результат в CSV-файл для дальнейшего анализа.
6. Скрипт должен содержать комментарии, объясняющие ключевые шаги.

Предоставь готовый к выполнению код.
Почему это работает:

Роль: Senior PowerShell-разработчик и эксперт по безопасности задают высокий стандарт качества кода и правильность подходов.

Декомпозиция: Мы разбили задачу на 6 четких шагов. AI не нужно додумывать, что мы хотим.
Исключения: Указание "игнорирует стандартных членов" делает результат сразу полезным, отсекая шум.
Формат вывода: Мы просим не просто вывести на экран, а создать CSV-файл, что характерно для реальной задачи.
Результат: Вы получите готовый скрипт на 20-30 строк, который можно сразу использовать. Архитектор не тратит время на написание рутинных скриптов, он тратит время на анализ их результатов.

#ai4admin #powershell #security #activedirectory #automation #промпты
Self-Hosted: Ваша личная IT-империя. Альтернативы SaaS-сервисам

Мы привыкли платить за подписки: почта, облачное хранилище, видеозвонки, таск-трекеры. Но что, если можно запустить всё это на своём сервере, полностью контролируя данные и избавляясь от ежемесячных платежей?

Наши коллеги-энтузиасты собрали гигантскую подборку open-source приложений для запуска почти любых сервисов прямо у вас. Почта (Mailu), облачное хранилище (Nextcloud), видеоконференции (Jitsi), менеджер паролей (Vaultwarden), стриминг-платформы (Jellyfin) — всё в одном месте.

Что внутри:

Список self-hosted альтернатив для десятков популярных SaaS.

Ссылки на GitHub и документацию.

Часто — готовые docker-compose.yml для быстрого старта.

Взгляд архитектора:
Это не просто про экономию. Это про суверенитет данных и создание идеального Home Lab. Разворачивая эти сервисы, вы на практике оттачиваете ключевые навыки: работа с Docker, настройка Nginx в роли reverse proxy, конфигурация бэкапов и мониторинга.

Главный архитектурный принцип здесь — свобода в обмен на ответственность. Вы получаете полный контроль, но безопасность, обновления и аптайм — теперь ваша задача.

Забираем бесценную подборку по ссылке:
https://github.com/Atarity/deploy-your-own-saas

#selfhosted #linux #docker #devops #saas #гайд
👍3
Windows: Не отключай Firewall! Управляй им как профи через PowerShell

Самый частый "совет" по решению проблем с сетью в Windows — "отключи брандмауэр". С точки зрения безопасности — это катастрофа. Графический интерфейс файрвола действительно неудобен, но у архитектора есть PowerShell.
Управлять правилами из командной строки — быстро, удобно и, главное, автоматизируемо.
Базовые команды, которые нужно знать:
Проверить статус всех профилей (Domain, Private, Public):
PowerShell

Get-NetFirewallProfile | Format-Table Name, Enabled

Создать простое правило (например, разрешить входящий SSH):
PowerShell

New-NetFirewallRule -DisplayName "Allow SSH In" -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow -Profile Domain, Private

Найти и временно отключить правило:
PowerShell

# Находим правило по имени
Get-NetFirewallRule -DisplayName "Allow SSH In"

# Отключаем его, не удаляя
Disable-NetFirewallRule -DisplayName "Allow SSH In"

Управлять правилами на удалённом сервере:
Используем CIM-сессии для удалённого выполнения.
PowerShell

$session = New-CimSession -ComputerName WEBSRV01
Get-NetFirewallRule -CimSession $session -DisplayName "Allow-File-And-Printer-Sharing"

Взгляд архитектора:
Брандмауэр — это не помеха, а критический компонент эшелонированной обороны (Defense in Depth). Использование PowerShell позволяет применять Конфигурацию как Код (CaC) к правилам безопасности. Вы можете хранить скрипты с правилами в Git, версионировать их и раскатывать на сотни серверов, гарантируя единый стандарт безопасности по всей инфраструктуре.

#windows #security #powershell #firewall #networking #гайд