Devops Фабрика
Авторский курс Александра Донского
Get to Work
Курс Get to Work нужен для получения практического опыта в Linux based инфраструктурах. За 4 итерации мы проработаем основные операции и подходы, принятые в продакшне. Будем изучать этот вопрос с точки зрения инженера, который отвечает за новый сервис. Все задачи построены так, чтобы мы могли одновременно решать две задачи: повышать наши практические скилы и делать это в ключе практических потребностей современных коммерческих проектов. Это те самые задачи, с которыми джуниор сталкивается на первом проекте: принять чужую систему, поднять на ней сервис, отвечать за него и разобрать инцидент.
На время прохождения курса предоставляется тестовое окружение: виртуальная машина с дистрибутивом семейства Debian. Для прохождения вам потребуется ssh клиент и браузер.
Курс длится один месяц и состоит из 4 итераций. Ориентировочно потребуется 15–20 часов в неделю. Каждая неделя состоит из обязательной части, факультативной и части с вопросами с собеседований. Решения вы будете сдавать в формате pull request’ов. По вашим решениям будет предоставлена индивидуальная обратная связь, так же, как это чаще всего выглядит в реальном проекте.
История одного внутреннего сервиса
Весь курс — это один сервис, за который отвечаете вы, и непрерывный сюжет вокруг него.
Неделя 1
Вам выдают машину и просят поднять на ней сервис обмена одноразовыми секретами — из тех, куда кидают друг другу пароли ссылкой, которая открывается один раз. Вы принимаете машину как чужой сервер: с описью, а не «работает — и ладно». Ставите пакеты, пишете systemd-юнит, поднимаете nginx и снимаете эталонное состояние системы.Неделя 2
Ссылку на сервис разложили по рабочим чатам. Пришли пользователи, а вместе с ними боты. Логи растут, диск кончается, кто-то использует сервис нецелевым способом. Вы пишете отчёты по логам, ловите аномалию в трафике, разносите файловые системы, настраиваете ротацию и дежурную проверку по расписанию.Неделя 3
Вы разбираете сеть машины, DNS, TLS и собираете карту собственной поверхности атаки: что торчит наружу, кто может дойти, что будет, если сломают.Неделя 4
Группировка «Фабрика» получила доступ к вашему серверу и скомпрометировала его. Эту роль выполним для вас мы. Нас интересуют пароли, которые люди передают через ваш сервис. Вы разбираетесь с этим инцидентом, исследуете действия злоумышленников и делаете сервер защищённее.Основные темы
Git
- Ключевые операции и настройки
- Ветки, слияния, разрешение конфликтов
- Revert и откат изменений
- Командная работа: pull request, ревью чужого изменения до того, как вы его применили
- История репозитория как источник правды о системе
SSH и авторизация
- Управление операционными системами Linux по ssh, методы авторизации
- SSH-ключи и требования к их хранению
- Конфигурация клиента и сервера
- Управление пользователями, группами и их привилегиями, sudo
Файлы и процессы
- Типовые операции в Linux и стандартные средства для работы с файлами, процессами и файловыми системами
- Права и владельцы, поиск файлов по атрибутам
- Процессы и их владельцы
- Разметка и монтирование томов
- Дисковое пространство и inode, ротация журналов
Bash
- Основной server-side скриптовый язык
- Скрипты эксплуатации и отчётности
- Аргументы и коды возврата
- Обработка текстовых журналов стандартными средствами — grep, awk, sed, sort, uniq
Диагностика и логи
- Стандартные средства диагностики состояния системы и сервиса
- Лог-файлы операционной системы, журнал systemd, логи веб-сервера
- Разбор трафика по логам
- Контроль свободного места и inode
- Дежурная проверка сервиса по расписанию
Пакеты и systemd
- Установка пакетов из репозиториев дистрибутива и сторонних сборок
- Проверка происхождения бинарного файла, инвентаризация установленного
- Автоматические обновления безопасности
- Управление сервисами через systemd: юниты, изоляция сервиса, политика перезапуска, таймеры
Nginx
- Веб-сервер перед приложением
- Отдача статики
- Проксирование
- Ограничение частоты запросов
Сети, DNS, TLS
- Сетевые настройки и диагностика сетевой доступности: интерфейсы и адреса, маршрут по умолчанию
- Слушающие сокеты и порты, локальный межсетевой экран, проверка доступности снаружи
- DNS: зона и делегирование, типы записей, TTL и планирование изменений без простоя
- TLS: выпуск и автопродление сертификата, цепочка доверия, разбор сертификата как объекта
Целостность и защита
- Инвентаризация состояния, контроль изменений файлов
- Обнаружение постороннего присутствия
- Восстановление системы в известное состояние
- Базовое усиление конфигурации
Реагирование на инциденты
- Восстановление таймлайна по журналам
- Оценка ущерба и состава утечки
- Минимизация того, что сервис хранит и пишет в логи
- Постмортем и уведомление пользователей
По завершении курса вы получите:
Опыт работы с задачами, которые выполняет junior devops специалист. Вы уверенно ориентируетесь в управлении серверными операционными системами Linux, выполняете типовые операции с ними и работаете с git в командном режиме.