🚀 Linux (CLI): cd — это прошлое. Встречаем zoxide — "умный" cd
Боль: Ваш pwd — /srv/docker/containers/prod/nginx/config/sites-available/. Вам нужно "прыгнуть" в /var/log/nginx.
Реакция админа: cd /var/log/nginx (набирает 20+ символов).
Реакция архитектора: z log
zoxide — это "мозг" для вашей cd. Он запоминает каталоги, в которые вы чаще всего ходите, и "ранжирует" их.
Как это работает:
1. Установка: sudo apt install zoxide / brew install zoxide
2. Добавление в .bashrc / .zshrc: eval "$(zoxide init bash)"
3. Использование:
* z nginx -> "прыгнет" в /var/log/nginx (если вы там часто бываете)
* z sites -> "прыгнет" в /srv/docker/containers/prod/nginx/config/sites-available/
* zoxide query -l -> покажет все "запомненные" пути и их "рейтинг".
Взгляд архитектора: Это оптимизация рабочего процесса. Архитектор убирает "трение" (friction) из своей ежедневной работы. zoxide (как fzf или bat) — это инструмент, который экономит вам тысячи нажатий клавиш в день.
#linux #cli #zoxide #automation #devops #sre #гайд
Боль: Ваш pwd — /srv/docker/containers/prod/nginx/config/sites-available/. Вам нужно "прыгнуть" в /var/log/nginx.
Реакция админа: cd /var/log/nginx (набирает 20+ символов).
Реакция архитектора: z log
zoxide — это "мозг" для вашей cd. Он запоминает каталоги, в которые вы чаще всего ходите, и "ранжирует" их.
Как это работает:
1. Установка: sudo apt install zoxide / brew install zoxide
2. Добавление в .bashrc / .zshrc: eval "$(zoxide init bash)"
3. Использование:
* z nginx -> "прыгнет" в /var/log/nginx (если вы там часто бываете)
* z sites -> "прыгнет" в /srv/docker/containers/prod/nginx/config/sites-available/
* zoxide query -l -> покажет все "запомненные" пути и их "рейтинг".
Взгляд архитектора: Это оптимизация рабочего процесса. Архитектор убирает "трение" (friction) из своей ежедневной работы. zoxide (как fzf или bat) — это инструмент, который экономит вам тысячи нажатий клавиш в день.
#linux #cli #zoxide #automation #devops #sre #гайд
🛡️ Windows (Security): Новое в Server 2025 — Защита LDAP по умолчанию
Боль: В 2025 году 90% AD-доменов до сих пор разрешают LDAP Simple Bind (простая привязка) — то есть, отправку паролей по LDAP (порт 389) в открытом тексте.
Реакция админа: "У меня внутренняя сеть, она доверенная". (Нет).
Реакция архитектора: "Весь трафик аутентификации должен быть зашифрован. Без исключений".
Microsoft меняет правила игры в Windows Server 2025.
Что нового:
1. LDAPS по умолчанию: LDAP-сервер больше не будет принимать Simple Bind (открытый текст), если соединение не зашифровано (через TLS/SSL, порт 636, или через StartTLS).
2. Шифрование Kerberos: Внедряется AES-SHA256/384, что делает Kerberos еще надежнее.
3. TLS 1.3: LDAP теперь поддерживает TLS 1.3 "из коробки".
Взгляд архитектора: Это "Security by Default" (Безопасность по умолчанию). Microsoft принудительно закрывает "дыры", которые админы игнорировали десятилетиями. Ваша задача — не ждать 2025 года. Запускайте LDP.exe, проверяйте свои DC на Simple Bind и внедряйте LDAPS (порт 636) уже вчера.
#windows #security #activedirectory #ldap #windowsserver #architect #гайд
Боль: В 2025 году 90% AD-доменов до сих пор разрешают LDAP Simple Bind (простая привязка) — то есть, отправку паролей по LDAP (порт 389) в открытом тексте.
Реакция админа: "У меня внутренняя сеть, она доверенная". (Нет).
Реакция архитектора: "Весь трафик аутентификации должен быть зашифрован. Без исключений".
Microsoft меняет правила игры в Windows Server 2025.
Что нового:
1. LDAPS по умолчанию: LDAP-сервер больше не будет принимать Simple Bind (открытый текст), если соединение не зашифровано (через TLS/SSL, порт 636, или через StartTLS).
2. Шифрование Kerberos: Внедряется AES-SHA256/384, что делает Kerberos еще надежнее.
3. TLS 1.3: LDAP теперь поддерживает TLS 1.3 "из коробки".
Взгляд архитектора: Это "Security by Default" (Безопасность по умолчанию). Microsoft принудительно закрывает "дыры", которые админы игнорировали десятилетиями. Ваша задача — не ждать 2025 года. Запускайте LDP.exe, проверяйте свои DC на Simple Bind и внедряйте LDAPS (порт 636) уже вчера.
#windows #security #activedirectory #ldap #windowsserver #architect #гайд
👍3
🔬 Linux (SRE): Ваш Prometheus — "слепой". Встречаем Parca
Боль: Ваш Prometheus + Grafana показывают: "CPU spike at 14:30". И что? Вы знаете, что был всплеск, но вы не знаете, ПОЧЕМУ. Какая функция в вашем Python/Go/Rust-коде "съела" CPU?
Реакция админа: "Перезапущу pod, наверное, 'глюк'".
Реакция SRE: "Мне нужен непрерывный профилировщик".
Parca — это "Prometheus для профилирования". Он построен на eBPF и непрерывно (с почти нулевым оверхедом) сканирует CPU и память всех ваших процессов в системе.
Киллер-фича: Вы можете выбрать "спайк" CPU на Grafana, а затем "провалиться" в Parca и увидеть "Flame Graph" (огненный граф) — точную карту, показывающую, что function: process_payment() заняла 45% CPU в этот момент.
Взгляд архитектора: Вы переходите от "Мониторинга" (знать, что сломалось) к "Observability" (понимать, почему сломалось). Parca — это ваш "микроскоп", который находит "раковую опухоль" в коде, а не просто измеряет "температуру".
#linux #sre #ebpf #parca #observability #performance #architect #гайд
Боль: Ваш Prometheus + Grafana показывают: "CPU spike at 14:30". И что? Вы знаете, что был всплеск, но вы не знаете, ПОЧЕМУ. Какая функция в вашем Python/Go/Rust-коде "съела" CPU?
Реакция админа: "Перезапущу pod, наверное, 'глюк'".
Реакция SRE: "Мне нужен непрерывный профилировщик".
Parca — это "Prometheus для профилирования". Он построен на eBPF и непрерывно (с почти нулевым оверхедом) сканирует CPU и память всех ваших процессов в системе.
Киллер-фича: Вы можете выбрать "спайк" CPU на Grafana, а затем "провалиться" в Parca и увидеть "Flame Graph" (огненный граф) — точную карту, показывающую, что function: process_payment() заняла 45% CPU в этот момент.
Взгляд архитектора: Вы переходите от "Мониторинга" (знать, что сломалось) к "Observability" (понимать, почему сломалось). Parca — это ваш "микроскоп", который находит "раковую опухоль" в коде, а не просто измеряет "температуру".
#linux #sre #ebpf #parca #observability #performance #architect #гайд
🛡️ Windows (Security): "Убить" Mimikatz. Включаем LSA Protection (PPL)
Боль: Хакер получил права админа на 1 сервере. Он запускает mimikatz.exe -> sekurlsa::logonpasswords -> и "вытаскивает" из памяти процесса lsass.exe все пароли/хэши, включая Domain Admin'а, который логинился туда 2 часа назад. Игра окончена.
Реакция админа: "Мой EDR/Антивирус поймает mimikatz". (А если нет?)
Реакция архитектора: "Я сделаю lsass.exe неприкосновенным".
LSA Protection (PPL - Protected Process Light) — это "спящий" режим защиты в Windows (начиная с 8.1 / Server 2012 R2), который запрещает любым процессам (даже с правами SYSTEM) читать память lsass.exe.
Как включить (1 ключ реестра):
(Требуется перезагрузка для применения)
Результат: mimikatz (и другие "дамперы") просто выдаст ERROR kuhl_m_sekurlsa_acquireLSA ; Process Protection Error! (0x00000005). Доступ запрещен.
Взгляд архитектора: Это фундаментальное "укрепление" (Hardening). Вы не "надеетесь" на EDR, вы используете встроенный механизм ОС, чтобы сделать компрометацию lsass.exe невозможной.
#windows #security #mimikatz #lsass #cybersecurity #architect #гайд #musthave
Боль: Хакер получил права админа на 1 сервере. Он запускает mimikatz.exe -> sekurlsa::logonpasswords -> и "вытаскивает" из памяти процесса lsass.exe все пароли/хэши, включая Domain Admin'а, который логинился туда 2 часа назад. Игра окончена.
Реакция админа: "Мой EDR/Антивирус поймает mimikatz". (А если нет?)
Реакция архитектора: "Я сделаю lsass.exe неприкосновенным".
LSA Protection (PPL - Protected Process Light) — это "спящий" режим защиты в Windows (начиная с 8.1 / Server 2012 R2), который запрещает любым процессам (даже с правами SYSTEM) читать память lsass.exe.
Как включить (1 ключ реестра):
# Запускаем PowerShell от имени Admin
$RegPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa"
Set-ItemProperty -Path $RegPath -Name "RunAsPPL" -Value 1
(Требуется перезагрузка для применения)
Результат: mimikatz (и другие "дамперы") просто выдаст ERROR kuhl_m_sekurlsa_acquireLSA ; Process Protection Error! (0x00000005). Доступ запрещен.
Взгляд архитектора: Это фундаментальное "укрепление" (Hardening). Вы не "надеетесь" на EDR, вы используете встроенный механизм ОС, чтобы сделать компрометацию lsass.exe невозможной.
#windows #security #mimikatz #lsass #cybersecurity #architect #гайд #musthave
🔥2
⚙️ DevOps (Automation): "Grep по YAML". Встречаем yq
Боль: Вам нужно в CI/CD-скрипте "вытащить" версию image: из docker-compose.yml или kubernetes-deployment.yml.
Реакция админа: cat docker-compose.yml | grep "image:" | awk -F': ' '{print $2}' (Это "хрупкий" скрипт. Он сломается от одного лишнего пробела или комментария).
Реакция архитектора: yq '.services.my-app.image' docker-compose.yml
yq — это jq (для JSON), но для YAML. Это "швейцарский нож" для парсинга *.yml файлов в bash.
Почему это киллер-фича:
* Надежность: Он понимает структуру YAML. Ему плевать на пробелы и комментарии.
* Чтение: yq '.spec.replicas' deployment.yml
* Запись: yq -i '.spec.replicas = 3' deployment.yml (Изменить файл "на лету"!)
* Merge: yq eval-all '. as $item ireduce ({}; . * $item)' file1.yml file2.yml (Склеить два YAML-файла).
Взгляд архитектора: Это надежная автоматизация (Reliable Automation). Ваши bash-скрипты в CI/CD (GitLab, Jenkins) становятся предсказуемыми. Вы можете безопасно читать и модифицировать ваши IaC-конфиги "на лету".
#devops #linux #yaml #yq #automation #cicd #скрипты #гайд
Боль: Вам нужно в CI/CD-скрипте "вытащить" версию image: из docker-compose.yml или kubernetes-deployment.yml.
Реакция админа: cat docker-compose.yml | grep "image:" | awk -F': ' '{print $2}' (Это "хрупкий" скрипт. Он сломается от одного лишнего пробела или комментария).
Реакция архитектора: yq '.services.my-app.image' docker-compose.yml
yq — это jq (для JSON), но для YAML. Это "швейцарский нож" для парсинга *.yml файлов в bash.
Почему это киллер-фича:
* Надежность: Он понимает структуру YAML. Ему плевать на пробелы и комментарии.
* Чтение: yq '.spec.replicas' deployment.yml
* Запись: yq -i '.spec.replicas = 3' deployment.yml (Изменить файл "на лету"!)
* Merge: yq eval-all '. as $item ireduce ({}; . * $item)' file1.yml file2.yml (Склеить два YAML-файла).
Взгляд архитектора: Это надежная автоматизация (Reliable Automation). Ваши bash-скрипты в CI/CD (GitLab, Jenkins) становятся предсказуемыми. Вы можете безопасно читать и модифицировать ваши IaC-конфиги "на лету".
#devops #linux #yaml #yq #automation #cicd #скрипты #гайд
❤2🔥2
🛡️ Фишинг: Почему "тренировка" — это полдела, а "Zero Trust" — это всё
Боль: 90% всех кибератак начинаются с одного: фишинг. Админ "тренирует" пользователей не нажимать на ссылки. Архитектор исходит из того, что пользователь уже нажал на ссылку.
Обучение пользователей (Layer 😍 — это наш первый, но самый "хрупкий" рубеж обороны.
1. Обучаем (Ресурсы): Вот подборка топ-ресурсов, которые помогут вам и вашим пользователям научиться распознавать угрозы:
KnowBe4 (Лидеры в Security Awareness)
https://www.knowbe4.com/phishing
IT Governance UK (5 способов детекта)
https://www.itgovernance.co.uk/blog/5-ways-to-detect-a-phishing-email
CheapSSLSecurity (10 примеров)
https://cheapsslsecurity.com/blog/10-phishing-email-examples-you-need-to-see/
Google Phishing Quiz (Проверь себя)
https://phishingquiz.withgoogle.com/
2. Строим "бетонную комнату" (Взгляд архитектора): Наша настоящая работа — минимизировать "взрывную волну" после клика. Хакер, получив Initial Access, должен "приземлиться" в изоляции.
Именно поэтому мы внедряем:
* LAPS (чтобы он не украл локального админа).
* AppLocker (чтобы он не запустил свой .exe из Downloads).
* MFA (чтобы он не использовал украденный пароль).
* Admin Tier Model (чтобы он не "прыгнул" на DC).
#security #phishing #cybersecurity #zerotrust #гайд #architect
Боль: 90% всех кибератак начинаются с одного: фишинг. Админ "тренирует" пользователей не нажимать на ссылки. Архитектор исходит из того, что пользователь уже нажал на ссылку.
Обучение пользователей (Layer 😍 — это наш первый, но самый "хрупкий" рубеж обороны.
1. Обучаем (Ресурсы): Вот подборка топ-ресурсов, которые помогут вам и вашим пользователям научиться распознавать угрозы:
KnowBe4 (Лидеры в Security Awareness)
https://www.knowbe4.com/phishing
IT Governance UK (5 способов детекта)
https://www.itgovernance.co.uk/blog/5-ways-to-detect-a-phishing-email
CheapSSLSecurity (10 примеров)
https://cheapsslsecurity.com/blog/10-phishing-email-examples-you-need-to-see/
Google Phishing Quiz (Проверь себя)
https://phishingquiz.withgoogle.com/
2. Строим "бетонную комнату" (Взгляд архитектора): Наша настоящая работа — минимизировать "взрывную волну" после клика. Хакер, получив Initial Access, должен "приземлиться" в изоляции.
Именно поэтому мы внедряем:
* LAPS (чтобы он не украл локального админа).
* AppLocker (чтобы он не запустил свой .exe из Downloads).
* MFA (чтобы он не использовал украденный пароль).
* Admin Tier Model (чтобы он не "прыгнул" на DC).
#security #phishing #cybersecurity #zerotrust #гайд #architect
☣️ Windows: Скрипт-аудит "Кто может сбросить пароль Domain Admin?"
Боль: Вы думаете, что только Domain Admins могут менять пароли. Но в AD есть "темные" права, как GenericAll, WriteDacl или User-Force-Change-Password.
Проблема: Учетка HelpDesk (которую взломали) может иметь право сбросить пароль SQL-Admin, а тот, в свою очередь, — пароль Domain Admin. Это "теневые" админы (Shadow Admins).
Этот PowerShell-скрипт (на модуле DSInternals) — ваш аудитор. Он покажет всех, кто имеет "опасные" права на ваших Domain Admins.
Код скрипта:
Взгляд архитектора: Это — аудит путей атаки (Attack Paths). Вы должны знать каждую учетку, которая может сбросить пароль DA.
#windows #powershell #security #activedirectory #audit #скрипты #cybersecurity
Боль: Вы думаете, что только Domain Admins могут менять пароли. Но в AD есть "темные" права, как GenericAll, WriteDacl или User-Force-Change-Password.
Проблема: Учетка HelpDesk (которую взломали) может иметь право сбросить пароль SQL-Admin, а тот, в свою очередь, — пароль Domain Admin. Это "теневые" админы (Shadow Admins).
Этот PowerShell-скрипт (на модуле DSInternals) — ваш аудитор. Он покажет всех, кто имеет "опасные" права на ваших Domain Admins.
Код скрипта:
# 1. Установка модуля (один раз)
# Install-Module DSInternals -Scope CurrentUser
Import-Module DSInternals
Write-Host "--- Начинаю аудит 'опасных' ACL на Admin-группах ---" -ForegroundColor Cyan
# 2. Список "целей" (кого проверяем)
$CriticalGroups = @(
"Domain Admins",
"Enterprise Admins",
"Administrators",
"Schema Admins"
)
# 3. Список "опасных" прав
$DangerousRights = @(
'GenericAll',
'WriteDacl',
'WriteOwner',
'Self',
'WriteProperty',
'GenericWrite',
'User-Force-Change-Password'
)
$Report = foreach ($Group in $CriticalGroups) {
Get-ADACL -Identity $Group | Where-Object {
($_.ActiveDirectoryRights -in $DangerousRights) -and
($_.IdentityReference -notin @("NT AUTHORITY\SYSTEM", "BUILTIN\Administrators", "CORP\Domain Admins", "CORP\Enterprise Admins")) # Исключаем "ожидаемых"
}
}
if ($Report) {
Write-Host "`n[!!!] ОБНАРУЖЕНЫ 'ТЕНЕВЫЕ' АДМИНЫ:" -ForegroundColor Red
$Report | Format-Table ObjectDN, IdentityReference, ActiveDirectoryRights
} else {
Write-Host "`n[OK] 'Лишних' прав на критических группах не найдено." -ForegroundColor Green
}
Взгляд архитектора: Это — аудит путей атаки (Attack Paths). Вы должны знать каждую учетку, которая может сбросить пароль DA.
#windows #powershell #security #activedirectory #audit #скрипты #cybersecurity
👍1
🔒 Linux: Скрипт-аудит "неизменяемых" (immutable) файлов
Боль: Команда chattr +i (immutable) — это и "оружие", и "щит".
Хакеры используют ее, чтобы "зацементировать" свой rootkit (его не может удалить даже root).
Админы используют ее, чтобы защитить /etc/hosts или sshd_config от случайных изменений.
Проблема: Как найти все "неизменяемые" файлы в системе?
Реакция админа: "Надеюсь, их нет".
Реакция архитектора: "Я запущу аудит".
Этот Bash-скрипт использует lsattr для рекурсивного сканирования системы.
Код скрипта:
Взгляд архитектора: Это — аудит целостности (Integrity Audit). Вы должны знать о каждом файле, который "заморожен". Если вы видите ----i- на /tmp/x.sh — у вас огромные проблемы. Если на sshd_config — это ваша (или чужая) работа.
#linux #bash #security #audit #forensics #скрипты #гайд
Боль: Команда chattr +i (immutable) — это и "оружие", и "щит".
Хакеры используют ее, чтобы "зацементировать" свой rootkit (его не может удалить даже root).
Админы используют ее, чтобы защитить /etc/hosts или sshd_config от случайных изменений.
Проблема: Как найти все "неизменяемые" файлы в системе?
Реакция админа: "Надеюсь, их нет".
Реакция архитектора: "Я запущу аудит".
Этот Bash-скрипт использует lsattr для рекурсивного сканирования системы.
Код скрипта:
#!/bin/bash
# --- Поиск 'immutable' файлов (атрибут 'i') ---
echo "--- Начинаю поиск 'неизменяемых' файлов (chattr +i)... ---"
echo "Это может занять много времени."
# -R: Рекурсивно
# /: Начиная с корня
# 2>/dev/null: Игнорируем ошибки (типа 'Permission denied' для /proc)
# grep '----i-': Ищем ТОЛЬКО файлы, где установлен 'i' (immutable)
lsattr -R / 2>/dev/null | grep '----i-'
echo "--- Поиск завершен ---"
Взгляд архитектора: Это — аудит целостности (Integrity Audit). Вы должны знать о каждом файле, который "заморожен". Если вы видите ----i- на /tmp/x.sh — у вас огромные проблемы. Если на sshd_config — это ваша (или чужая) работа.
#linux #bash #security #audit #forensics #скрипты #гайд
Windows (Storage): Убейте "Mapped Drives". Внедряем DFS Namespaces
Боль: У вас есть файловый сервер \\OLD-SRV. Вы купили новый, мощный \\NEW-SRV. Теперь вам нужно перенастроить GPO, скрипты и (самое страшное) переучить 500 пользователей, которые привыкли к "Диску Z:".
Решение: DFS Namespaces (DFSN) Это слой абстракции. Вы создаете виртуальное дерево папок, которое не зависит от физических имен серверов.
Как это выглядит для пользователя: \\Corp.local\Data\Docs
Как это выглядит для админа: \\Corp.local\Data\Docs -> ссылается на -> \\SRV-01\Share
Когда SRV-01 устареет, вы скопируете данные на SRV-02 и просто переключите ссылку в консоли DFS. Пользователи даже не заметят подмены.
Настройка (PowerShell):
Взгляд архитектора: Никогда не привязывайтесь к именам "железа". Абстракция — это ключ к миграции без простоев. DFSN позволяет вам менять бэкенд (серверы), не меняя фронтенд (пути доступа пользователей).
#windows #dfs #storage #sysadmin #powershell #architect #гайд
Боль: У вас есть файловый сервер \\OLD-SRV. Вы купили новый, мощный \\NEW-SRV. Теперь вам нужно перенастроить GPO, скрипты и (самое страшное) переучить 500 пользователей, которые привыкли к "Диску Z:".
Решение: DFS Namespaces (DFSN) Это слой абстракции. Вы создаете виртуальное дерево папок, которое не зависит от физических имен серверов.
Как это выглядит для пользователя: \\Corp.local\Data\Docs
Как это выглядит для админа: \\Corp.local\Data\Docs -> ссылается на -> \\SRV-01\Share
Когда SRV-01 устареет, вы скопируете данные на SRV-02 и просто переключите ссылку в консоли DFS. Пользователи даже не заметят подмены.
Настройка (PowerShell):
# 1. Устанавливаем роль
Install-WindowsFeature FS-DFS-Namespace, RSAT-DFS-Mgmt-Con
# 2. Создаем корень пространства имен (Namespace Root)
# \\Corp.local\Public
New-DfsnRoot -Path "\\Corp.local\Public" -TargetPath "\\FILE-SRV-01\PublicRoot" -Type DomainV2
# 3. Создаем папку (ссылку) внутри
# \\Corp.local\Public\Sales -> ведет на реальную шару
New-DfsnFolder -Path "\\Corp.local\Public\Sales" -TargetPath "\\FILE-SRV-01\SalesData"
Взгляд архитектора: Никогда не привязывайтесь к именам "железа". Абстракция — это ключ к миграции без простоев. DFSN позволяет вам менять бэкенд (серверы), не меняя фронтенд (пути доступа пользователей).
#windows #dfs #storage #sysadmin #powershell #architect #гайд
Linux (Storage): "Undo" для сервера. LVM Snapshots перед обновлением
Боль: Вы обновляете ядро или критически важную базу данных на Linux. Что-то пошло не так. Система не грузится.
Реакция админа: Восстанавливать из бэкапа (часы простоя).
Реакция архитектора: Сделать LVM Snapshot за 1 секунду до обновления и откатиться за 1 секунду в случае сбоя.
LVM (Logical Volume Manager) — это стандарт де-факто в Linux, но многие используют его только для расширения дисков, забывая про снапшоты.
Сценарий: Опасное обновление
1. Создаем снапшот: Мы выделяем место (например, 1GB) под изменения.
Теперь состояние системы "заморожено".
2. Делаем опасное действие: apt upgrade, rm -rf /etc/nginx, ломаем всё.
3. Откат (Merge): Если всё сломалось:
После перезагрузки сервер будет в ТОМ ЖЕ состоянии, что и до снапшота.
4.Удаление (если всё прошло хорошо):
Взгляд архитектора: Это страховка. Снапшоты LVM — это не бэкап (они живут на том же диске), это инструмент управления рисками при изменениях.
#linux #lvm #storage #backup #sysadmin #команды #гайд
Боль: Вы обновляете ядро или критически важную базу данных на Linux. Что-то пошло не так. Система не грузится.
Реакция админа: Восстанавливать из бэкапа (часы простоя).
Реакция архитектора: Сделать LVM Snapshot за 1 секунду до обновления и откатиться за 1 секунду в случае сбоя.
LVM (Logical Volume Manager) — это стандарт де-факто в Linux, но многие используют его только для расширения дисков, забывая про снапшоты.
Сценарий: Опасное обновление
1. Создаем снапшот: Мы выделяем место (например, 1GB) под изменения.
# Создаем снапшот 'root_snap' для тома 'root'
lvcreate -L 1G -s -n root_snap /dev/vg0/root
Теперь состояние системы "заморожено".
2. Делаем опасное действие: apt upgrade, rm -rf /etc/nginx, ломаем всё.
3. Откат (Merge): Если всё сломалось:
# Говорим системе: "Верни всё как было при загрузке"
lvconvert --merge /dev/vg0/root_snap
reboot
После перезагрузки сервер будет в ТОМ ЖЕ состоянии, что и до снапшота.
4.Удаление (если всё прошло хорошо):
lvremove /dev/vg0/root_snap
Взгляд архитектора: Это страховка. Снапшоты LVM — это не бэкап (они живут на том же диске), это инструмент управления рисками при изменениях.
#linux #lvm #storage #backup #sysadmin #команды #гайд
❤2👍2
Инфраструктура (General): "Почему Kerberos не работает?" Фундамент NTP
Боль: Пользователи не могут войти в домен. Логи сыплют ошибками аутентификации. 2FA-коды "не подходят". Кластер баз данных развалился. Причина: Рассинхронизация времени (Time Drift).
В распределенных системах (Active Directory, Kerberos, Ceph, Kubernetes) время — это не просто "часы", это механизм защиты от повторного воспроизведения пакетов. Если разница между сервером и клиентом > 5 минут (для AD), всё ломается.
Классическая иерархия NTP (Network Time Protocol):
1. Stratum 0: Атомные часы, GPS.
2. Stratum 1: Серверы, подключенные к Stratum 0 напрямую.
3. PDC Emulator (в Windows AD): Должен синхронизироваться с надежным внешним источником (pool.ntp.org).
4. Все остальные DC: Синхронизируются с PDC.
5. Рядовые серверы/ПК: Синхронизируются с любым DC (автоматически).
Как настроить и проверить:
Windows (на PDC Emulator):
Linux (modern way - Chrony):
Взгляд архитектора: Настройка NTP — это нулевой шаг при развертывании любой инфраструктуры. "Вроде бы правильное" время не подходит. Оно должно быть синхронным.
#networking #ntp #time #windows #linux #sysadmin #troubleshooting
Боль: Пользователи не могут войти в домен. Логи сыплют ошибками аутентификации. 2FA-коды "не подходят". Кластер баз данных развалился. Причина: Рассинхронизация времени (Time Drift).
В распределенных системах (Active Directory, Kerberos, Ceph, Kubernetes) время — это не просто "часы", это механизм защиты от повторного воспроизведения пакетов. Если разница между сервером и клиентом > 5 минут (для AD), всё ломается.
Классическая иерархия NTP (Network Time Protocol):
1. Stratum 0: Атомные часы, GPS.
2. Stratum 1: Серверы, подключенные к Stratum 0 напрямую.
3. PDC Emulator (в Windows AD): Должен синхронизироваться с надежным внешним источником (pool.ntp.org).
4. Все остальные DC: Синхронизируются с PDC.
5. Рядовые серверы/ПК: Синхронизируются с любым DC (автоматически).
Как настроить и проверить:
Windows (на PDC Emulator):
# Указать внешний источник
w32tm /config /manualpeerlist:"0.pool.ntp.org 1.pool.ntp.org" /syncfromflags:manual /reliable:YES /update
# Проверить статус
w32tm /query /status
Linux (modern way - Chrony):
# Показать источники и рассинхрон
chronyc sources -v
chronyc tracking
Взгляд архитектора: Настройка NTP — это нулевой шаг при развертывании любой инфраструктуры. "Вроде бы правильное" время не подходит. Оно должно быть синхронным.
#networking #ntp #time #windows #linux #sysadmin #troubleshooting
Security (Infrastructure): Смерть authorized_keys. Переходим на SSH-сертификаты
Боль: У вас 100 серверов и 10 админов. Вы копируете их публичные ключи (id_rsa.pub) в файл ~/.ssh/authorized_keys на каждый сервер.
Проблема 1: Админ уволился. Нужно удалить его ключ со 100 серверов.
Проблема 2: Админ потерял ноутбук. Его ключ скомпрометирован навсегда.
Решение: SSH Certificate Authority (CA) Netflix, Facebook и Uber не используют статические ключи. Они используют сертификаты. Это встроенная функция OpenSSH, о которой мало кто знает.
Как это работает:
Вы создаете CA: Генерируете "мастер-ключ" (храните его в сейфе/Vault).
На серверах: В sshd_config прописываете одну строчку: "Доверяй всем ключам, подписанным этим CA". (Файл authorized_keys больше не нужен!).
Вход админа:
Админ кидает свой pub-ключ в ваш Vault (или подписывающий сервис).
Вы (или SSO) проверяете его личность.
Вы подписываете его ключ своим CA со сроком жизни 1 час.
Админ заходит на серверы.
Через час: Сертификат "протухает". Доступа нет.
Взгляд архитектора: Это переход от статического доступа к эфемероному. Вам больше не нужно "ротировать" ключи или чистить серверы. Доступ выдается Just-in-Time (JIT).
#security #ssh #linux #zerotrust #architect #vault #гайд
Боль: У вас 100 серверов и 10 админов. Вы копируете их публичные ключи (id_rsa.pub) в файл ~/.ssh/authorized_keys на каждый сервер.
Проблема 1: Админ уволился. Нужно удалить его ключ со 100 серверов.
Проблема 2: Админ потерял ноутбук. Его ключ скомпрометирован навсегда.
Решение: SSH Certificate Authority (CA) Netflix, Facebook и Uber не используют статические ключи. Они используют сертификаты. Это встроенная функция OpenSSH, о которой мало кто знает.
Как это работает:
Вы создаете CA: Генерируете "мастер-ключ" (храните его в сейфе/Vault).
На серверах: В sshd_config прописываете одну строчку: "Доверяй всем ключам, подписанным этим CA". (Файл authorized_keys больше не нужен!).
Вход админа:
Админ кидает свой pub-ключ в ваш Vault (или подписывающий сервис).
Вы (или SSO) проверяете его личность.
Вы подписываете его ключ своим CA со сроком жизни 1 час.
Админ заходит на серверы.
Через час: Сертификат "протухает". Доступа нет.
Взгляд архитектора: Это переход от статического доступа к эфемероному. Вам больше не нужно "ротировать" ключи или чистить серверы. Доступ выдается Just-in-Time (JIT).
#security #ssh #linux #zerotrust #architect #vault #гайд
Linux (Архитектура): Почему epoll устарел? Революция io_uring
Боль: Высоконагруженные базы данных (PostgreSQL, Redis) и веб-серверы тратят до 30% времени CPU просто на "общение" с ядром (System Calls). Старый механизм асинхронного ввода-вывода (epoll) требует постоянных переключений контекста.
Революция: io_uring Это новый интерфейс ядра Linux (появился в 5.1, стал стандартом сейчас), который меняет всё.
В чем суть (на пальцах):
epoll: Приложение: "Ядро, есть данные?" -> Ядро: "Нет" -> Приложение ждет -> Ядро: "Есть" -> Приложение: "Дай". (Куча системных вызовов).
io_uring: Приложение и Ядро создают два кольцевых буфера (Ring Buffers) в общей памяти.
Приложение кладет запрос в буфер "Submission".
Ядро забирает его, делает работу и кладет результат в буфер "Completion".
Ноль системных вызовов (Zero Syscall overhead).
Взгляд архитектора: Если вы видите, что ваш Nginx или MySQL после обновления ядра стали работать на 20-40% быстрее — это io_uring. Архитектор должен знать: для I/O-intensive задач (файловые хранилища, БД) выбор дистрибутива с новым ядром (5.10+) — это бесплатный прирост производительности.
#linux #kernel #performance #iouring #epoll #architect #highload
Боль: Высоконагруженные базы данных (PostgreSQL, Redis) и веб-серверы тратят до 30% времени CPU просто на "общение" с ядром (System Calls). Старый механизм асинхронного ввода-вывода (epoll) требует постоянных переключений контекста.
Революция: io_uring Это новый интерфейс ядра Linux (появился в 5.1, стал стандартом сейчас), который меняет всё.
В чем суть (на пальцах):
epoll: Приложение: "Ядро, есть данные?" -> Ядро: "Нет" -> Приложение ждет -> Ядро: "Есть" -> Приложение: "Дай". (Куча системных вызовов).
io_uring: Приложение и Ядро создают два кольцевых буфера (Ring Buffers) в общей памяти.
Приложение кладет запрос в буфер "Submission".
Ядро забирает его, делает работу и кладет результат в буфер "Completion".
Ноль системных вызовов (Zero Syscall overhead).
Взгляд архитектора: Если вы видите, что ваш Nginx или MySQL после обновления ядра стали работать на 20-40% быстрее — это io_uring. Архитектор должен знать: для I/O-intensive задач (файловые хранилища, БД) выбор дистрибутива с новым ядром (5.10+) — это бесплатный прирост производительности.
#linux #kernel #performance #iouring #epoll #architect #highload
❤4
🛠️ Security: "Defender's Toolkit". 4 инструмента для анализа фишинга
Ручной разбор заголовков — это база. Но архитектор безопасности не работает в вакууме. Он использует внешнюю разведку (Threat Intelligence) и автоматизацию, чтобы подтвердить свои гипотезы.
Вот 4 инструмента, которые должны быть в закладках у каждого, кто защищает почту:
MXToolbox (https://mxtoolbox.com)
Зачем: "Аудит инфраструктуры отправителя".
Как использовать: Проверьте IP отправителя в черных списках (Blacklists). Проверьте его SPF, DKIM и DMARC записи. Если у "банка" не настроен DMARC — это красный флаг.
PhishTank (https://phishtank.com)
Зачем: "Коллективный разум".
Как использовать: Это открытая база фишинговых ссылок. Прежде чем открывать подозрительный URL в песочнице, проверьте, не знает ли о нем уже сообщество.
The Spamhaus Project (https://www.spamhaus.org)
Зачем: "Репутация IP и Доменов".
Как использовать: Это золотой стандарт IP-репутации. Если IP отправителя есть в SBL (Spamhaus Block List) — блокируйте не глядя.
eml_analyzer (https://github.com/ninoseki/eml_analyzer)
Зачем: "Локальный парсинг".
Как использовать: Утилита на Python для командной строки. Она "разбирает" .eml файл на части: извлекает вложения, ссылки, структуру HTML и заголовки. Идеально для автоматизации анализа без открытия письма в почтовом клиенте.
Взгляд архитектора: Не полагайтесь только на интуицию ("выглядит подозрительно"). Опирайтесь на факты: репутацию IP, валидность DNS-записей и структуру файла.
Happy Hunting! 🏹
#security #phishing #forensics #tools #blueteam #musthave
Ручной разбор заголовков — это база. Но архитектор безопасности не работает в вакууме. Он использует внешнюю разведку (Threat Intelligence) и автоматизацию, чтобы подтвердить свои гипотезы.
Вот 4 инструмента, которые должны быть в закладках у каждого, кто защищает почту:
MXToolbox (https://mxtoolbox.com)
Зачем: "Аудит инфраструктуры отправителя".
Как использовать: Проверьте IP отправителя в черных списках (Blacklists). Проверьте его SPF, DKIM и DMARC записи. Если у "банка" не настроен DMARC — это красный флаг.
PhishTank (https://phishtank.com)
Зачем: "Коллективный разум".
Как использовать: Это открытая база фишинговых ссылок. Прежде чем открывать подозрительный URL в песочнице, проверьте, не знает ли о нем уже сообщество.
The Spamhaus Project (https://www.spamhaus.org)
Зачем: "Репутация IP и Доменов".
Как использовать: Это золотой стандарт IP-репутации. Если IP отправителя есть в SBL (Spamhaus Block List) — блокируйте не глядя.
eml_analyzer (https://github.com/ninoseki/eml_analyzer)
Зачем: "Локальный парсинг".
Как использовать: Утилита на Python для командной строки. Она "разбирает" .eml файл на части: извлекает вложения, ссылки, структуру HTML и заголовки. Идеально для автоматизации анализа без открытия письма в почтовом клиенте.
Взгляд архитектора: Не полагайтесь только на интуицию ("выглядит подозрительно"). Опирайтесь на факты: репутацию IP, валидность DNS-записей и структуру файла.
Happy Hunting! 🏹
#security #phishing #forensics #tools #blueteam #musthave
🔥2
⚡ Linux: nice — для слабаков. Управляем Real-Time приоритетами с chrt
Боль: У вас есть критически важный процесс (например, VoIP-шлюз, база данных или процесс сбора метрик), который "заикается" или тормозит, когда сервер нагружен архивацией логов.
Реакция админа: renice -n -20 <PID>. (Это не поможет, если CPU загружен на 100%. Планировщик всё равно будет "честно" делить время).
Реакция архитектора: Использовать Real-Time Scheduler (SCHED_FIFO или SCHED_RR).
chrt — это утилита для управления планировщиком процессов.
Как это работает: Обычные процессы работают в классе SCHED_OTHER. Real-Time процессы (RT) имеют абсолютный приоритет. Если RT-процесс хочет CPU, ядро останавливает всё остальное, чтобы дать ему ресурсы.
Команды:
1. Посмотреть текущую политику процесса:
2. Сделать процесс "Бессмертным" (SCHED_FIFO): Внимание! Если этот процесс "зависнет" и съест 100% CPU, ваша система намертво зависнет.
Взгляд архитектора: Это инструмент для Low Latency систем. Но с великой силой приходит великая ответственность. Архитектор использует chrt только тогда, когда понимает риски и изолирует такие процессы (например, через isolcpus в параметрах ядра).
#linux #performance #kernel #realtime #sre #chrt #гайд
Боль: У вас есть критически важный процесс (например, VoIP-шлюз, база данных или процесс сбора метрик), который "заикается" или тормозит, когда сервер нагружен архивацией логов.
Реакция админа: renice -n -20 <PID>. (Это не поможет, если CPU загружен на 100%. Планировщик всё равно будет "честно" делить время).
Реакция архитектора: Использовать Real-Time Scheduler (SCHED_FIFO или SCHED_RR).
chrt — это утилита для управления планировщиком процессов.
Как это работает: Обычные процессы работают в классе SCHED_OTHER. Real-Time процессы (RT) имеют абсолютный приоритет. Если RT-процесс хочет CPU, ядро останавливает всё остальное, чтобы дать ему ресурсы.
Команды:
1. Посмотреть текущую политику процесса:
chrt -p 1234
# pid 1234's current scheduling policy: SCHED_OTHER
# pid 1234's current scheduling priority: 0
2. Сделать процесс "Бессмертным" (SCHED_FIFO): Внимание! Если этот процесс "зависнет" и съест 100% CPU, ваша система намертво зависнет.
# -f: FIFO (First In, First Out)
# -p 10: Приоритет 10 (от 1 до 99)
sudo chrt -f -p 10 1234
Взгляд архитектора: Это инструмент для Low Latency систем. Но с великой силой приходит великая ответственность. Архитектор использует chrt только тогда, когда понимает риски и изолирует такие процессы (например, через isolcpus в параметрах ядра).
#linux #performance #kernel #realtime #sre #chrt #гайд
🔒 Windows: WinRM over HTTPS. Почему TrustedHosts="*" — это дыра
Боль: Вы управляете серверами через PowerShell Remoting (Enter-PSSession). Серверы не в домене (DMZ) или в другой рабочей группе.
Реакция админа: Set-Item WSMan:\localhost\Client\TrustedHosts -Value *. Перевод: "Я доверяю любому серверу, к которому подключаюсь. Если хакер перехватит DNS и подставит свой сервер, я отдам ему свои пароли".
Реакция архитектора: Настроить WinRM over HTTPS.
Это не про шифрование (WinRM и так шифруется по HTTP). Это про аутентификацию сервера. Вы должны быть уверены, что подключаетесь именно к SRV-01.
Настройка (на целевом сервере):
1. Создаем сертификат (если нет PKI):
2. Создаем HTTPS-листенер:
3. Открываем порт 5986:
Теперь подключаемся:
Если сертификат самоподписанный, на клиенте нужно один раз добавить его в доверенные или использовать -SkipCACheck (для тестов).
Взгляд архитектора: TrustedHosts — это костыль. HTTPS — это стандарт безопасности. В недоверенных сетях (DMZ, Cloud) вы обязаны проверять подлинность хоста.
#windows #powershell #security #winrm #https #sysadmin #гайд
Боль: Вы управляете серверами через PowerShell Remoting (Enter-PSSession). Серверы не в домене (DMZ) или в другой рабочей группе.
Реакция админа: Set-Item WSMan:\localhost\Client\TrustedHosts -Value *. Перевод: "Я доверяю любому серверу, к которому подключаюсь. Если хакер перехватит DNS и подставит свой сервер, я отдам ему свои пароли".
Реакция архитектора: Настроить WinRM over HTTPS.
Это не про шифрование (WinRM и так шифруется по HTTP). Это про аутентификацию сервера. Вы должны быть уверены, что подключаетесь именно к SRV-01.
Настройка (на целевом сервере):
1. Создаем сертификат (если нет PKI):
$Cert = New-SelfSignedCertificate -DnsName "srv-01.dmz.local" -CertStoreLocation Cert:\LocalMachine\My
2. Создаем HTTPS-листенер:
New-Item -Path WSMan:\localhost\Listener -Transport HTTPS -Address * -CertificateThumbprint $Cert.Thumbprint -Force
3. Открываем порт 5986:
New-NetFirewallRule -DisplayName "WinRM HTTPS" -Direction Inbound -LocalPort 5986 -Protocol TCP -Action Allow
Теперь подключаемся:
Enter-PSSession -ComputerName srv-01.dmz.local -UseSSL
Если сертификат самоподписанный, на клиенте нужно один раз добавить его в доверенные или использовать -SkipCACheck (для тестов).
Взгляд архитектора: TrustedHosts — это костыль. HTTPS — это стандарт безопасности. В недоверенных сетях (DMZ, Cloud) вы обязаны проверять подлинность хоста.
#windows #powershell #security #winrm #https #sysadmin #гайд
🗄️ Storage: Почему локальные диски умерли. Встречаем S3 (MinIO)
Боль: Ваше приложение (на PHP, Python, Go) позволяет пользователям загружать аватарки.
* Вариант 1: Сохранять в папку /var/www/uploads. (Проблема: Как масштабировать на 2 сервера? Нужен NFS или rsync — это медленно и сложно).
* Вариант 2: Сохранять в базу данных (BLOB). (Проблема: БД раздувается, бэкапы становятся огромными).
Решение: Object Storage (S3 API). Архитектор отделяет хранение (Storage) от вычислений (Compute).
MinIO — это самый популярный self-hosted S3-совместимый сервер.
Почему это круто:
1. Стандарт: S3 API поддерживают все (Veeam, Terraform, все языки программирования).
2. Масштабируемость: MinIO легко собирается в кластер.
3. Простота: Одно приложение для всех файлов.
Запуск (Docker):
Теперь ваше приложение просто шлет PUT запрос на http://minio:9000. И ему всё равно, на каком сервере оно запущено.
Взгляд архитектора: Использование локальной файловой системы для данных приложения — это антипаттерн в современном IT (12-Factor App). Переход на S3 API делает ваши приложения Cloud Native (готовыми к облаку) сразу.
#devops #storage #s3 #minio #docker #architect #гайд
Боль: Ваше приложение (на PHP, Python, Go) позволяет пользователям загружать аватарки.
* Вариант 1: Сохранять в папку /var/www/uploads. (Проблема: Как масштабировать на 2 сервера? Нужен NFS или rsync — это медленно и сложно).
* Вариант 2: Сохранять в базу данных (BLOB). (Проблема: БД раздувается, бэкапы становятся огромными).
Решение: Object Storage (S3 API). Архитектор отделяет хранение (Storage) от вычислений (Compute).
MinIO — это самый популярный self-hosted S3-совместимый сервер.
Почему это круто:
1. Стандарт: S3 API поддерживают все (Veeam, Terraform, все языки программирования).
2. Масштабируемость: MinIO легко собирается в кластер.
3. Простота: Одно приложение для всех файлов.
Запуск (Docker):
docker run -d \
-p 9000:9000 -p 9001:9001 \
--name minio \
-v /mnt/data:/data \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=SuperSecretPassword" \
minio/minio server /data --console-address ":9001"
Теперь ваше приложение просто шлет PUT запрос на http://minio:9000. И ему всё равно, на каком сервере оно запущено.
Взгляд архитектора: Использование локальной файловой системы для данных приложения — это антипаттерн в современном IT (12-Factor App). Переход на S3 API делает ваши приложения Cloud Native (готовыми к облаку) сразу.
#devops #storage #s3 #minio #docker #architect #гайд
❤2
🎂 40 лет Windows: От плиточного интерфейса до AI-помощников
Ровно 40 лет назад, 20 ноября 1985 года, Microsoft выпустила Windows 1.0.
Сейчас сложно представить, но тогда идея графического интерфейса на IBM PC была революцией. Это была не ОС, а графическая надстройка над MS-DOS за $99.
Интересные факты о "прабабушке":
Никакого перекрытия: Окна не могли накладываться друг на друга. Только "плитка" (Tiled windows).
Железо: Требовалось 256 КБ памяти и два дисковода. На 512 КБ система уже "летала" (по меркам того времени), хотя критики сравнивали её скорость с "патокой в Арктике".
Наследие: Paintbrush (предок Paint), Notepad, Calculator, Clipboard — эти приложения с нами уже 40 лет.
Рынок встретил её прохладно, но Билл Гейтс не сдался. Через пару лет вышли Windows 2.0 и легендарная 3.0, которые сделали GUI стандартом.
Взгляд архитектора: История Windows 1.0 учит нас главному принципу IT: Инновации редко бывают идеальными с первого раза. Важно не то, как продукт стартовал, а то, как он развивался. Windows 1.0 была "сырой", но она заложила фундамент экосистемы, в которой мы работаем сегодня.
#windows #history #microsoft #anniversary #it #tech
Ровно 40 лет назад, 20 ноября 1985 года, Microsoft выпустила Windows 1.0.
Сейчас сложно представить, но тогда идея графического интерфейса на IBM PC была революцией. Это была не ОС, а графическая надстройка над MS-DOS за $99.
Интересные факты о "прабабушке":
Никакого перекрытия: Окна не могли накладываться друг на друга. Только "плитка" (Tiled windows).
Железо: Требовалось 256 КБ памяти и два дисковода. На 512 КБ система уже "летала" (по меркам того времени), хотя критики сравнивали её скорость с "патокой в Арктике".
Наследие: Paintbrush (предок Paint), Notepad, Calculator, Clipboard — эти приложения с нами уже 40 лет.
Рынок встретил её прохладно, но Билл Гейтс не сдался. Через пару лет вышли Windows 2.0 и легендарная 3.0, которые сделали GUI стандартом.
Взгляд архитектора: История Windows 1.0 учит нас главному принципу IT: Инновации редко бывают идеальными с первого раза. Важно не то, как продукт стартовал, а то, как он развивался. Windows 1.0 была "сырой", но она заложила фундамент экосистемы, в которой мы работаем сегодня.
#windows #history #microsoft #anniversary #it #tech
🔥2