Cert-manager
— специальный проект для Kubernetes, представляющий собой набор CustomResourceDefinitions (отсюда
на минимально поддерживаемую версию K8s — v1.12) для конфигурации CA (удостоверяющих центров) и непосредственного заказа сертификатов. Установка CRD в кластер тривиальна и
к применению одного YAML-файла:
№1. самоподписанный сертификат
Ресурс Issuer будет выглядеть так:
apiVersion: cert-manager.io/v1alpha2
kind: Issuer
metadata:
name: selfsigned
spec:
selfSigned: {}А чтобы выпустить сертификат, необходимо описать ресурс
Certificate
, где указывается, как произвести выпуск (см. раздел
issuerRef
ниже) и где размещен приватный ключ (поле
secretName
). После этого в Ingress потребуется сослаться на этот ключ (см. раздел
tlsspec
№3. wildcard le с валидацией через dns
Усложним задачу, выписав сертификат сразу на все поддомены сайта и воспользовавшись на этот раз DNS-проверкой (через CloudFlare).
Для начала получим в панели управления CloudFlare токен для работы через API:
- Profile → API Tokens → Create Token.
- Выставляем права доступа следующим образом:
- Копируем полученный после сохранения токен (например:
y_JNkgQwkroIsflbbYqYmBooyspN6BskXZpsiH4M).
Создадим Secret, в котором будет храниться этот токен, и сошлемся на него в Issuer:
№4. использование специальных аннотаций ingress
Помимо прямого пути по созданию сертификатов в cert-manager есть возможность воспользоваться компонентом под названием
и явно не создавать ресурсы
Certificate
. Идея заключается в том, что с помощью специальных аннотаций Ingress’а сертификат будет автоматически заказан с помощью указанного в них
Issuer
. В результате получается примерно следующий ресурс Ingress’а:
Перед лабой
Перед тем как покупать PWK и проходить лабу, можно многому научиться самостоятельно (что вообще характерно для профессии: саморазвиваться, самообучаться и искать информацию нужно будет всегда).
Что тебе пригодится? Во-первых, и обучение, и экзамен будут проходить на Kali Linux, и было бы неплохо в нем разобраться. Если вдруг не сталкивался с ним, не пугайся: это просто дистрибутив на основе Debian с кучей всевозможного хакерского софта, который может пригодиться в работе.
Не все работает из коробки, не все оптимизировано, но это популярный выбор, который помогает быстро получить доступ к необходимым инструментам. Работа с этим дистрибутивом мало чем отличается от работы с любым другим сортом Debian (вроде Ubuntu), поэтому описывать ее подробно не имеет смысла. Если ты уже имел дело с Linux, то, несомненно, разберешься. Если нет, то стоит начать с азов Linux.
Что нужно еще? (Если ты уже отличаешь LFI от LPE, то можно не читать этот список.)
- Иметь хотя бы базовые знания о том, как работает компьютер: как взаимодействуют процессор и память, IO, буфер, куча и так далее.
- Иметь представление об устройстве ОС (Linux и Windows) и ориентироваться в них, быть знакомым с их командной оболочкой.
- Уметь программировать, опять же хотя бы на уровне простых скриптов.
- Уметь пользоваться основными инструментами: Nmap, netcat, tcpdump (Wireshark), Metasploit, SearchSploit, gobuster (wfuzz, fuff) и прочими.
- Знать, какие бывают атаки, уязвимости и способы их эксплуатации.
- Знать, как повышать привилегии на атакованной и взломанной машине (LPE, privesc).
С теорией, уверен, ты справишься сам. Переходим к самому интересному — где практиковаться.
Первое место, где можно получить практические навыки, приближенные к боевым, — это сервис Hack The Box. Сервис предоставляет набор машин с уязвимостями и позволяет отточить полученные в теории навыки. Есть платная и бесплатная версии. На этом сервисе много разных машин, но в сети товарищ TJnull составил и пополняет список OSCP-like-машин.
Большинство этих машин имеют статус retired («на пенсии») и доступны только в платной версии, но оно того стоит.
Еще одна платформа для практики — VulnHub. Сервис предоставляет виртуальные машины с набором уязвимостей. Их можно развернуть у себя и развлекаться сколько угодно. В документе, который кто-то добрый выложил в Google Drive, есть набор машин в стиле OSCP из этого сервиса. Некоторые машины старые, но и сам OSCP использует далеко не новые уязвимости.
Вносит неоценимый вклад в обучение еще один житель сети — IppSec. По всем машинам из HTB он записывает подробное видео, где демонстрирует разные техники: recon, enumeration, privesc и прочие. Его главное преимущество для меня в том, что он предлагает несколько вариантов добиться одного и того же результата. Например: можно просканировать порты при помощи Nmap или быстро написать свой скрипт на Bash или Python, для перечисления на вебе использовать не только привычный dirb, но и альтернативные тулзы — gobuster, fuff, wfuzz — или написать быстро свою.
Есть еще масса других сервисов: root-me, Web Security Academy разработчиков Burp, Hack this site и другие, их можно найти в поисковике.
Общая рекомендация: читай райтапы, смотри, как делают другие, учись и практикуйся, практикуйся, практикуйся. И пробуй все машины ломать без использования «Метасплоита». Ищи эксплоиты, правь, разбирайся, что, как и почему именно так работает.
Когда поломаешь все машины из списка и почувствуешь себя настоящим надмозгом, настанет пора покупать PWK.
Подготовка
Огромная доля вопросов касается подготовки. Что смотреть, что качать (ну кроме очередного гоблина-мага в WoW), где практиковаться? В общем, неопределенность полная, как и во многих жизненных вопросах.
Вместо заключения
Путём несложных манипуляций с CRD мы научились выписывать автопродляемые, самоподписанные и бесплатные SSL-сертификаты от проекта Let’s Encrypt для доменов сайтов, запущенных в рамках Ingress’ов в Kubernetes-кластерах.
В статье приведены примеры решения наиболее частых в нашей практике задач. Однако функции cert-manager не ограничиваются описанными выше возможностями. На сайте утилиты можно найти примеры работы с другими сервисами — например, связка с Vault или же использование внешних выпускающих центров (issuers).
