Чистим Linux-сервер перед выходными: Чек-лист по освобождению места на диске
Пятница — идеальный день, чтобы навести порядок на серверах. Никому не хочется получать алерты о забитом диске в субботу утром. Пробегитесь по этому чек-листу, чтобы освободить место и спокойно встретить выходные.
▪️ 1. Удаляем ненужные пакеты и кэш apt/dnf
Начните с чистки пакетного менеджера.
Bash
▪️ 2. Удаляем старые версии ядер Linux
Со временем может накопиться несколько старых ядер, занимающих сотни мегабайт.
Bash
▪️ 3. Чистим логи
Логи могут быстро разрастаться, особенно если есть проблемы.
Bash
При необходимости вручную удалите или архивируйте старые, большие файлы, которые не ротируются.
▪️ 4. Временные файлы (/tmp, /var/tmp)
Эти директории обычно очищаются автоматически при перезагрузке, но если сервер не перезагружался давно, там может скопиться мусор.
Bash
Используйте с осторожностью, убедившись, что в /tmp нет активных файлов.
▪️ 5. Проверяем Docker (если используете)
Docker может оставлять много «мусора»: неиспользуемые образы, контейнеры, тома.
Bash
📌 Резюме: Эти простые шаги помогут вам держать дисковое пространство под контролем. Теперь можно спокойно идти на выходные!
#Linux #SysAdmin #DiskSpace #Maintenance #Чеклисты
Пятница — идеальный день, чтобы навести порядок на серверах. Никому не хочется получать алерты о забитом диске в субботу утром. Пробегитесь по этому чек-листу, чтобы освободить место и спокойно встретить выходные.
▪️ 1. Удаляем ненужные пакеты и кэш apt/dnf
Начните с чистки пакетного менеджера.
Bash
# Для Debian/Ubuntu: удаляем устаревшие пакеты
sudo apt autoremove -y
# Очищаем кэш пакетов
sudo apt clean
# Для RHEL/CentOS/Fedora:
sudo dnf autoremove -y
sudo dnf clean all
▪️ 2. Удаляем старые версии ядер Linux
Со временем может накопиться несколько старых ядер, занимающих сотни мегабайт.
Bash
# Для Debian/Ubuntu:
# Показать установленные ядра, кроме текущего
dpkg -l | grep linux-image | awk '{print $2}' | grep -v "$(uname -r)"
# Удалить ненужное ядро (замените <package_name> на имя из вывода выше)
sudo apt remove <package_name>
# Для RHEL/CentOS/Fedora:
# Показать установленные ядра
sudo dnf list installed kernel
# Удалить старые ядра (обычно сохраняется 2-3 последних)
# dnf remove -y $(dnf repoquery --installonly --latest-limit=-2 -q)
# или вручную: sudo dnf remove kernel-<version>
▪️ 3. Чистим логи
Логи могут быстро разрастаться, особенно если есть проблемы.
Bash
# Очищаем journald (оставляем только последние 7 дней или 500Мб)
sudo journalctl --vacuum-time=7d
# или
sudo journalctl --vacuum-size=500M
# Проверяем размер логов в /var/log/ (ищем самые большие файлы)
sudo du -sh /var/log/* | sort -rh | head -n 10
При необходимости вручную удалите или архивируйте старые, большие файлы, которые не ротируются.
▪️ 4. Временные файлы (/tmp, /var/tmp)
Эти директории обычно очищаются автоматически при перезагрузке, но если сервер не перезагружался давно, там может скопиться мусор.
Bash
sudo rm -rf /tmp/* /var/tmp/*
Используйте с осторожностью, убедившись, что в /tmp нет активных файлов.
▪️ 5. Проверяем Docker (если используете)
Docker может оставлять много «мусора»: неиспользуемые образы, контейнеры, тома.
Bash
# Удалить неиспользуемые объекты (контейнеры, сети, образы, кэш)
docker system prune -a
📌 Резюме: Эти простые шаги помогут вам держать дисковое пространство под контролем. Теперь можно спокойно идти на выходные!
#Linux #SysAdmin #DiskSpace #Maintenance #Чеклисты
Linux: Cgroups — Как контейнеры держат свои обещания (и как вы можете)
Вы когда-нибудь задумывались, как Docker или Kubernetes могут гарантировать, что один контейнер не "съест" все ресурсы сервера, оставив остальные голодать? Ответ — cgroups (Control Groups).
Что такое cgroups?
Это механизм ядра Linux, который позволяет организовывать процессы в иерархические группы и управлять их доступом к системным ресурсам:
CPU: Сколько процессорного времени может использовать группа.
Memory: Максимальный объем оперативной памяти.
Disk I/O: Приоритет и скорость чтения/записи на диск.
Network: Ограничения на сетевой трафик.
▪️ Почему это важно для админа?
Контейнеры (Docker, Podman, LXC): Они используют cgroups как основу для изоляции ресурсов. Когда вы задаете -m 512M для Docker-контейнера, это cgroups устанавливает лимит памяти.
Защита от "шумных соседей": Если у вас несколько сервисов на одном VDS/сервере, вы можете создать cgroup для каждого и гарантировать, что один прожорливый процесс не подвесит всю систему.
Обеспечение SLA: Для критически важных сервисов можно выделить гарантированный минимум ресурсов.
Тюнинг производительности: Можно приоритезировать ресурсы для одних процессов и ограничить для других.
▪️ Простой пример: Ограничиваем CPU для "прожорливого" процесса
Представьте, что у вас есть скрипт heavy_calc.sh, который грузит одно ядро на 100%.
Создаем cgroup (например, cpulimit):
Bash
Путь может немного отличаться в зависимости от версии Linux и наличия systemd.
Устанавливаем лимит CPU (например, 50% одного ядра):
Bash
cpu.cfs_period_us - общий период (100мс = 100000мкс)
cpu.cfs_quota_us - сколько микросекунд можно использовать за период. 50% = 50000мкс
Добавляем процесс в cgroup:
Сначала запустите ваш "прожорливый" процесс в фоновом режиме, получите его PID.
Bash
Теперь этот процесс не сможет использовать более 50% одного ядра, даже если сервер свободен.
🧠 Взгляд архитектора:
Понимание cgroups — это фундамент для работы с контейнерными технологиями и тонкой настройки производительности Linux-систем. Это тот уровень контроля, который позволяет строить по-настоящему стабильную и предсказуемую инфраструктуру, где ресурсы распределяются не случайным образом, а согласно вашим четким правилам.
#Linux #Cgroups #Containers #Performance #Systemd #DevOps
Вы когда-нибудь задумывались, как Docker или Kubernetes могут гарантировать, что один контейнер не "съест" все ресурсы сервера, оставив остальные голодать? Ответ — cgroups (Control Groups).
Что такое cgroups?
Это механизм ядра Linux, который позволяет организовывать процессы в иерархические группы и управлять их доступом к системным ресурсам:
CPU: Сколько процессорного времени может использовать группа.
Memory: Максимальный объем оперативной памяти.
Disk I/O: Приоритет и скорость чтения/записи на диск.
Network: Ограничения на сетевой трафик.
▪️ Почему это важно для админа?
Контейнеры (Docker, Podman, LXC): Они используют cgroups как основу для изоляции ресурсов. Когда вы задаете -m 512M для Docker-контейнера, это cgroups устанавливает лимит памяти.
Защита от "шумных соседей": Если у вас несколько сервисов на одном VDS/сервере, вы можете создать cgroup для каждого и гарантировать, что один прожорливый процесс не подвесит всю систему.
Обеспечение SLA: Для критически важных сервисов можно выделить гарантированный минимум ресурсов.
Тюнинг производительности: Можно приоритезировать ресурсы для одних процессов и ограничить для других.
▪️ Простой пример: Ограничиваем CPU для "прожорливого" процесса
Представьте, что у вас есть скрипт heavy_calc.sh, который грузит одно ядро на 100%.
Создаем cgroup (например, cpulimit):
Bash
sudo mkdir /sys/fs/cgroup/cpu/cpulimit
Путь может немного отличаться в зависимости от версии Linux и наличия systemd.
Устанавливаем лимит CPU (например, 50% одного ядра):
Bash
# Для systemd cgroups v2:
# cd /sys/fs/cgroup/user.slice/user-1000.slice/
# sudo echo "cpu.max 50000 100000" > cpu.max
# Или более универсально для cgroups v1:
sudo bash -c "echo 50000 > /sys/fs/cgroup/cpu/cpulimit/cpu.cfs_quota_us"
sudo bash -c "echo 100000 > /sys/fs/cgroup/cpu/cpulimit/cpu.cfs_period_us"
cpu.cfs_period_us - общий период (100мс = 100000мкс)
cpu.cfs_quota_us - сколько микросекунд можно использовать за период. 50% = 50000мкс
Добавляем процесс в cgroup:
Сначала запустите ваш "прожорливый" процесс в фоновом режиме, получите его PID.
Bash
./heavy_calc.sh &
PID=$! # Запоминаем PID
sudo bash -c "echo $PID > /sys/fs/cgroup/cpu/cpulimit/tasks"
Теперь этот процесс не сможет использовать более 50% одного ядра, даже если сервер свободен.
🧠 Взгляд архитектора:
Понимание cgroups — это фундамент для работы с контейнерными технологиями и тонкой настройки производительности Linux-систем. Это тот уровень контроля, который позволяет строить по-настоящему стабильную и предсказуемую инфраструктуру, где ресурсы распределяются не случайным образом, а согласно вашим четким правилам.
#Linux #Cgroups #Containers #Performance #Systemd #DevOps
🔥2
Невидимые символы: Чем нулевой байт опасен для системы (и почему с ним борются)
В мире текстовых файлов и строк мы привыкли видеть буквы, цифры и пробелы. Но есть один символ, который невидим, не печатается, но может вызывать огромные проблемы в программах и системах: нулевой байт (NULL character, \0).
▪️ В чем его магия (и опасность)?
В языках программирования C и C++ (на которых написано ядро Linux, множество утилит и системных библиотек) строки традиционно заканчиваются первым встреченным нулевым байтом. Это фундаментальное правило.
▪️ Что происходит, если кто-то подсунет его не туда?
Если программа ожидает строку, а в середине получает \0, она просто обрежет строку в этом месте. Это может привести к:
Обходу безопасности:
Представьте, что вы проверяете путь к файлу: /var/www/site/index.php.
Злоумышленник посылает: /var/www/site/index.php%00.jpg (где %00 — это нулевой байт).
Программа видит только /var/www/site/index.php (из-за нулевого байта), думает, что это безопасно, и выполняет файл как PHP-скрипт, хотя по расширению он выглядит как изображение.
Неожиданному поведению:
Система генерирует имя пользователя admin%00user.
В одной части системы оно распознается как admin, в другой — как admin%00user. Это может открыть лазейки для повышения привилегий.
Ошибкам и сбоям:
Некоторые функции могут просто «зависнуть», если получат неожиданный \0, поскольку ожидают конец строки в другом месте.
▪️ Где его ищут?
Современные языки программирования (Python, Go, Rust, Java) активно борются с проблемами нулевого байта, часто явно запрещая его в середине строк или обрабатывая иначе. Но системные утилиты и низкоуровневые API все еще могут быть уязвимы.
🧠 Для админа: Знание о нулевом байте помогает понимать, почему некоторые фильтры ввода так важны, и почему «непечатаемые символы» в именах файлов или полях форм могут быть не просто ошибкой, а попыткой атаки.
#Security #Linux #Programming #Exploit #SysAdmin #FunFact
В мире текстовых файлов и строк мы привыкли видеть буквы, цифры и пробелы. Но есть один символ, который невидим, не печатается, но может вызывать огромные проблемы в программах и системах: нулевой байт (NULL character, \0).
▪️ В чем его магия (и опасность)?
В языках программирования C и C++ (на которых написано ядро Linux, множество утилит и системных библиотек) строки традиционно заканчиваются первым встреченным нулевым байтом. Это фундаментальное правило.
▪️ Что происходит, если кто-то подсунет его не туда?
Если программа ожидает строку, а в середине получает \0, она просто обрежет строку в этом месте. Это может привести к:
Обходу безопасности:
Представьте, что вы проверяете путь к файлу: /var/www/site/index.php.
Злоумышленник посылает: /var/www/site/index.php%00.jpg (где %00 — это нулевой байт).
Программа видит только /var/www/site/index.php (из-за нулевого байта), думает, что это безопасно, и выполняет файл как PHP-скрипт, хотя по расширению он выглядит как изображение.
Неожиданному поведению:
Система генерирует имя пользователя admin%00user.
В одной части системы оно распознается как admin, в другой — как admin%00user. Это может открыть лазейки для повышения привилегий.
Ошибкам и сбоям:
Некоторые функции могут просто «зависнуть», если получат неожиданный \0, поскольку ожидают конец строки в другом месте.
▪️ Где его ищут?
Современные языки программирования (Python, Go, Rust, Java) активно борются с проблемами нулевого байта, часто явно запрещая его в середине строк или обрабатывая иначе. Но системные утилиты и низкоуровневые API все еще могут быть уязвимы.
🧠 Для админа: Знание о нулевом байте помогает понимать, почему некоторые фильтры ввода так важны, и почему «непечатаемые символы» в именах файлов или полях форм могут быть не просто ошибкой, а попыткой атаки.
#Security #Linux #Programming #Exploit #SysAdmin #FunFact
IPv6: Когда выключат IPv4, и почему это уже не страшно
Кажется, IPv6 — это та «технология будущего», которая всегда будет «будущим». Каждый админ знает, что IPv4-адреса давно закончились. Но мы все еще на них сидим. Почему? И когда уже переходить?
▪️ Почему так долго?
Причин несколько:
NAT: Network Address Translation спас IPv4, позволив десяткам (или сотням) устройств скрываться за одним публичным IP.
Инерция: Переход на новую версию протокола — это изменение фундаментальных принципов сети. Это дорого, сложно и требует перенастройки всего.
Незнание: Многие боятся IPv6 из-за кажущейся сложности его адресов и настроек.
▪️ Почему это уже не страшно (а даже круто!)
На самом деле, IPv6 уже активно работает на большинстве наших устройств.
Ваш телефон/компьютер: Если ваш провайдер поддерживает IPv6 (а большинство современных провайдеров уже поддерживают), ваши устройства уже получают IPv6-адреса и используют их для доступа к сайтам, которые тоже доступны по IPv6 (например, Google, Facebook, Netflix).
Облака: Все крупные облачные провайдеры полностью поддерживают IPv6. Создавать ресурсы только с IPv6-адресами — это уже реальность.
Простота (для админа):
Нет NAT: Каждое устройство в вашей сети получает свой уникальный публичный IPv6-адрес. Ура, больше никаких проблем с пробросом портов!
Автоконфигурация (SLAAC): Большинство устройств просто сами получают IPv6-адрес от роутера, без DHCP.
Огромное адресное пространство: Выдавайте по 65 тысяч адресов каждому сотруднику, и адреса не кончатся. Никогда.
▪️ Когда выключат IPv4?
Скорее всего, никогда. Или очень, очень нескоро. IPv4 будет существовать как «наследие» еще десятилетия. Но всё больше трафика будет уходить в IPv6.
🧠 Для админа: Изучать IPv6 сейчас — это не заглядывать в далекое будущее, это готовиться к неизбежному настоящему. Это упрощает многие сетевые задачи, повышает безопасность (нет скрытых NAT-правил) и открывает дорогу для новых сервисов. Начните с включения IPv6 на вашем роутере и домашнем сервере.
#IPv6 #Networking #FutureTech #SysAdmin #Internet #TechTrends
Кажется, IPv6 — это та «технология будущего», которая всегда будет «будущим». Каждый админ знает, что IPv4-адреса давно закончились. Но мы все еще на них сидим. Почему? И когда уже переходить?
▪️ Почему так долго?
Причин несколько:
NAT: Network Address Translation спас IPv4, позволив десяткам (или сотням) устройств скрываться за одним публичным IP.
Инерция: Переход на новую версию протокола — это изменение фундаментальных принципов сети. Это дорого, сложно и требует перенастройки всего.
Незнание: Многие боятся IPv6 из-за кажущейся сложности его адресов и настроек.
▪️ Почему это уже не страшно (а даже круто!)
На самом деле, IPv6 уже активно работает на большинстве наших устройств.
Ваш телефон/компьютер: Если ваш провайдер поддерживает IPv6 (а большинство современных провайдеров уже поддерживают), ваши устройства уже получают IPv6-адреса и используют их для доступа к сайтам, которые тоже доступны по IPv6 (например, Google, Facebook, Netflix).
Облака: Все крупные облачные провайдеры полностью поддерживают IPv6. Создавать ресурсы только с IPv6-адресами — это уже реальность.
Простота (для админа):
Нет NAT: Каждое устройство в вашей сети получает свой уникальный публичный IPv6-адрес. Ура, больше никаких проблем с пробросом портов!
Автоконфигурация (SLAAC): Большинство устройств просто сами получают IPv6-адрес от роутера, без DHCP.
Огромное адресное пространство: Выдавайте по 65 тысяч адресов каждому сотруднику, и адреса не кончатся. Никогда.
▪️ Когда выключат IPv4?
Скорее всего, никогда. Или очень, очень нескоро. IPv4 будет существовать как «наследие» еще десятилетия. Но всё больше трафика будет уходить в IPv6.
🧠 Для админа: Изучать IPv6 сейчас — это не заглядывать в далекое будущее, это готовиться к неизбежному настоящему. Это упрощает многие сетевые задачи, повышает безопасность (нет скрытых NAT-правил) и открывает дорогу для новых сервисов. Начните с включения IPv6 на вашем роутере и домашнем сервере.
#IPv6 #Networking #FutureTech #SysAdmin #Internet #TechTrends
Windows: Запуск скриптов с правами администратора
Каждый Windows-админ сталкивался с ситуацией: нужен скрипт, который должен работать с правами администратора. Настроить службы, поправить реестр или перезапустить системный процесс без UAC-подтверждения? Можно автоматизировать.
▪️ Проблема
По умолчанию Python-скрипты запускаются от имени обычного пользователя. Это ограничивает работу с системными настройками и требует «ручного» запуска через правый клик.
▪️ Решение — библиотека pyuac
Пример кода:
▪️ Как это помогает
Скрипт сам проверяет уровень прав. Если они недостаточные — перезапускает себя с UAC-запросом. Минимум действий от пользователя, максимум автоматизации.
🧠 Для админа: такой приём пригодится для сервисных скриптов и утилит, которые должны работать «бесшовно».
#Windows #Python #SysAdmin #Automation
Каждый Windows-админ сталкивался с ситуацией: нужен скрипт, который должен работать с правами администратора. Настроить службы, поправить реестр или перезапустить системный процесс без UAC-подтверждения? Можно автоматизировать.
▪️ Проблема
По умолчанию Python-скрипты запускаются от имени обычного пользователя. Это ограничивает работу с системными настройками и требует «ручного» запуска через правый клик.
▪️ Решение — библиотека pyuac
Пример кода:
from pyuac import isUserAdmin, runAsAdmin
def main():
print("Я запущен как админ!")
if __name__ == "__main__":
if not isUserAdmin():
runAsAdmin()
else:
main()
▪️ Как это помогает
Скрипт сам проверяет уровень прав. Если они недостаточные — перезапускает себя с UAC-запросом. Минимум действий от пользователя, максимум автоматизации.
🧠 Для админа: такой приём пригодится для сервисных скриптов и утилит, которые должны работать «бесшовно».
#Windows #Python #SysAdmin #Automation
Linux: История команд как инструмент скорости
Каждый Linux-админ знает: половина времени в консоли уходит на повторение команд. Но shell уже умеет экономить ваши минуты.
▪️ Базовые приёмы
!! — выполнить предыдущую команду.
!n — выполнить команду из истории по номеру.
history | grep <ключ> — поиск по истории.
▪️ Горячие клавиши
Ctrl+R — поиск по истории в реальном времени.
Ctrl+P и Ctrl+N — навигация по истории (вперёд/назад).
▪️ Зачем это нужно
Вместо того чтобы печатать длинные docker run ... или systemctl restart ..., достаточно пары клавиш.
🧠 Для админа: чем меньше вы печатаете руками, тем меньше вероятность ошибки. А скорость работы в консоли напрямую повышает вашу продуктивность.
#Linux #Bash #Zsh #SysAdmin #Productivity
Каждый Linux-админ знает: половина времени в консоли уходит на повторение команд. Но shell уже умеет экономить ваши минуты.
▪️ Базовые приёмы
!! — выполнить предыдущую команду.
!n — выполнить команду из истории по номеру.
history | grep <ключ> — поиск по истории.
▪️ Горячие клавиши
Ctrl+R — поиск по истории в реальном времени.
Ctrl+P и Ctrl+N — навигация по истории (вперёд/назад).
▪️ Зачем это нужно
Вместо того чтобы печатать длинные docker run ... или systemctl restart ..., достаточно пары клавиш.
🧠 Для админа: чем меньше вы печатаете руками, тем меньше вероятность ошибки. А скорость работы в консоли напрямую повышает вашу продуктивность.
#Linux #Bash #Zsh #SysAdmin #Productivity
macOS: macOS глазами Linux-админа
Многие админы воспринимают macOS как «чисто пользовательскую» систему. На деле это полноценный Unix, а значит — большинство навыков из Linux работают здесь «из коробки».
▪️ Архитектура
Под капотом macOS: Darwin + BSD + ядро XNU. Это тот же Unix-мир, только в графической обёртке.
▪️ Отличия от Linux
Домашние директории в /Users, а не в /home.
По умолчанию shell — zsh (но можно вернуть bash).
Управление системой через launchctl, diskutil, defaults.
▪️ Зачем это важно
Если вы админ и привыкли к Linux, то macOS не придётся «переучивать». Большинство привычных команд работают, а специфические утилиты быстро осваиваются.
🧠 Для админа: если вы поддерживаете команду с Mac-устройствами — изучите эти особенности. Они экономят часы на настройке и интеграции.
#macOS #Unix #LinuxAdmins #SysAdmin
Многие админы воспринимают macOS как «чисто пользовательскую» систему. На деле это полноценный Unix, а значит — большинство навыков из Linux работают здесь «из коробки».
▪️ Архитектура
Под капотом macOS: Darwin + BSD + ядро XNU. Это тот же Unix-мир, только в графической обёртке.
▪️ Отличия от Linux
Домашние директории в /Users, а не в /home.
По умолчанию shell — zsh (но можно вернуть bash).
Управление системой через launchctl, diskutil, defaults.
▪️ Зачем это важно
Если вы админ и привыкли к Linux, то macOS не придётся «переучивать». Большинство привычных команд работают, а специфические утилиты быстро осваиваются.
🧠 Для админа: если вы поддерживаете команду с Mac-устройствами — изучите эти особенности. Они экономят часы на настройке и интеграции.
#macOS #Unix #LinuxAdmins #SysAdmin
Windows: Хватит кликать! Управляем состоянием сервера с PowerShell DSC
Классический подход к настройке Windows Server — это чек-лист на 20 страниц и часы ручной работы в GUI. Архитектор так не делает. Он описывает желаемое состояние системы в коде.
PowerShell Desired State Configuration (DSC) — это фреймворк Infrastructure as Code (IaC) от Microsoft. Вы не пишете скрипт "как сделать", вы пишете декларативный конфиг "каким должен быть сервер".
Задача: Убедиться, что на всех веб-серверах установлена роль IIS и отключен Telnet-клиент.
1. Создаём конфигурацию (файл IIS_Config.ps1):
PowerShell
2. Применяем конфигурацию:
Сначала запускаем скрипт выше, он создаст .mof файл в новой папке. Затем выполняем команду:
PowerShell
Что произойдёт?
DSC проверит состояние IIS и Telnet.
Если IIS не установлен — он его установит.
Если Telnet-клиент установлен — он его удалит.
Если всё уже в порядке — ничего не произойдёт.
Почему это взгляд архитектора?
✅ Декларативность: Вы описываете ЧТО, а не КАК. Система сама приходит в нужное состояние.
✅ Идемпотентность: Конфигурацию можно применять сотни раз, результат всегда будет одинаков и предсказуем.
✅ Масштабирование и аудит: Один и тот же MOF-файл можно применить к тысяче машин. А команда Test-DscConfiguration мгновенно покажет, соответствует ли сервер заданной конфигурации (drift detection).
Это первый шаг к таким инструментам, как Ansible и Puppet, но прямо в вашей Windows-среде.
#windows #powershell #dsc #iac #automation #architect
Классический подход к настройке Windows Server — это чек-лист на 20 страниц и часы ручной работы в GUI. Архитектор так не делает. Он описывает желаемое состояние системы в коде.
PowerShell Desired State Configuration (DSC) — это фреймворк Infrastructure as Code (IaC) от Microsoft. Вы не пишете скрипт "как сделать", вы пишете декларативный конфиг "каким должен быть сервер".
Задача: Убедиться, что на всех веб-серверах установлена роль IIS и отключен Telnet-клиент.
1. Создаём конфигурацию (файл IIS_Config.ps1):
PowerShell
# Конфигурация описывает желаемое состояние узла (сервера)
Configuration WebServerState {
# Импортируем необходимые ресурсы DSC
Import-DscResource -ModuleName 'PSDesiredStateConfiguration'
# Применяем конфигурацию к любому узлу с именем 'localhost'
# (в реальной среде здесь будут имена серверов)
Node "localhost" {
# Ресурс WindowsFeature обеспечивает наличие роли или компонента
WindowsFeature "IIS" {
Ensure = "Present" # Убедиться, что он УСТАНОВЛЕН
Name = "Web-Server" # Техническое имя роли IIS
}
WindowsFeature "TelnetClient" {
Ensure = "Absent" # Убедиться, что он ОТСУТСТВУЕТ
Name = "Telnet-Client"
}
}
}
# Вызываем конфигурацию, чтобы сгенерировать MOF-файл
WebServerState
2. Применяем конфигурацию:
Сначала запускаем скрипт выше, он создаст .mof файл в новой папке. Затем выполняем команду:
PowerShell
Start-DscConfiguration -Path ./WebServerState -Wait -Verbose
Что произойдёт?
DSC проверит состояние IIS и Telnet.
Если IIS не установлен — он его установит.
Если Telnet-клиент установлен — он его удалит.
Если всё уже в порядке — ничего не произойдёт.
Почему это взгляд архитектора?
✅ Декларативность: Вы описываете ЧТО, а не КАК. Система сама приходит в нужное состояние.
✅ Идемпотентность: Конфигурацию можно применять сотни раз, результат всегда будет одинаков и предсказуем.
✅ Масштабирование и аудит: Один и тот же MOF-файл можно применить к тысяче машин. А команда Test-DscConfiguration мгновенно покажет, соответствует ли сервер заданной конфигурации (drift detection).
Это первый шаг к таким инструментам, как Ansible и Puppet, но прямо в вашей Windows-среде.
#windows #powershell #dsc #iac #automation #architect
macOS: Профессиональные диалоги в скриптах с swiftDialog
Когда вы автоматизируете настройку Mac для нового сотрудника с помощью MDM и скриптов, как сообщить ему о процессе? Чёрное окно терминала пугает. Простое уведомление — неинформативно.
swiftDialog — это утилита, которая позволяет выводить красивые, настраиваемые диалоговые окна из любого скрипта (bash, Python). Это поднимает вашу автоматизацию на новый уровень.
Пример: Показываем пользователю этапы настройки его нового Mac.
Установка (в скрипте через brew):
Bash
Скрипт для отображения прогресса:
Bash
Что это даёт?
User Experience: Пользователь видит понятный интерфейс, а не пугающие строки кода.
Информативность: В окно можно выводить статус, иконки, этапы выполнения.
Профессионализм: Это показывает высокий уровень зрелоosti IT-процессов в компании.
Админ пишет скрипт. Архитектор думает о том, как этот скрипт взаимодействует с конечным пользователем.
#macos #bash #automation #ux #скрипты
Когда вы автоматизируете настройку Mac для нового сотрудника с помощью MDM и скриптов, как сообщить ему о процессе? Чёрное окно терминала пугает. Простое уведомление — неинформативно.
swiftDialog — это утилита, которая позволяет выводить красивые, настраиваемые диалоговые окна из любого скрипта (bash, Python). Это поднимает вашу автоматизацию на новый уровень.
Пример: Показываем пользователю этапы настройки его нового Mac.
Установка (в скрипте через brew):
Bash
# Проверяем, установлен ли swiftDialog, и если нет - ставим
if ! command -v dialog &> /dev/null; then
echo "swiftDialog не найден. Устанавливаем..."
/usr/local/bin/brew install swiftDialog
fi
Скрипт для отображения прогресса:
Bash
#!/bin/bash
DIALOG_CMD="/usr/local/bin/dialog"
LOG_FILE="/var/tmp/setup.log"
# Настройки окна
TITLE="Настройка вашего нового Mac"
MESSAGE="Пожалуйста, подождите, мы готовим ваш компьютер к работе. Это может занять 15-20 минут."
ICON="https://corp.example.com/logo.png" # Иконка вашей компании
# Запускаем диалог в фоновом режиме
$DIALOG_CMD --title "$TITLE" --message "$MESSAGE" --icon "$ICON" --progress 5 --commandfile "$LOG_FILE" &
# --- Эмуляция длительных операций ---
echo "progress: 1" > "$LOG_FILE"
echo "listitem: Установка Rosetta 2..." > "$LOG_FILE"
# softwareupdate --install-rosetta --agree-to-license
sleep 5
echo "progress: 2" > "$LOG_FILE"
echo "listitem: Установка Homebrew..." > "$LOG_FILE"
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
sleep 5
echo "progress: 3" > "$LOG_FILE"
echo "listitem: Установка корпоративного ПО (Slack, Zoom)..." > "$LOG_FILE"
# brew install slack zoom
sleep 5
echo "progress: 4" > "$LOG_FILE"
echo "listitem: Настройка параметров безопасности..." > "$LOG_FILE"
# scutil --set HostName "new-mac"
sleep 5
echo "progress: 5" > "$LOG_FILE"
echo "listitem: Завершение настройки. Готово!" > "$LOG_FILE"
sleep 3
# Закрываем диалоговое окно
echo "quit:" > "$LOG_FILE"
exit 0
Что это даёт?
User Experience: Пользователь видит понятный интерфейс, а не пугающие строки кода.
Информативность: В окно можно выводить статус, иконки, этапы выполнения.
Профессионализм: Это показывает высокий уровень зрелоosti IT-процессов в компании.
Админ пишет скрипт. Архитектор думает о том, как этот скрипт взаимодействует с конечным пользователем.
#macos #bash #automation #ux #скрипты
Гайд: Собери свой Home Lab. От админа к архитектору через практику
Теория — это хорошо, но настоящий рост происходит, когда ломаешь и чинишь. Домашняя лаборатория — это ваша персональная песочница для экспериментов, без риска уронить прод.
Зачем она нужна?
Чтобы набить руку с технологиями, которые вы не можете трогать на работе: Kubernetes, Ansible, Terraform, Proxmox, Active Directory с нуля. Это ваш путь к архитектурному мышлению.
Минимальный набор (на старом ПК или NUC):
Гипервизор: Proxmox VE. Бесплатный, мощный, с веб-интерфейсом. Позволяет создавать и VM, и LXC-контейнеры. Альтернатива: VMware ESXi Free.
Сеть: Настройте виртуальный свитч. Для старта хватит NAT, но цель — разобраться с VLAN и маршрутизацией (pfSense/OPNsense в отдельной VM).
Хранилище: ZFS (если позволяет Proxmox) или просто директория на диске.
Что развернуть в первую очередь (Ваш архитектурный проект):
Контроллер домена: Поднимите AD на Windows Server или Samba/FreeIPA на Linux. Научитесь работать с GPO, пользователями, DNS.
Reverse Proxy: Поставьте Nginx Proxy Manager (в Docker). Публикуйте свои внутренние сервисы наружу через один IP. Разберитесь с SSL-сертификатами от Let's Encrypt.
Мониторинг: Разверните связку Grafana + Prometheus. Настройте сбор метрик с ваших VM. Поймите, что такое node_exporter и дашборды.
IaC-сервер: VM с Ansible. Напишите плейбуки для автоматической настройки других машин в вашей лабе.
Главное правило лабы: она должна работать. Сделайте её полезной — поднимите там свой VPN (WireGuard), медиасервер (Jellyfin) или блокировщик рекламы (Pi-hole). Так у вас будет мотивация её поддерживать и развивать.
#homelab #proxmox #devops #architect #education #гайд
Теория — это хорошо, но настоящий рост происходит, когда ломаешь и чинишь. Домашняя лаборатория — это ваша персональная песочница для экспериментов, без риска уронить прод.
Зачем она нужна?
Чтобы набить руку с технологиями, которые вы не можете трогать на работе: Kubernetes, Ansible, Terraform, Proxmox, Active Directory с нуля. Это ваш путь к архитектурному мышлению.
Минимальный набор (на старом ПК или NUC):
Гипервизор: Proxmox VE. Бесплатный, мощный, с веб-интерфейсом. Позволяет создавать и VM, и LXC-контейнеры. Альтернатива: VMware ESXi Free.
Сеть: Настройте виртуальный свитч. Для старта хватит NAT, но цель — разобраться с VLAN и маршрутизацией (pfSense/OPNsense в отдельной VM).
Хранилище: ZFS (если позволяет Proxmox) или просто директория на диске.
Что развернуть в первую очередь (Ваш архитектурный проект):
Контроллер домена: Поднимите AD на Windows Server или Samba/FreeIPA на Linux. Научитесь работать с GPO, пользователями, DNS.
Reverse Proxy: Поставьте Nginx Proxy Manager (в Docker). Публикуйте свои внутренние сервисы наружу через один IP. Разберитесь с SSL-сертификатами от Let's Encrypt.
Мониторинг: Разверните связку Grafana + Prometheus. Настройте сбор метрик с ваших VM. Поймите, что такое node_exporter и дашборды.
IaC-сервер: VM с Ansible. Напишите плейбуки для автоматической настройки других машин в вашей лабе.
Главное правило лабы: она должна работать. Сделайте её полезной — поднимите там свой VPN (WireGuard), медиасервер (Jellyfin) или блокировщик рекламы (Pi-hole). Так у вас будет мотивация её поддерживать и развивать.
#homelab #proxmox #devops #architect #education #гайд
❤3👍2
Git & Security: Перестань хранить пароли в plaintext. Знакомство с SOPS
Каждый админ хоть раз писал в скрипте PASSWORD="MySecretPassword123". Это прямая дорога к утечке данных, особенно если скрипт попадёт в Git. Архитектурный подход — хранить конфигурацию и код в Git, а секреты — шифровать.
SOPS (Secrets OPerationS) от Mozilla — элегантное решение этой проблемы. Он не шифрует весь файл, а только значения в нём, оставляя ключи в открытом виде. Это идеально для YAML, JSON, .env и .ini файлов.
Как это работает:
Вы создаёте обычный конфиг, а SOPS шифрует его с помощью PGP, age или облачных KMS (AWS, Azure, GCP). Зашифрованный файл можно смело коммитить в Git.
Практический пример с age (простой и современный инструмент шифрования):
Установка инструментов:
Bash
Генерация ключа:
Bash
Публичный ключ мы будем использовать для шифрования, приватный — для расшифровки.
Создаём файл с секретами config.yaml:
YAML
Шифруем и редактируем:
Создаём в корне проекта файл .sops.yaml с правилами шифрования:
YAML
Теперь команда sops config.yaml откроет файл в вашем $EDITOR, а при сохранении автоматически зашифрует значения.
Результат в config.yaml:
YAML
Файл можно безопасно коммитить в Git.
Как использовать в скрипте?
Bash
Взгляд архитектора:
Это основа GitOps. Конфигурация, включая зашифрованные секреты, является «единственным источником правды». Изменения отслеживаются, а доступ к расшифровке имеют только те, у кого есть приватный ключ (люди или CI/CD системы).
#linux #security #gitops #devops #sops #architect
Каждый админ хоть раз писал в скрипте PASSWORD="MySecretPassword123". Это прямая дорога к утечке данных, особенно если скрипт попадёт в Git. Архитектурный подход — хранить конфигурацию и код в Git, а секреты — шифровать.
SOPS (Secrets OPerationS) от Mozilla — элегантное решение этой проблемы. Он не шифрует весь файл, а только значения в нём, оставляя ключи в открытом виде. Это идеально для YAML, JSON, .env и .ini файлов.
Как это работает:
Вы создаёте обычный конфиг, а SOPS шифрует его с помощью PGP, age или облачных KMS (AWS, Azure, GCP). Зашифрованный файл можно смело коммитить в Git.
Практический пример с age (простой и современный инструмент шифрования):
Установка инструментов:
Bash
# macOS или Linux с Homebrew
brew install sops age
Генерация ключа:
Bash
age-keygen -o key.txt
# public key: age1...
# private key: AGE-SECRET-KEY-1...
Публичный ключ мы будем использовать для шифрования, приватный — для расшифровки.
Создаём файл с секретами config.yaml:
YAML
db_user: "postgres"
db_password: "SuperSecretPassword" # ЭТО БУДЕМ ШИФРОВАТЬ
Шифруем и редактируем:
Создаём в корне проекта файл .sops.yaml с правилами шифрования:
YAML
creation_rules:
- path_regex: .*.yaml$
age: age1... # Ваш публичный ключ
Теперь команда sops config.yaml откроет файл в вашем $EDITOR, а при сохранении автоматически зашифрует значения.
Результат в config.yaml:
YAML
db_user: "postgres"
db_password: "ENC[AES256_GCM,data:...,iv:...,tag:...]"
sops:
# ... метаданные sops
Файл можно безопасно коммитить в Git.
Как использовать в скрипте?
Bash
# Расшифровываем "на лету" и передаём в переменную
DB_CONFIG=$(sops -d config.yaml)
DB_PASSWORD=$(echo "$DB_CONFIG" | yq .db_password) # yq - парсер для yaml
Взгляд архитектора:
Это основа GitOps. Конфигурация, включая зашифрованные секреты, является «единственным источником правды». Изменения отслеживаются, а доступ к расшифровке имеют только те, у кого есть приватный ключ (люди или CI/CD системы).
#linux #security #gitops #devops #sops #architect
👍2
Windows: Настрой рабочее место за 10 минут с помощью Winget
Установка софта на новый Windows-компьютер — это боль: найти сайты, скачать десяток .exe и .msi, прокликать инсталляторы. Современный админ автоматизирует это, управляя софтом как пакетами в Linux.
Winget — это официальный менеджер пакетов от Microsoft, встроенный в современные Windows 10/11.
Базовые команды (откройте PowerShell или Terminal):
Найти приложение: winget search PowerToys
Установить приложение: winget install Microsoft.PowerToys (можно использовать ID из поиска)
Обновить всё: winget upgrade --all (команда, меняющая жизнь)
Создать список установленного ПО: winget export -o C:\temp\my_apps.json
Установить всё из списка: winget import -i C:\temp\my_apps.json (ключевая команда для клонирования окружения!)
Готовый скрипт для быстрой настройки:
Сохраните как setup_workstation.ps1 и запустите.
PowerShell
Взгляд архитектора:
Эта методология обеспечивает идентичность и воспроизводимость окружений. Новый сотрудник получает настроенный ПК за минуты, а не за полдня. Конфигурационные файлы (my_apps.json или скрипты) можно хранить в репозитории, версионировать и применять централизованно.
#windows #winget #automation #powershell #чеклисты
Установка софта на новый Windows-компьютер — это боль: найти сайты, скачать десяток .exe и .msi, прокликать инсталляторы. Современный админ автоматизирует это, управляя софтом как пакетами в Linux.
Winget — это официальный менеджер пакетов от Microsoft, встроенный в современные Windows 10/11.
Базовые команды (откройте PowerShell или Terminal):
Найти приложение: winget search PowerToys
Установить приложение: winget install Microsoft.PowerToys (можно использовать ID из поиска)
Обновить всё: winget upgrade --all (команда, меняющая жизнь)
Создать список установленного ПО: winget export -o C:\temp\my_apps.json
Установить всё из списка: winget import -i C:\temp\my_apps.json (ключевая команда для клонирования окружения!)
Готовый скрипт для быстрой настройки:
Сохраните как setup_workstation.ps1 и запустите.
PowerShell
# Список обязательного ПО (используйте ID из `winget search`)
$packages = @(
"Microsoft.PowerToys",
"Microsoft.VisualStudioCode",
"7zip.7zip",
"VideoLAN.VLC",
"Google.Chrome",
"Notepad++.Notepad++",
"Docker.DockerDesktop",
"Git.Git"
)
Write-Host "--- Начинаю установку обязательного ПО ---" -ForegroundColor Green
foreach ($pkg in $packages) {
Write-Host "Устанавливаю: $pkg"
# -e требует точного совпадения ID, --accept-source-agreements принимает соглашения
winget install -e --id $pkg --silent --accept-source-agreements
}
Write-Host "--- Обновляю оставшиеся пакеты ---" -ForegroundColor Green
winget upgrade --all --silent --accept-source-agreements
Write-Host "--- Настройка завершена! ---" -ForegroundColor Cyan
Взгляд архитектора:
Эта методология обеспечивает идентичность и воспроизводимость окружений. Новый сотрудник получает настроенный ПК за минуты, а не за полдня. Конфигурационные файлы (my_apps.json или скрипты) можно хранить в репозитории, версионировать и применять централизованно.
#windows #winget #automation #powershell #чеклисты
👍2
VPN: Почему WireGuard — это будущее, а OpenVPN — классика?
Выбор VPN-решения — важное архитектурное решение, влияющее на безопасность, производительность и простоту поддержки. Давайте сравним два титана.
OpenVPN: Проверенный временем танк
На рынке с 2001 года, де-факто стандарт в корпоративном мире.
✅ Плюсы:
Надёжность: Проверен десятилетиями.
Гибкость: Огромное количество настроек, может работать через TCP-порт 443, маскируясь под HTTPS-трафик, чтобы обходить файрволы.
Поддержка: Поддерживается практически любым железом и ПО.
❌ Минусы:
Сложность: Сотни опций в конфиге. Настроить его правильно — нетривиальная задача.
Кодовая база: ~400,000 строк кода. Это усложняет аудит безопасности.
Производительность: Заметный оверхед, что сказывается на скорости.
WireGuard: Современный истребитель
Относительно новый протокол, который быстро стал стандартом благодаря своей простоте и скорости. С 2020 года включён в ядро Linux.
✅ Плюсы:
Простота: Конфигурация в разы проще. Вся логика построена на обмене публичными ключами.
Производительность: Очень быстрый, с минимальными задержками, почти не влияет на скорость соединения.
Безопасность: Минималистичная кодовая база (~4,000 строк), что делает аудит простым и эффективным. Использует только современные и надёжные криптографические примитивы.
❌ Минусы:
Только UDP: Не будет работать в сетях, где разрешён только TCP-трафик.
Меньше «обвязок»: Корпоративные решения (как панели управления пользователями) всё ещё догоняют.
Вердикт архитектора:
Используйте OpenVPN, если вам нужна максимальная совместимость со старым оборудованием или критична работа в очень ограниченных сетях (например, отельный Wi-Fi, который режет всё кроме HTTPS).
Для всех остальных задач WireGuard — очевидный выбор. Это будущее VPN для связи «точка-точка», подключения удалённых сотрудников и соединения облачных сетей. Простота, скорость и безопасность — ключевые архитектурные преимущества.
А что вы используете в своих проектах и почему? Делитесь в комментариях!
#security #networking #linux #wireguard #vpn #architect #сравнение
Выбор VPN-решения — важное архитектурное решение, влияющее на безопасность, производительность и простоту поддержки. Давайте сравним два титана.
OpenVPN: Проверенный временем танк
На рынке с 2001 года, де-факто стандарт в корпоративном мире.
✅ Плюсы:
Надёжность: Проверен десятилетиями.
Гибкость: Огромное количество настроек, может работать через TCP-порт 443, маскируясь под HTTPS-трафик, чтобы обходить файрволы.
Поддержка: Поддерживается практически любым железом и ПО.
❌ Минусы:
Сложность: Сотни опций в конфиге. Настроить его правильно — нетривиальная задача.
Кодовая база: ~400,000 строк кода. Это усложняет аудит безопасности.
Производительность: Заметный оверхед, что сказывается на скорости.
WireGuard: Современный истребитель
Относительно новый протокол, который быстро стал стандартом благодаря своей простоте и скорости. С 2020 года включён в ядро Linux.
✅ Плюсы:
Простота: Конфигурация в разы проще. Вся логика построена на обмене публичными ключами.
Производительность: Очень быстрый, с минимальными задержками, почти не влияет на скорость соединения.
Безопасность: Минималистичная кодовая база (~4,000 строк), что делает аудит простым и эффективным. Использует только современные и надёжные криптографические примитивы.
❌ Минусы:
Только UDP: Не будет работать в сетях, где разрешён только TCP-трафик.
Меньше «обвязок»: Корпоративные решения (как панели управления пользователями) всё ещё догоняют.
Вердикт архитектора:
Используйте OpenVPN, если вам нужна максимальная совместимость со старым оборудованием или критична работа в очень ограниченных сетях (например, отельный Wi-Fi, который режет всё кроме HTTPS).
Для всех остальных задач WireGuard — очевидный выбор. Это будущее VPN для связи «точка-точка», подключения удалённых сотрудников и соединения облачных сетей. Простота, скорость и безопасность — ключевые архитектурные преимущества.
А что вы используете в своих проектах и почему? Делитесь в комментариях!
#security #networking #linux #wireguard #vpn #architect #сравнение
Windows: Глубокая диагностика без скриптов с msinfo32
В арсенале каждого Windows-администратора есть PowerShell, но иногда нужно получить полный срез системы за 5 секунд, не написав ни строчки кода. Для этого существует msinfo32 (Сведения о системе) — встроенный инструмент, который многие недооценивают.
Это не просто список железа. Это ваш цифровой паспорт системы для быстрой диагностики.
На что смотрит профессионал:
Ресурсы оборудования → Конфликты и совместное использование: Первое место для поиска проблем с драйверами. Если два устройства делят одни и те же ресурсы (IRQ, порты ввода-вывода), здесь вы это увидите.
Компоненты → Устройства с неполадками: Показывает все устройства, которые система не смогла корректно запустить. Экономит время на поиске в Диспетчере устройств.
Программная среда → Отчеты об ошибках: Быстрый доступ к истории сбоев приложений и системы. Помогает понять, какая программа вызывает проблемы, не копаясь в журналах событий.
Взгляд архитектора: используем msinfo32 на 100%
Просто запустить утилиту — это уровень админа. Архитектор использует её для удалённой диагностики и автоматизации.
Удалённое подключение
Не нужно подключаться по RDP, чтобы проанализировать проблемный сервер.
В окне msinfo32 выберите Вид → Удалённый компьютер и введите имя или IP-адрес машины.
Требование: На удалённой машине в брандмауэре должна быть разрешена входящая группа правил «Инструментарий управления Windows (WMI)».
Автоматизация и создание отчётов
msinfo32 отлично работает из командной строки. Это позволяет интегрировать его в скрипты для инвентаризации или аудита.
PowerShell
Кейс: Настройте в Планировщике заданий еженедельное создание отчётов с ключевых серверов. При возникновении сбоя у вас всегда будет «снимок» здоровой конфигурации для сравнения.
В мире сложных систем мониторинга, msinfo32 остаётся незаменимым инструментом первого эшелона для быстрой и точной диагностики.
#windows #msinfo32 #diagnostics #команды #admin #audit
В арсенале каждого Windows-администратора есть PowerShell, но иногда нужно получить полный срез системы за 5 секунд, не написав ни строчки кода. Для этого существует msinfo32 (Сведения о системе) — встроенный инструмент, который многие недооценивают.
Это не просто список железа. Это ваш цифровой паспорт системы для быстрой диагностики.
На что смотрит профессионал:
Ресурсы оборудования → Конфликты и совместное использование: Первое место для поиска проблем с драйверами. Если два устройства делят одни и те же ресурсы (IRQ, порты ввода-вывода), здесь вы это увидите.
Компоненты → Устройства с неполадками: Показывает все устройства, которые система не смогла корректно запустить. Экономит время на поиске в Диспетчере устройств.
Программная среда → Отчеты об ошибках: Быстрый доступ к истории сбоев приложений и системы. Помогает понять, какая программа вызывает проблемы, не копаясь в журналах событий.
Взгляд архитектора: используем msinfo32 на 100%
Просто запустить утилиту — это уровень админа. Архитектор использует её для удалённой диагностики и автоматизации.
Удалённое подключение
Не нужно подключаться по RDP, чтобы проанализировать проблемный сервер.
В окне msinfo32 выберите Вид → Удалённый компьютер и введите имя или IP-адрес машины.
Требование: На удалённой машине в брандмауэре должна быть разрешена входящая группа правил «Инструментарий управления Windows (WMI)».
Автоматизация и создание отчётов
msinfo32 отлично работает из командной строки. Это позволяет интегрировать его в скрипты для инвентаризации или аудита.
PowerShell
# Сохранить полный отчёт о локальной машине в .nfo формате
msinfo32 /nfo C:\Reports\local_system_info.nfo
# Создать текстовый отчёт с удалённого сервера
msinfo32 /report C:\Reports\remote_server.txt /computer WEBSRV01
Кейс: Настройте в Планировщике заданий еженедельное создание отчётов с ключевых серверов. При возникновении сбоя у вас всегда будет «снимок» здоровой конфигурации для сравнения.
В мире сложных систем мониторинга, msinfo32 остаётся незаменимым инструментом первого эшелона для быстрой и точной диагностики.
#windows #msinfo32 #diagnostics #команды #admin #audit
✍2
Linux: Забудь про ifconfig. Настраиваем сеть декларативно с Netplan
В современных Ubuntu и других дистрибутивах редактирование файла /etc/network/interfaces — это устаревший подход. На смену ему пришёл Netplan — декларативный инструмент для настройки сети через простой YAML-синтаксис.
Вы больше не пишете команды "как настроить". Вы описываете "какой должна быть сеть".
Задача: Настроить на сервере статический IP-адрес.
1. Находим файл конфигурации:
Все конфиги лежат в /etc/netplan/. Обычно это файл вроде 01-netcfg.yaml или 50-cloud-init.yaml.
Bash
2. Редактируем конфигурацию:
Открываем найденный файл и приводим его к следующему виду. Внимание: YAML чувствителен к отступам! Используйте два пробела.
YAML
3. Применяем конфигурацию:
Две команды для проверки и применения.
Bash
Почему это взгляд архитектора?
✅ Декларативность: Конфиг описывает конечное состояние. Его легко читать, версионировать в Git и использовать в системах автоматизации (Ansible, Terraform).
✅ Атомарность: Команда netplan apply применяет изменения атомарно. Если в конфиге ошибка, он не сломает вам сеть посреди процесса.
✅ Универсальность: Netplan — это "фронтенд", который может управлять разными "бекендами" (systemd-networkd или NetworkManager), скрывая от вас сложность их настройки.
#linux #networking #netplan #ubuntu #architect #команды
В современных Ubuntu и других дистрибутивах редактирование файла /etc/network/interfaces — это устаревший подход. На смену ему пришёл Netplan — декларативный инструмент для настройки сети через простой YAML-синтаксис.
Вы больше не пишете команды "как настроить". Вы описываете "какой должна быть сеть".
Задача: Настроить на сервере статический IP-адрес.
1. Находим файл конфигурации:
Все конфиги лежат в /etc/netplan/. Обычно это файл вроде 01-netcfg.yaml или 50-cloud-init.yaml.
Bash
ls /etc/netplan/
2. Редактируем конфигурацию:
Открываем найденный файл и приводим его к следующему виду. Внимание: YAML чувствителен к отступам! Используйте два пробела.
YAML
network:
version: 2
renderer: networkd # Используем systemd-networkd, стандарт для серверов
ethernets:
ens18: # Имя вашего интерфейса (узнать: ip a)
dhcp4: no # Отключаем DHCP
addresses:
- 192.168.1.100/24 # Статический IP и маска
gateway4: 192.168.1.1 # Шлюз
nameservers:
addresses: [8.8.8.8, 1.1.1.1] # DNS-серверы
3. Применяем конфигурацию:
Две команды для проверки и применения.
Bash
# Проверяем синтаксис файла
sudo netplan generate
# Применяем изменения
sudo netplan apply
Почему это взгляд архитектора?
✅ Декларативность: Конфиг описывает конечное состояние. Его легко читать, версионировать в Git и использовать в системах автоматизации (Ansible, Terraform).
✅ Атомарность: Команда netplan apply применяет изменения атомарно. Если в конфиге ошибка, он не сломает вам сеть посреди процесса.
✅ Универсальность: Netplan — это "фронтенд", который может управлять разными "бекендами" (systemd-networkd или NetworkManager), скрывая от вас сложность их настройки.
#linux #networking #netplan #ubuntu #architect #команды
Windows & Security: Внедряем LAPS. Прощайте, одинаковые пароли локальных админов!
Использование одного и того же пароля для локального администратора на всех машинах — это огромная дыра в безопасности. Если злоумышленник его получает, он получает всю сеть (атака Pass-the-Hash).
LAPS (Local Administrator Password Solution) — это бесплатный инструмент от Microsoft, который решает эту проблему элегантно.
Как это работает:
Устанавливается агент на клиентские машины.
Агент генерирует уникальный, сложный пароль для встроенной учетной записи "Администратор".
Пароль сохраняется в атрибуте объекта-компьютера в Active Directory.
Пароль автоматически меняется по заданному расписанию (например, каждые 30 дней).
План внедрения (взгляд архитектора):
Расширение схемы AD:
На контроллере домена выполните из PowerShell: Update-AdmPwdADSchema. Это добавит два новых атрибута для хранения пароля и даты его смены.
Настройка прав доступа:
Выдайте права на чтение пароля только определённым группам (например, "Администраторы домена" или "Help Desk").
PowerShell
Развёртывание через GPO:
Создайте новую групповую политику.
В разделе Конфигурация компьютера → Политики → Административные шаблоны → LAPS включите политику "Enable local admin password management".
Через GPO также разверните MSI-пакет с агентом LAPS на все нужные компьютеры.
Получение пароля:
Используйте утилиту LAPS UI, которая идёт в комплекте, или PowerShell:
PowerShell
Результат: Вы централизованно управляете паролями, которые уникальны для каждой машины. Это не просто "удобство", это фундаментальное усиление безопасности вашей инфраструктуры.
#windows #security #laps #activedirectory #gpo #architect #гайд
Использование одного и того же пароля для локального администратора на всех машинах — это огромная дыра в безопасности. Если злоумышленник его получает, он получает всю сеть (атака Pass-the-Hash).
LAPS (Local Administrator Password Solution) — это бесплатный инструмент от Microsoft, который решает эту проблему элегантно.
Как это работает:
Устанавливается агент на клиентские машины.
Агент генерирует уникальный, сложный пароль для встроенной учетной записи "Администратор".
Пароль сохраняется в атрибуте объекта-компьютера в Active Directory.
Пароль автоматически меняется по заданному расписанию (например, каждые 30 дней).
План внедрения (взгляд архитектора):
Расширение схемы AD:
На контроллере домена выполните из PowerShell: Update-AdmPwdADSchema. Это добавит два новых атрибута для хранения пароля и даты его смены.
Настройка прав доступа:
Выдайте права на чтение пароля только определённым группам (например, "Администраторы домена" или "Help Desk").
PowerShell
# Даём группе 'HelpDesk' право читать пароли на OU 'Workstations'
Set-AdmPwdReadPasswordPermission -OrgUnit "Workstations" -AllowedPrincipals "HelpDesk"
Развёртывание через GPO:
Создайте новую групповую политику.
В разделе Конфигурация компьютера → Политики → Административные шаблоны → LAPS включите политику "Enable local admin password management".
Через GPO также разверните MSI-пакет с агентом LAPS на все нужные компьютеры.
Получение пароля:
Используйте утилиту LAPS UI, которая идёт в комплекте, или PowerShell:
PowerShell
Get-ADComputer -Identity "PC001" -Properties "ms-Mcs-AdmPwd" | Select-Object "ms-Mcs-AdmPwd"
Результат: Вы централизованно управляете паролями, которые уникальны для каждой машины. Это не просто "удобство", это фундаментальное усиление безопасности вашей инфраструктуры.
#windows #security #laps #activedirectory #gpo #architect #гайд
AI-промпт: Генерация Regex за 30 секунд
Регулярные выражения (Regex) — мощнейший инструмент для парсинга логов, валидации данных и поиска. Но писать их вручную — это боль. Давайте делегируем это AI.
Задача: Нам нужен Regex для проверки пароля. Требования: минимум 8 символов, одна заглавная буква, одна строчная буква, одна цифра и один спецсимвол.
Плохой промпт: сделай regex для пароля
Результат будет неточным и без объяснений.
Хороший промпт (для ChatGPT/Gemini/Copilot):
Почему это работает?
Роль: эксперт по регулярным выражениям задаёт контекст.
Чёткие правила: Вы даёте машине исчерпывающие требования.
Формат вывода: Вы заставляете AI структурировать ответ, что делает его полезным и понятным.
Экономьте своё время на рутине. Архитектор ценит свой мыслительный ресурс и автоматизирует всё, что можно автоматизировать.
#ai4admin #regex #powershell #bash #automation #промпты
Регулярные выражения (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
Level=2 — это ошибки (Errors).
Найти все неудачные попытки входа (RDP/локальные) за последние 24 часа:
Это самый мощный способ — фильтрация через хеш-таблицу.
PowerShell
Проверить тот же лог на удалённом сервере:
Просто добавьте параметр -ComputerName.
PowerShell
Интерактивный поиск:
Для быстрой визуальной фильтрации отправьте результат в Out-GridView.
PowerShell
Откроется интерактивное окно, где можно сортировать и фильтровать события по любому полю.
Взгляд архитектора:
Умение быстро работать с логами из командной строки — это основа для создания систем автоматического реагирования. Скрипты на основе Get-WinEvent могут отправлять алерты в Telegram/Slack при появлении критических событий, собирать статистику для отчётов по безопасности и проводить аудит действий пользователей по всей инфраструктуре.
#windows #powershell #security #logging #audit #команды
Журнал событий (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
Основная конфигурация:
Откройте файл /etc/apt/apt.conf.d/50unattended-upgrades. Найдите и раскомментируйте (уберите //) строку, отвечающую за security-апдейты:
Это разрешает установку обновлений только из репозитория безопасности.
В этом же файле можно настроить отправку отчётов на email или автоматическую перезагрузку, если она требуется.
Включение автоматического запуска:
Откройте файл /etc/apt/apt.conf.d/20auto-upgrades и убедитесь, что его содержимое выглядит так:
Первая строка включает ежедневное выполнение apt update. Вторая — ежедневный запуск unattended-upgrade.
Проверка и отладка:
Вы можете запустить процесс в "сухом" режиме, чтобы посмотреть, что именно будет обновлено:
Bash
Все логи работы хранятся в /var/log/unattended-upgrades/.
Взгляд архитектора:
Это не просто скрипт в кроне. Это компонент зрелой стратегии управления уязвимостями. Он обеспечивает постоянный базовый уровень безопасности для всего парка машин, освобождая время инженера для более сложных задач. Риск "сломать всё" минимален, так как обновления приложений и ядра (которые могут повлиять на совместимость) остаются для установки вручную.
#linux #security #automation #ubuntu #debian #гайд
Обновлять пакеты вручную — хорошая практика, но на десятках или сотнях серверов она нереализуема. Пропущенное обновление безопасности может стать причиной взлома.
Архитектурно правильное решение — автоматизировать установку только критически важных обновлений безопасности, чтобы минимизировать риски простоя и обеспечить базовую защиту. В 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
Взгляд архитектора:
Health checks — это основа для построения отказоустойчивых и самовосстанавливающихся систем.
Балансировщики нагрузки (Nginx, HAProxy) используют их, чтобы автоматически убирать из ротации "заболевшие" серверы.
Оркестраторы (Kubernetes, Docker Swarm) с помощью health checks понимают, что контейнер завис, и его нужно автоматически перезапустить.
Системы мониторинга (Zabbix, Prometheus) создают на их основе осмысленные алерты, которые сигнализируют о реальной проблеме, влияющей на пользователя.
Начните требовать от разработчиков такие эндпоинты. Это переход от мониторинга инфраструктуры к мониторингу качества сервиса (SRE).
#devops #monitoring #sre #architect #linux #гайд
Классический мониторинг (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