Ansible для Всех: Автоматизация Харденинга Linux-серверов без Написания Ролей с Нуля
😫 Проблема: Ручной Харденинг
Представим: у вас 50+ Linux-серверов, и служба безопасности требует привести их в соответствие со стандартом CIS Benchmarks. Делать это вручную по SSH — прямой путь к ошибкам, несоответствиям и бессонным ночам. А главное, через месяц конфигурации серверов неизбежно "разъедутся" (configuration drift).
💡 Решение: Сила Ansible Galaxy и Готовых Ролей
Ansible — это не только написание плейбуков с нуля. Его экосистема включает Ansible Galaxy — огромный репозиторий готовых ролей. Для нашей задачи идеально подходит коллекция devsec.hardening, реализующая лучшие практики безопасности.
1️⃣ Шаг 1: Подготовка Окружения
Установите Ansible на вашу управляющую машину.
Установите коллекцию devsec.hardening одной командой:
Bash
Создайте inventory.ini файл с вашими серверами:
Ini, TOML
2️⃣ Шаг 2: Создание Плейбука с Готовой Ролью
Вам не нужно знать, как именно работает каждый параметр безопасности. Вам нужно лишь декларативно описать исключения для вашей среды. Например, роль os_hardening по умолчанию отключает IP-форвардинг, который нужен для Docker. Мы можем это легко переопределить.
Код плейбука (playbook.yml):
YAML
3️⃣ Шаг 3: Запуск и Проверка
Сначала выполняем "пробный запуск", который покажет изменения, но ничего не применит:
Bash
Убедившись, что всё корректно, запускаем в рабочем режиме:
Bash
Ключевое свойство Ansible — идемпотентность. Повторный запуск плейбука не вызовет ошибок. Ansible просто проверит, что все настройки в порядке, и исправит только то, что отклонилось от стандарта. Это позволяет использовать плейбук для регулярной борьбы с "дрейфом конфигурации".
🚀 Заключение: От Администратора к Инженеру по Автоматизации
С помощью нескольких десятков строк YAML-кода мы применили сотни настроек безопасности к целой группе серверов. Это и есть переход к Infrastructure as Code (IaC). Вы не просто администрируете серверы — вы управляете их состоянием через код.
#IaC #Ansible #Linux #Hardening #DevSecOps #Automation
😫 Проблема: Ручной Харденинг
Представим: у вас 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