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

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


Админ - @maksimshap
Download Telegram
Ansible для Всех: Автоматизация Харденинга Linux-серверов без Написания Ролей с Нуля

😫 Проблема: Ручной Харденинг
Представим: у вас 50+ Linux-серверов, и служба безопасности требует привести их в соответствие со стандартом CIS Benchmarks. Делать это вручную по SSH — прямой путь к ошибкам, несоответствиям и бессонным ночам. А главное, через месяц конфигурации серверов неизбежно "разъедутся" (configuration drift).

💡 Решение: Сила Ansible Galaxy и Готовых Ролей
Ansible — это не только написание плейбуков с нуля. Его экосистема включает Ansible Galaxy — огромный репозиторий готовых ролей. Для нашей задачи идеально подходит коллекция devsec.hardening, реализующая лучшие практики безопасности.

1️⃣ Шаг 1: Подготовка Окружения
Установите Ansible на вашу управляющую машину.

Установите коллекцию devsec.hardening одной командой:

Bash

ansible-galaxy collection install devsec.hardening

Создайте inventory.ini файл с вашими серверами:

Ini, TOML

[webservers]
web01.example.com
web02.example.com
[dbservers]
db01.example.com

2️⃣ Шаг 2: Создание Плейбука с Готовой Ролью
Вам не нужно знать, как именно работает каждый параметр безопасности. Вам нужно лишь декларативно описать исключения для вашей среды. Например, роль os_hardening по умолчанию отключает IP-форвардинг, который нужен для Docker. Мы можем это легко переопределить.

Код плейбука (playbook.yml):

YAML

- name: Harden all Linux servers
hosts: all
become: yes
roles:
- role: devsec.hardening.os_hardening
vars:
# Пример: разрешаем Docker'у работать
sysctl_overwrite:
net.ipv4.ip_forward: 1
# Пример: оставляем файловую систему vfat для UEFI
os_filesystem_whitelist:
- vfat

- name: Harden SSH configuration
hosts: all
become: yes
roles:
- role: devsec.hardening.ssh_hardening
vars:
# Пример: разрешаем вход по паролю (не для прода!)
sshd_password_authentication: "yes"

3️⃣ Шаг 3: Запуск и Проверка
Сначала выполняем "пробный запуск", который покажет изменения, но ничего не применит:

Bash

ansible-playbook -i inventory.ini playbook.yml --check

Убедившись, что всё корректно, запускаем в рабочем режиме:

Bash

ansible-playbook -i inventory.ini playbook.yml

Ключевое свойство Ansible — идемпотентность. Повторный запуск плейбука не вызовет ошибок. Ansible просто проверит, что все настройки в порядке, и исправит только то, что отклонилось от стандарта. Это позволяет использовать плейбук для регулярной борьбы с "дрейфом конфигурации".

🚀 Заключение: От Администратора к Инженеру по Автоматизации
С помощью нескольких десятков строк YAML-кода мы применили сотни настроек безопасности к целой группе серверов. Это и есть переход к Infrastructure as Code (IaC). Вы не просто администрируете серверы — вы управляете их состоянием через код.

#IaC #Ansible #Linux #Hardening #DevSecOps #Automation
WireGuard: VPN нового поколения. Просто, быстро и безопасно.

Годами мы настраивали громоздкие и сложные IPsec и OpenVPN. Но мир не стоит на месте. WireGuard — это современный взгляд на VPN, который ставит во главу угла простоту, производительность и криптографическую надёжность.

▪️ Почему WireGuard — это будущее?

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

Производительность: WireGuard работает на уровне ядра Linux, что обеспечивает огромный прирост в скорости и минимальные задержки по сравнению с аналогами, работающими в user-space.

Современная криптография: Он использует новейшие и проверенные криптографические примитивы (ChaCha20, Poly1305, Curve25519), избавляясь от устаревших и небезопасных алгоритмов.

Простота конфигурации: Забудьте о сотнях параметров. Конфигурация WireGuard напоминает настройку SSH-ключей. Вы обмениваетесь публичными ключами, и всё работает.

▪️ Пример: Настройка простого туннеля "сервер-клиент"
Задача: Соединить ваш ноутбук (клиент) с домашним сервером (сервер).

Установка: sudo apt install wireguard или sudo dnf install wireguard-tools

Генерация ключей (на обеих машинах):

Bash

wg genkey | tee privatekey | wg pubkey > publickey

Конфигурация Сервера (/etc/wireguard/wg0.conf):

Ini, TOML

[Interface]
Address = 10.10.0.1/24
PrivateKey = <содержимое privatekey сервера>
ListenPort = 51820

[Peer]
PublicKey = <содержимое publickey клиента>
AllowedIPs = 10.10.0.2/32

Конфигурация Клиента (например, на ноутбуке):

Ini, TOML

[Interface]
Address = 10.10.0.2/24
PrivateKey = <содержимое privatekey клиента>

[Peer]
PublicKey = <содержимое publickey сервера>
Endpoint = <публичный_IP_сервера>:51820
AllowedIPs = 10.10.0.0/24
PersistentKeepalive = 25

Запуск (на обеих машинах): wg-quick up wg0

Теперь ваш клиент может обращаться к серверу по адресу 10.10.0.1 так, как будто они в одной локальной сети. Это элегантно, быстро и безопасно.

#WireGuard #VPN #Security #Linux #Networking #DevSecOps
Vault: Перестаньте хранить пароли в Ansible-плейбуках

Мы уже говорили про IaC и автоматизацию с помощью Ansible. Но где вы храните пароли от баз данных, API-токены и SSH-ключи, которые используют ваши плейбуки? Если ответ «в ansible-vault» или, что хуже, в зашифрованных файлах в Git, — есть способ лучше.

Знакомьтесь с HashiCorp Vault — это «швейцарский сейф» для всей вашей инфраструктуры.

▪️ Проблема, которую решает Vault:
Секреты (пароли, токены, ключи) разбросаны повсюду: в конфиг-файлах, переменных окружения, скриптах. Ими сложно управлять, ротировать (менять) и аудировать, кто и когда к ним получал доступ.

▪️ Как Vault меняет игру?
Vault — это централизованный сервис, который:

Надежно хранит секреты: Все данные шифруются как при передаче, так и при хранении.

Выдает секреты «на лету»: Vault может генерировать временные, короткоживущие учетные данные для баз данных (PostgreSQL, MySQL) или облаков (AWS). Ваше приложение получает доступ к базе не с постоянным паролем, а с временным, который действует, например, 5 минут. Даже если его украдут, он быстро станет бесполезным.

Предоставляет API: Приложения и скрипты (включая Ansible) аутентифицируются в Vault и запрашивают нужные им секреты через API. Паролей в плейбуках больше нет.

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

🧠 Взгляд архитектора:
Внедрение Vault — это переход от статичного управления секретами (пароль, который лежит в файле годами) к динамическому. Вы больше не защищаете сами пароли, вы защищаете доступ к Vault. Это фундаментальный сдвиг в сторону модели Zero Trust, где ни один компонент системы не доверяет другому по умолчанию.

Изучение Vault — это следующий логический шаг после освоения Ansible или Terraform, который выводит ваши навыки безопасности и автоматизации на новый уровень.

#Vault #Security #DevSecOps #IaC #Ansible #Архитектура
Как безопасно хранить секреты в Git? Знакомьтесь с git-crypt

Главное правило Infrastructure as Code (IaC) — всё должно быть в Git. Но что делать с секретами: паролями, токенами, приватными ключами? Добавлять их в .gitignore — безопасно, но неудобно для команды. Хранить в открытом виде — катастрофа.

git-crypt предлагает элегантное решение этой проблемы, интегрируя шифрование прямо в ваш Git-workflow.

▪️ Философия git-crypt:
Это прозрачный файловый фильтр. Вы один раз указываете, какие файлы или папки должны быть зашифрованы.

Когда вы делаете git push, эти файлы автоматически шифруются перед отправкой на удаленный репозиторий.

Когда ваш коллега (у которого есть доступ) делает git pull, эти файлы автоматически расшифровываются на его машине.

В удаленном репозитории (на GitHub/GitLab) секреты всегда хранятся в виде зашифрованной абракадабры. В вашей рабочей копии вы видите их как обычные текстовые файлы.

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

Установка: sudo apt install git-crypt или brew install git-crypt.

Инициализация в репозитории: git-crypt init.

Указание файлов для шифрования: Создайте файл .gitattributes и добавьте в него строку:
secret.yaml filter=git-crypt diff=git-crypt

Добавление доверенных пользователей: Чтобы ваши коллеги могли расшифровывать файлы, добавьте их GPG-ключи:
git-crypt add-gpg-user "email@colleague.com"

Работайте как обычно: git add ., git commit, git push. git-crypt сделает всю магию в фоне.

🧠 Взгляд DevSecOps:
git-crypt — это яркий пример практики «сдвига влево» (Shift Left Security). Вы не думаете о безопасности в последнюю очередь, а встраиваете ее в самый базовый инструмент разработки и администрирования — Git. Это делает безопасный способ работы одновременно и самым простым, устраняя человеческий фактор.

#Git #Security #DevSecOps #SecretsManagement #Automation #IaC
🚀 Skills: Амнезия админа. Почему вы больше не должны знать пароли от прода

Помните времена, когда пароль от боевой базы данных лежал в `.env` файле или в персональном KeePass старшего инженера? В реалиях 2026 года, если ты физически знаешь пароль от продакшена — инцидент безопасности уже начался.

Под капотом:
Переход на динамические секреты (Dynamic Secrets). Мы используем HashiCorp Vault (или его сертифицированные аналоги). Приложение авторизуется через токен (например, JWT от Kubernetes Service Account). Vault идет в PostgreSQL, генерирует уникального юзера и пароль с Time-To-Live (TTL) ровно на 1 час, и отдает их приложению в память. Через час Vault сам убивает этого пользователя в БД.

Практика:
Запрашиваем временные креды для дебага базы (выдаются лично вам на 15 минут, логируются в аудит):


# Логинимся через корпоративный OIDC
vault login -method=oidc

# Запрашиваем динамический доступ к роли read-only
vault read database/creds/pg-prod-readonly

# Вывод:
# Key Value
# --- -----
# lease_id database/creds/pg-prod-readonly/gK9...
# lease_duration 15m
# password A1b2C3d4_dynamic_hash_8f92
# username v-oidc-adm_ivanov-pg-prod-read-1a2b3c



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

#skills #vault #devsecops #security #admin_future
🤔3