🔬 Linux (SRE): `htop` не видит диски. Находим "пожирателя" I/O с `iotop`
Боль: Сервер "тормозит".
Реакция админа: Перезагрузить сервер, надеясь, что "отпустит".
Реакция SRE: Запустить iotop.
Как использовать (нужен root):
Ключевые флаги (чтобы видеть суть):
Результат: Вы мгновенно увидите, что
Взгляд архитектора: Это SRE-диагностика. Вы не "гадаете", вы видите корень зла. Вы переходите от "наверное, диски" к "процесс mysqld (PID 1234) насыщает I/O, нужно смотреть его slow_query_log".
#linux #sre #performance #iotop #diagnostics #команды #гайд
Боль: Сервер "тормозит".
ssh "залипает". Вы открываете htop — CPU 5% , RAM 20% . Но iowait (wa) — 50% . Кто-то "убивает" дисковую систему.Реакция админа: Перезагрузить сервер, надеясь, что "отпустит".
Реакция SRE: Запустить iotop.
iotop — это top для Disk I/O. Он в реальном времени показывает, какой ПРОЦЕСС и сколько читает (READ) и пишет (WRITE) на диск.Как использовать (нужен root):
# 1. Установка
sudo apt install iotop
sudo yum install iotop
# 2. Запуск
sudo iotop
Ключевые флаги (чтобы видеть суть):
# -o: Показать ТОЛЬКО процессы, которые РЕАЛЬНО что-то пишут/читают
# -P: Показать Процессы, а не Потоки (намного чище вывод)
sudo iotop -oP
Результат: Вы мгновенно увидите, что
PID 1234 (mysqld) пишет 200M/s (вероятно, "упал" индекс) или PID 5678 (jbd2/sda1-8) (журнал) сошел с ума.Взгляд архитектора: Это SRE-диагностика. Вы не "гадаете", вы видите корень зла. Вы переходите от "наверное, диски" к "процесс mysqld (PID 1234) насыщает I/O, нужно смотреть его slow_query_log".
#linux #sre #performance #iotop #diagnostics #команды #гайд
⚡️ Full-Stack (DevOps): curl — это прошлое. Встречаем httpie (http)
Боль: Вам нужно отладить API. Вы пишете в curl (и мучаетесь): curl -X POST -H "Content-Type: application/json" -H "Auth: Bearer 123" -d '{"user":"admin"}' https://api.local
Реакция админа: Открыть Postman (тяжелый GUI) или "простыню" в curl.
Реакция архитектора: Использовать httpie (http).
httpie — это curl, созданный для человека. Он "умный", цветной и интуитивный.
Сравнение "До" и "После":
* curl (Боль): curl -X POST -H "Content-Type: application/json" https://api.local/users -d '{"id": 1, "name": "admin"}'
* httpie (Решение): http POST https://api.local/users id:=1 name=admin
Почему это круто:
* Авто-JSON: Он сам понимает, что вы шлете JSON.
* Подсветка: Ответ (JSON, HTML) подсвечен, как в IDE.
* Простота: Auth:Token становится http ... "Auth:Token".
Установка:
Взгляд архитектора: DX/DevEx (Developer Experience) — это не роскошь. Это эффективность. httpie — это инструмент, который снижает "трение" (friction) и экономит часы на отладке API и микросервисов.
#devops #cli #httpie #api #tools #гайд #curl
Боль: Вам нужно отладить API. Вы пишете в curl (и мучаетесь): curl -X POST -H "Content-Type: application/json" -H "Auth: Bearer 123" -d '{"user":"admin"}' https://api.local
Реакция админа: Открыть Postman (тяжелый GUI) или "простыню" в curl.
Реакция архитектора: Использовать httpie (http).
httpie — это curl, созданный для человека. Он "умный", цветной и интуитивный.
Сравнение "До" и "После":
* curl (Боль): curl -X POST -H "Content-Type: application/json" https://api.local/users -d '{"id": 1, "name": "admin"}'
* httpie (Решение): http POST https://api.local/users id:=1 name=admin
Почему это круто:
* Авто-JSON: Он сам понимает, что вы шлете JSON.
* Подсветка: Ответ (JSON, HTML) подсвечен, как в IDE.
* Простота: Auth:Token становится http ... "Auth:Token".
Установка:
sudo apt install httpie / brew install httpie
Взгляд архитектора: DX/DevEx (Developer Experience) — это не роскошь. Это эффективность. httpie — это инструмент, который снижает "трение" (friction) и экономит часы на отладке API и микросервисов.
#devops #cli #httpie #api #tools #гайд #curl
👍2
🛡️ Windows: Скрипт-аудит "Кто удалил файл?" (NTFS Forensics)
Боль: Критический файл в \\Shares\Data исчез. Бизнес в панике. "Кто это сделал и когда?!"
Реакция админа: "Я восстановлю из бэкапа" (но не знает, почему это случилось).
Реакция архитектора: "Я настрою аудит и найду виновного за 30 секунд".
Это двухэтапный процесс: сначала "взводим ловушку", потом "ловим".
Шаг 1: "Взвести ловушку" (Включить аудит на папке): (Это нужно сделать до инцидента)
(Также включите "Audit Object Access" в GPO)
Шаг 2: Скрипт-охотник (Когда инцидент произошел): Этот скрипт найдет в логах Security событие 4663 (Попытка доступа к объекту) с Accesses: ...Delete...
Взгляд архитектора: Вы переходите от "надежды" к "доказательствам". Это основа Форензики (Digital Forensics) и Incident Response (IR).
#windows #powershell #security #audit #ntfs #скрипты #гайд
Боль: Критический файл в \\Shares\Data исчез. Бизнес в панике. "Кто это сделал и когда?!"
Реакция админа: "Я восстановлю из бэкапа" (но не знает, почему это случилось).
Реакция архитектора: "Я настрою аудит и найду виновного за 30 секунд".
Это двухэтапный процесс: сначала "взводим ловушку", потом "ловим".
Шаг 1: "Взвести ловушку" (Включить аудит на папке): (Это нужно сделать до инцидента)
# 1. Получаем ACL папки
$Acl = Get-Acl "C:\Shares\Data"
# 2. Создаем правило аудита: "Следить за 'Delete' и 'DeleteSubtree' для 'Everyone'"
$AuditRule = New-Object System.Security.AccessControl.FileSystemAuditRule(
"Everyone",
"Delete, DeleteSubtreeAndFiles",
"None",
"None",
"Success, Failure"
)
# 3. Добавляем правило в ACL и применяем
$Acl.AddAuditRule($AuditRule)
Set-Acl -Path "C:\Shares\Data" -AclObject $Acl
(Также включите "Audit Object Access" в GPO)
Шаг 2: Скрипт-охотник (Когда инцидент произошел): Этот скрипт найдет в логах Security событие 4663 (Попытка доступа к объекту) с Accesses: ...Delete...
Write-Host "--- Ищу событие удаления файла в C:\Shares\Data ---"
Get-WinEvent -FilterHashtable @{
LogName = "Security";
ID = 4663
} | ForEach-Object {
# 'Object Name' - это 6-е свойство, 'Accesses' - 9-е
$ObjectName = $_.Properties[6].Value
$Accesses = $_.Properties[9].Value
# Проверяем, что это наша папка И это было удаление
if ($ObjectName -like "*C:\Shares\Data*" -and $Accesses -match "Delete") {
[PSCustomObject]@{
Time = $_.TimeCreated
User = $_.Properties[1].Value
Process = $_.Properties[13].Value
Object = $ObjectName
}
}
}
Взгляд архитектора: Вы переходите от "надежды" к "доказательствам". Это основа Форензики (Digital Forensics) и Incident Response (IR).
#windows #powershell #security #audit #ntfs #скрипты #гайд
🔬 Linux: Скрипт "Аудит открытых портов" (Сравнение с "Эталоном")
Боль: Вы думаете, что на вашем веб-сервере открыты только порты 22, 80, 443. Но разработчик "для теста" запустил python -m http.server 8000 на 0.0.0.0 и забыл.
Реакция админа: "Я проверю ss -tuln вручную, когда будет инцидент".
Реакция архитектора: "У меня есть cron-скрипт, который автоматически сверяет 'что есть' с 'что должно быть'".
Этот Bash-скрипт — ваш аудитор безопасности.
Код скрипта:
Взгляд архитектора: Это "Compliance as Code". Вы не "проверяете", вы валидируете вашу политику безопасности. Этот скрипт — основа для автоматического алерта в Zabbix или Prometheus (Alertmanager).
#linux #bash #security #networking #audit #скрипты #sre
Боль: Вы думаете, что на вашем веб-сервере открыты только порты 22, 80, 443. Но разработчик "для теста" запустил python -m http.server 8000 на 0.0.0.0 и забыл.
Реакция админа: "Я проверю ss -tuln вручную, когда будет инцидент".
Реакция архитектора: "У меня есть cron-скрипт, который автоматически сверяет 'что есть' с 'что должно быть'".
Этот Bash-скрипт — ваш аудитор безопасности.
Код скрипта:
#!/bin/bash
# --- Скрипт аудита "лишних" TCP-портов ---
# 1. ЭТАЛОН: Порты, которые ДОЛЖНЫ быть открыты (на 0.0.0.0)
# (Используйте 'ssh' или номер '22')
ALLOWED_PORTS=(
"ssh"
"http"
"httpsA"
)
# 2. ФАКТ: Получаем все, что слушает на 0.0.0.0 (IPv4)
# `ss -tuln`: TCP, UDP, Listening, Numeric
# `awk ...`: Вытаскиваем только номер порта
CURRENT_PORTS=$(ss -tuln | grep 'LISTEN.*0.0.0.0:' | awk '{print $5}' | sed 's/.*://' | sort -u)
# 3. СРАВНЕНИЕ:
# `comm -13`: Показывает строки, которые есть только во втором файле (CURRENT_PORTS)
# (т.е. "лишние" порты)
UNAUTHORIZED_PORTS=$(comm -13 <(printf "%s\n" "${ALLOWED_PORTS[@]}" | sort -u) <(echo "$CURRENT_PORTS"))
if [ -n "$UNAUTHORIZED_PORTS" ]; then
echo "[!!!] ОБНАРУЖЕНЫ НЕСАНКЦИОНИРОВАННЫЕ ОТКРЫТЫЕ ПОРТЫ:"
echo "$UNAUTHORIZED_PORTS"
exit 1
else
echo "[OK] Все порты соответствуют эталону."
exit 0
fi
Взгляд архитектора: Это "Compliance as Code". Вы не "проверяете", вы валидируете вашу политику безопасности. Этот скрипт — основа для автоматического алерта в Zabbix или Prometheus (Alertmanager).
#linux #bash #security #networking #audit #скрипты #sre
🚀 DevOps: Скрипт "CI/CD-раннер за 60 секунд" (Docker)
Боль: Ваш docker build в общем CI/CD GitLab/GitHub "висит" в очереди 20 минут. Вы не можете работать, потому что все "раннеры" заняты.
Реакция админа: "Пойду попью кофе, подожду".
Реакция архитектора: "Я запущу свой runner на своей Home Lab (или VDS) за 60 секунд".
Эти "однострочники" — это не просто docker run, это мгновенное масштабирование вашего CI/CD.
Скрипт для GitLab Runner:
Скрипт для GitHub Actions Runner: (Процесс похож, но требует docker-compose для авто-регистрации)
Взгляд архитектора: Это "Infrastructure on-demand" (Инфраструктура по требованию). Вы не ждете ресурсы, вы создаете их. Вы строите распределенную CI/CD-систему, используя Docker как "строительный блок".
#devops #docker #cicd #gitlab #github #automation #скрипты #гайд
Боль: Ваш docker build в общем CI/CD GitLab/GitHub "висит" в очереди 20 минут. Вы не можете работать, потому что все "раннеры" заняты.
Реакция админа: "Пойду попью кофе, подожду".
Реакция архитектора: "Я запущу свой runner на своей Home Lab (или VDS) за 60 секунд".
Эти "однострочники" — это не просто docker run, это мгновенное масштабирование вашего CI/CD.
Скрипт для GitLab Runner:
# 1. Получите ваш Registration Token из GitLab (Settings -> CI/CD -> Runners)
GITLAB_TOKEN="ВАШ_ТОКЕН"
# 2. Запускаем "вечный" раннер в Docker
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
# 3. Регистрируем раннер
docker exec -it gitlab-runner \
gitlab-runner register \
--non-interactive \
--url "https://gitlab.com/" \
--registration-token "$GITLAB_TOKEN" \
--executor "docker" \
--docker-image "docker:20.10" \
--description "My-Docker-Runner"
Скрипт для GitHub Actions Runner: (Процесс похож, но требует docker-compose для авто-регистрации)
Взгляд архитектора: Это "Infrastructure on-demand" (Инфраструктура по требованию). Вы не ждете ресурсы, вы создаете их. Вы строите распределенную CI/CD-систему, используя Docker как "строительный блок".
#devops #docker #cicd #gitlab #github #automation #скрипты #гайд
🔬 Linux: Скрипт "Аудит dmesg". Ищем аппаратные ошибки
Боль: Сервер "тормозит", но htop и iotop — "зеленые". Приложение "вылетает" с Segfault.
Причина: Вы не видите аппаратных проблем. Отказ диска, "битая" RAM, проблемы с CPU — всё это логируется ядром в dmesg.
Реакция админа: "Проблемы с софтом, буду чинить приложение".
Реакция SRE: "Сначала проверю dmesg".
Этот Bash-скрипт — ваш "аппаратный аудитор". Он парсит dmesg и ищет "красные флаги".
Код скрипта:
Взгляд архитектора: Это проактивный мониторинг "железа". Вы не ждете, пока smartd (диск) или EDAC (RAM) "покраснеют". Вы валидируете здоровье сервера на уровне ядра.
#linux #sre #diagnostics #bash #dmesg #скрипты #sysadmin
Боль: Сервер "тормозит", но htop и iotop — "зеленые". Приложение "вылетает" с Segfault.
Причина: Вы не видите аппаратных проблем. Отказ диска, "битая" RAM, проблемы с CPU — всё это логируется ядром в dmesg.
Реакция админа: "Проблемы с софтом, буду чинить приложение".
Реакция SRE: "Сначала проверю dmesg".
Этот Bash-скрипт — ваш "аппаратный аудитор". Он парсит dmesg и ищет "красные флаги".
Код скрипта:
#!/bin/bash
# --- Скрипт-аудитор 'dmesg' на ошибки ---
echo "--- Ищу 'красные флаги' в логах ядра (dmesg)... ---"
# -T: (Timestamps) Показать человеческое время
# --level=err,warn: Показать ТОЛЬКО ошибки и предупреждения
# (segfault, EDAC, I/O error, memory error...)
CRITICAL_ERRORS=$(dmesg -T --level=err,warn)
if [ -n "$CRITICAL_ERRORS" ]; then
echo "[!!!] ОБНАРУЖЕНЫ КРИТИЧЕСКИЕ СОБЫТИЯ ЯДРА:"
echo "$CRITICAL_ERRORS" | tail -n 20
echo "--- Рекомендация: Немедленно проверьте I/O, EDAC (RAM) и CPU. ---"
else
echo "[OK] Критических ошибок в dmesg не найдено."
fi
Взгляд архитектора: Это проактивный мониторинг "железа". Вы не ждете, пока smartd (диск) или EDAC (RAM) "покраснеют". Вы валидируете здоровье сервера на уровне ядра.
#linux #sre #diagnostics #bash #dmesg #скрипты #sysadmin
🔒 Проект на выходные: Vaultwarden — ваш личный Bitwarden
Боль: У вас 500 паролей (RDP, SSH, Web-морды, API-ключи). Они лежат в KeePass-файле в Dropbox, в Excel-файле на "шаре" или (о ужас) в .txt.
Решение: Развернуть свой менеджер паролей. Bitwarden — топ, но его "self-hosted" версия тяжеловата (требует MSSQL).
Vaultwarden — это альтернативная реализация Bitwarden-сервера, написанная на Rust. Она 100% совместима со всеми клиентами Bitwarden (Chrome, iOS, Android), но при этом:
Легковесная: Работает в Docker, ест < 100МБ RAM.
Простая: Не требует MS SQL. Использует SQLite "из коробки".
Запускаем в Docker за 60 секунд:
Откройте http://<ip>:8080 и создайте аккаунт. Теперь это ваш Bitwarden.
Взгляд архитектора: Это "суверенитет данных" (Data Sovereignty). Вы возвращаете полный контроль над вашими самыми критическими активами — паролями.
#security #docker #selfhosted #bitwarden #vaultwarden #weekendproject #гайд
Боль: У вас 500 паролей (RDP, SSH, Web-морды, API-ключи). Они лежат в KeePass-файле в Dropbox, в Excel-файле на "шаре" или (о ужас) в .txt.
Решение: Развернуть свой менеджер паролей. Bitwarden — топ, но его "self-hosted" версия тяжеловата (требует MSSQL).
Vaultwarden — это альтернативная реализация Bitwarden-сервера, написанная на Rust. Она 100% совместима со всеми клиентами Bitwarden (Chrome, iOS, Android), но при этом:
Легковесная: Работает в Docker, ест < 100МБ RAM.
Простая: Не требует MS SQL. Использует SQLite "из коробки".
Запускаем в Docker за 60 секунд:
# 1. Создаем volume для данных (чтобы не потерять!)
docker volume create vaultwarden-data
# 2. Запускаем контейнер
docker run -d --name vaultwarden \
-v vaultwarden-data:/data \
-p 8080:80 \
--restart unless-stopped \
vaultwarden/server:latest
Откройте http://<ip>:8080 и создайте аккаунт. Теперь это ваш Bitwarden.
Взгляд архитектора: Это "суверенитет данных" (Data Sovereignty). Вы возвращаете полный контроль над вашими самыми критическими активами — паролями.
#security #docker #selfhosted #bitwarden #vaultwarden #weekendproject #гайд
✅ AI-Промпт (Чек-лист): "Напиши мне systemd unit-файл"
Боль: Вы написали крутой скрипт на Python (app.py), но запускаете его в screen или через nohup ... &. Он "падает" — и всё.
Решение: Превратить его в настоящую Linux-службу (systemd). Но писать unit-файлы вручную — это "боль" (забыть [Install], User= и т.д.).
AI — идеальный генератор "болванок".
Промпт (для ChatGPT/Gemini/Copilot):
Взгляд архитектора: AI генерирует идемпотентный, безопасный (User=) и отказоустойчивый (Restart=) unit. Вы не тратите время на "бойлерплейт", а сразу получаете best-practice.
#ai4admin #linux #systemd #sre #automation #промпты #чеклисты
Боль: Вы написали крутой скрипт на Python (app.py), но запускаете его в screen или через nohup ... &. Он "падает" — и всё.
Решение: Превратить его в настоящую Linux-службу (systemd). Но писать unit-файлы вручную — это "боль" (забыть [Install], User= и т.д.).
AI — идеальный генератор "болванок".
Промпт (для ChatGPT/Gemini/Copilot):
Выступи в роли Senior Linux SRE.
Напиши "production-ready" systemd unit-файл (`my-app.service`) для моего Python-приложения.
Чек-лист требований для AI:
1. [ ] [Unit]: Добавить `Description=` и `After=network.target` (чтобы запускался *после* сети).
2. [ ] [Service]:
* `Type=simple`
* `ExecStart=/usr/bin/python3 /opt/my-app/app.py` (путь к приложению).
* `User=www-data` (Критично! Не запускать от root!).
* `Restart=on-failure` (Критично! Авто-перезапуск при сбое).
* `RestartSec=5`
* `WorkingDirectory=/opt/my-app`
3. [ ] [Install]:
* `WantedBy=multi-user.target` (чтобы включался через `systemctl enable`).
4. [ ] Объясни каждую секцию.
Взгляд архитектора: AI генерирует идемпотентный, безопасный (User=) и отказоустойчивый (Restart=) unit. Вы не тратите время на "бойлерплейт", а сразу получаете best-practice.
#ai4admin #linux #systemd #sre #automation #промпты #чеклисты
🔥2
🖥 Security (Home Lab): Pi-hole — "Адблок" для всей вашей домашней сети
Боль: Ваш телефон, ноутбук, планшет, телевизор и даже умная колонка показывают рекламу. Это не только раздражает, но и несет реальные риски: фишинг, малварь, отслеживание. Один неудачный клик — и вся сеть под угрозой.
Решение: Блокировка рекламы и трекеров на уровне DNS для всех устройств в сети.
Pi-hole — это DNS-сервер, который работает как "черная дыра" для нежелательного трафика. Он перехватывает запросы к рекламным и вредоносным доменам и просто не отвечает на них.
Что вы получаете:
Блокировка рекламы везде: На всех устройствах, включая те, где нельзя поставить "адблок" (Smart TV, IoT).
Защита от малвари/фишинга: Большинство вредоносных сайтов используют одни и те же домены — Pi-hole их блокирует.
Контроль и Observability: Удобный веб-интерфейс показывает, какое устройство куда стучится, и что Pi-hole заблокировал.
Никаких VPN: Работает "из коробки" на роутере.
Запуск (в Docker за 5 минут):
После запуска: Перенастройте DNS-сервер на вашем роутере на IP-адрес вашего Pi-hole.
Взгляд архитектора: Вы не "блокируете рекламу". Вы перехватываете контроль над своим DNS-трафиком. Это первый шаг к построению "сегментированной" и "фильтрованной" домашней сети, как в Enterprise.
#security #homelab #pihole #dns #docker #гайд #musthave
Боль: Ваш телефон, ноутбук, планшет, телевизор и даже умная колонка показывают рекламу. Это не только раздражает, но и несет реальные риски: фишинг, малварь, отслеживание. Один неудачный клик — и вся сеть под угрозой.
Решение: Блокировка рекламы и трекеров на уровне DNS для всех устройств в сети.
Pi-hole — это DNS-сервер, который работает как "черная дыра" для нежелательного трафика. Он перехватывает запросы к рекламным и вредоносным доменам и просто не отвечает на них.
Что вы получаете:
Блокировка рекламы везде: На всех устройствах, включая те, где нельзя поставить "адблок" (Smart TV, IoT).
Защита от малвари/фишинга: Большинство вредоносных сайтов используют одни и те же домены — Pi-hole их блокирует.
Контроль и Observability: Удобный веб-интерфейс показывает, какое устройство куда стучится, и что Pi-hole заблокировал.
Никаких VPN: Работает "из коробки" на роутере.
Запуск (в Docker за 5 минут):
# Создаем папку для конфигурации
mkdir -p /opt/pihole
# Запускаем контейнер
docker run -d \
--name pihole \
-p 53:53/tcp -p 53:53/udp \
-p 80:80 \
-e PUID=1000 -e PGID=1000 \
-e TZ="Europe/Moscow" \
-v /opt/pihole:/etc/pihole \
--restart=unless-stopped \
pihole/pihole:latest
После запуска: Перенастройте DNS-сервер на вашем роутере на IP-адрес вашего Pi-hole.
Взгляд архитектора: Вы не "блокируете рекламу". Вы перехватываете контроль над своим DNS-трафиком. Это первый шаг к построению "сегментированной" и "фильтрованной" домашней сети, как в Enterprise.
#security #homelab #pihole #dns #docker #гайд #musthave
👍2
🔒 Windows (Security): "Куда бежать?" Аудит открытых сетевых шар (Open Shares)
Боль: Вы "думаете", что все ваши файловые шары защищены и доступны только "изнутри". Но где-то тихо "живет" шара \\SERVER\Docs, которая открыта "Everyone: Full Control" и светит в интернет через проброс портов.
Реакция админа: "Пролистаю Computer Management на каждом сервере". (Это тысячи шар).
Реакция архитектора: Запустить автоматический скрипт-аудит.
Этот PowerShell-скрипт найдет все открытые шары на всех ваших серверах, которые разрешают доступ группе Everyone (или Authenticated Users).
Код скрипта:
Взгляд архитектора: Это — непрерывный аудит периметра. Открытая шара — это золотой рудник для атакующего. Этот скрипт — ваш сканер безопасности, который должен запускаться регулярно.
#windows #powershell #security #audit #networking #скрипты #sysadmin
Боль: Вы "думаете", что все ваши файловые шары защищены и доступны только "изнутри". Но где-то тихо "живет" шара \\SERVER\Docs, которая открыта "Everyone: Full Control" и светит в интернет через проброс портов.
Реакция админа: "Пролистаю Computer Management на каждом сервере". (Это тысячи шар).
Реакция архитектора: Запустить автоматический скрипт-аудит.
Этот PowerShell-скрипт найдет все открытые шары на всех ваших серверах, которые разрешают доступ группе Everyone (или Authenticated Users).
Код скрипта:
Write-Host "--- Начинаю аудит открытых сетевых шар (Everyone/Auth. Users) ---" -ForegroundColor Cyan
# 1. Получаем список всех серверов в домене
$Servers = Get-ADComputer -Filter 'OperatingSystem -like "Windows Server*"' | Select-Object -ExpandProperty Name
$Report = @()
foreach ($Server in $Servers) {
Write-Host "Проверяю сервер: $Server..."
try {
# Получаем все шары на сервере
$Shares = Get-CimInstance -ClassName Win32_Share -ComputerName $Server -ErrorAction Stop
foreach ($Share in $Shares) {
# Пропускаем стандартные (ADMIN$, C$, IPC$)
if ($Share.Name -notmatch '\$') {
# Получаем ACL каждой шары
$Acl = Get-Acl "Microsoft.PowerShell.Core\FileSystem::\\$Server\$($Share.Name)" -ErrorAction SilentlyContinue
if ($Acl) {
# Ищем правила для Everyone или Authenticated Users
$OpenAcl = $Acl.Access | Where-Object {
($_.IdentityReference -eq "Everyone") -or ($_.IdentityReference -eq "Authenticated Users")
}
if ($OpenAcl) {
$Report += [PSCustomObject]@{
Server = $Server
ShareName = $Share.Name
Path = $Share.Path
Identity = $OpenAcl.IdentityReference
AccessRights = $OpenAcl.FileSystemRights
AccessType = $OpenAcl.AccessControlType
}
}
}
}
}
}
catch {
Write-Warning "Не удалось подключиться к $Server: $($_.Exception.Message)"
}
}
if ($Report) {
Write-Host "`n[!!!] ОБНАРУЖЕНЫ ОТКРЫТЫЕ СЕТЕВЫЕ ШАРЫ (EVERYONE / AUTHENTICATED USERS):" -ForegroundColor Red
$Report | Format-Table -Wrap -AutoSize
} else {
Write-Host "`n[OK] Открытых сетевых шар не найдено." -ForegroundColor Green
}
Взгляд архитектора: Это — непрерывный аудит периметра. Открытая шара — это золотой рудник для атакующего. Этот скрипт — ваш сканер безопасности, который должен запускаться регулярно.
#windows #powershell #security #audit #networking #скрипты #sysadmin
👍2
🛡️ Windows (Security): Аудит UAC. "Почему админ нажимает 'Да'?"
Боль: Вы настроили LAPS, убрали права. Но UAC (User Account Control) — это "внутренний файрвол" Windows, который останавливает 90% атак с повышением привилегий. И многие админы его отключают или ослабляют до "тихого" режима, потому что он "мешает".
Реакция админа: "Я просто нажму 'Да', я же админ".
Реакция архитектора: "Я принудительно включу безопасный UAC через GPO и буду аудировать тех, кто его отключает".
Этот PowerShell-скрипт — ваш аудитор. Он проверит критически важные ключи реестра UAC на списке машин.
Код скрипта:
Взгляд архитектора: Отключение UAC (EnableLUA = 0) — это не "удобство", это приглашение для mimikatz и шифровальщиков. Этот скрипт — ваш первый шаг к Security Baseline (базовому уровню безопасности).
#windows #powershell #security #uac #audit #скрипты #sysadmin
Боль: Вы настроили LAPS, убрали права. Но UAC (User Account Control) — это "внутренний файрвол" Windows, который останавливает 90% атак с повышением привилегий. И многие админы его отключают или ослабляют до "тихого" режима, потому что он "мешает".
Реакция админа: "Я просто нажму 'Да', я же админ".
Реакция архитектора: "Я принудительно включу безопасный UAC через GPO и буду аудировать тех, кто его отключает".
Этот PowerShell-скрипт — ваш аудитор. Он проверит критически важные ключи реестра UAC на списке машин.
Код скрипта:
[CmdletBinding()]
param (
[string[]]$ComputerNames = @("SERVER01", "WKS-01")
)
$UAC_Path = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
$Report = @()
foreach ($Server in $ComputerNames) {
Write-Host "Проверяю UAC на $Server..."
if (-not (Test-Connection -ComputerName $Server -Count 1 -Quiet)) {
$Report += [PSCustomObject]@{ ComputerName = $Server; Status = "НЕДОСТУПЕН" }
continue
}
try {
$RegKey = Get-ItemProperty -Path $UAC_Path -ComputerName $Server -ErrorAction Stop
$Report += [PSCustomObject]@{
ComputerName = $Server
Status = "OK"
# 1 = Включен (Хорошо)
EnableLUA = $RegKey.EnableLUA
# 2 = "Prompt for consent on the secure desktop" (Лучший)
# 5 = "Prompt for consent" (Нормально)
# 0 = "Elevate without prompting" (КРИТИЧЕСКАЯ УЯЗВИМОСТЬ)
ConsentPromptBehaviorAdmin = $RegKey.ConsentPromptBehaviorAdmin
}
}
catch {
$Report += [PSCustomObject]@{ ComputerName = $Server; Status = "ОШИБКА ДОСТУПА" }
}
}
Write-Host "`n--- РЕЗУЛЬТАТ АУДИТА UAC ---"
$Report | Format-Table
Write-Host "[!] 'EnableLUA = 0' или 'ConsentPromptBehaviorAdmin = 0' — это дыра в безопасности!" -ForegroundColor Red
Взгляд архитектора: Отключение UAC (EnableLUA = 0) — это не "удобство", это приглашение для mimikatz и шифровальщиков. Этот скрипт — ваш первый шаг к Security Baseline (базовому уровню безопасности).
#windows #powershell #security #uac #audit #скрипты #sysadmin
🚀 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