1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dev-99cloud-training-kubernetes

Клонировать/Скачать
class-04-Kubernetes-Security-Specialist.md 480 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 07.06.2025 06:35 02df06a

Краткий обзор и лучшие практики безопасности Kubernetes (Специалист по безопасности Kubernetes)

Внимание ⚠️

  • Перепечатка запрещена без разрешения

Предисловие

  • Продолжительность занятия:
    • Утро: с 9:30 до 12:00
    • День: с 13:30 до 16:00
  • Предварительные требования

Содержание

| Дата | Время | Название | Содержание | | ---- | ---- | ----- | ------- |- Обзор

  • Обзор курса
  • Что такое безопасность
  • Облачные технологии безопасности
    • Проекты безопасности CNCF
    • Принципы оценки безопасности
    • Понимание атакующей поверхности
    • Классификация атак
    • Источники атак
    • Активные/пассивные атаки
    • Ресурсы по безопасности в интернете
      • NIST Cybersecurity Framework
      • Защита ценных активов
      • Национальная программа проверки
      • CIS Benchmarks
      • kube-bench
    • Культура безопасности в компании
      • Культура безопасности в команде разработчиков
      • Культура безопасности в команде безопасности
  • Риски безопасности Kubernetes
    • Риски, связанные с образами
      • Приватные репозитории образов -- злые сотрудники
      • Риски публичных образов -- понимание цепочки поставок образов
      • Стратегии противодействия
    • Риски, связанные с контейнерными рантаймами
      • gVisor
      • Kata
      • Firecracker
    • Риски, связанные с установкой пакетов программного обеспечения
      • Стратегии противодействия
        • The Update Framework (TUF)
        • Notary
  • Учет безопасности перед развертыванием кластера Kubernetes
    • Поиск уязвимостей в ядре (CVE)
    • Использование функций ядра для защиты от атак
    • Развертывание кластера с несколькими узлами
  • Усиление безопасности доступа к кластеру
    • Усиление безопасности kube-apiserver
    • Включение аудита
    • Рациональное использование RBAC
    • Использование политик безопасности контейнеров
    • Безопасность etcd
    • Шифрование секретных данных - Рациональное использование контроллеров обновления
    • Использование serviceaccount
  • Усиление сетевой безопасности кластера Kubernetes
    • Сканирование сетевых уязвимостей
    • Предотвращение доступа pod между namespace
    • Рассмотрение продуктов сетевых мешков
    • Использование mTLS по возможности
  • Усиление безопасности рабочих нагрузок Kubernetes
    • Рассмотрение перед загрузкой образа
    • Рассмотрение перед запуском контейнера
    • Защита слоев контейнеров
    • Анализ безопасности после запуска контейнера
    • Рассмотрение безопасности CRD и операторов
    • Введение в инструменты безопасности во время работы контейнера
      • seccomp
      • selinux
      • apparmor
  • Обнаружение и управление рисками
    • Понимание жизненного цикла атак
      • Понимание kill chain
    • Список проверок управления рисками
    • Стратегии после атаки
      • Стратегии после атаки -- механизмы отчетности
      • Стратегии после атаки, связанные с нарушением закона
      • Создание группы быстрого реагирования
      • Полный отчет о неисправностях
    • Обнаружение вторжений
      • Обнаружение вторжений на хосте
      • Обнаружение вторжений в сети

1. Введение в курсОблачные технологии безопасности — это процесс, который развивается со временем, а не решается за один день. Для создания надежной облачной среды требуется непрерывное накопление и практика.

Цель данного курса — ознакомить с:

  1. Решением проблем безопасности облачных сред.
  2. Безопасностью цепочки поставок контейнеров.
  3. Непрерывной безопасностью и гибким использованием кластеров K8S.
  4. Источниками информации о непрерывной безопасности и уязвимостях.

Курс включает:

  1. Практические занятия по построению и защите кластеров Kubernetes.
  2. Практические занятия по мониторингу и записи событий безопасности.

По завершении курса вы узнаете:

  1. О проблемах безопасности облачных сред.
  2. Как укреплять системы и кластеры.
  3. О вопросах безопасности цепочки поставок контейнеров.
  4. Как мониторить и записывать события безопасности.

2. Обзор облачной безопасности

2.1 Краткое содержание

  • Понимание того, что проблемы безопасности и их предотвращение — это непрерывный процесс.
  • Обсуждение проблем безопасности и методов их решения.
  • Обсуждение типов атак.
  • Четыре уровня безопасности 4C: код / контейнер / кластер / облако.
  • Понимание механизмов безопасности и ресурсов безопасности.

2.2 Что такое компьютерная безопасность?

Компьютерная безопасность — это защита полезных активов (активы) компьютера или компьютерной системы. Активы включают: аппаратное обеспечение, программное обеспечение, данные, процессы, людей или их комбинации.

  • Жизненный цикл активов: Безопасность начинается с приобретения активов. Важно, чтобы физические активы имели цепь ответственности до тех пор, пока они не будут подключены к сети.
  • Жизненный цикл разработки программного обеспечения: Включает процессы проектирования, разработки, тестирования и развертывания. Важно учитывать безопасность на этапе проектирования.
  • Создание организационных политик и процедур: Политики и процедуры могут снизить риск несчастных случаев или намеренных действий.
  • Определение ролей и обязанностей: Важно установить иерархию ответственности за события. Из-за сложности задачи требуется наличие четкого лидера или плана распределения лидерства.

Безопасность — это не что-то, что можно решить за один день. Она требует непрерывного накопления и практики для создания надежной облачной среды. Поскольку инструменты и методы постоянно обновляются и развиваются, нам также необходимо постоянно учиться и практиковаться, чтобы гарантировать безопасность нашей облачной платформы.### 2.3 Площадка для атак

Каждый компонент облачной платформы может стать точкой для атаки. Каждый компонент состоит из кода и подвержен риску. Самый безопасный подход — не допускать, чтобы эти данные были доступны через сеть (хранить их в высоко защищенных помещениях), но это также означает, что мы не сможем предоставлять услуги, что лишает нас смысла существования. Поэтому важно поддерживать баланс.

2.3.1 Безопасность базы данных ETCD

В k8s самые критичные данные хранятся в базе данных ETCD. Если файлы данных будут умышленно уничтожены и нет резервной копии, восстановление будет затруднено.

  • По умолчанию kubeadm размещает ETCD и контроллер на одном узле, а данные ETCD монтируются в /var/lib/etcd. Если злоумышленник удалит этот каталог, это будет иметь критическое воздействие на кластер.
  • С точки зрения безопасности лучше всего размещать ETCD в отдельном кластере. Вы можете использовать этот руководство для настройки отдельного кластера ETCD и k8s.```yaml

стандартный статический pod ETCD kubeadm

$ cat /etc/kubernetes/manifests/etcd.yaml

вывод

volumeMounts:
  • mountPath: /var/lib/etcd name: etcd-data . . . volumes: . . .
  • hostPath: path: /var/lib/etcd type: DirectoryOrCreate name: etcd-data
$ kubectl get cm -nkube-system kubeadm-config -o yaml
apiVersion: v1
data:
  ClusterConfiguration: |
    apiServer:
      certSANs:
      - kubernetes
      - kubernetes.default
      - kubernetes.default.svc
      - kubernetes.default.svc.mec01.com
      - localhost
      - 127.0.0.1
      - vip.mec01.com
      - 172.xx.xx.100
      - master-1
      - master-1.mec01.com
      - 172.xx.xx.207
      - master-2
      - master-2.mec01.com
      - 172.xx.xx.228
      - master-3
      - master-3.mec01.com
      - 172.xx.xx.225
      - 10.xx.xx.1
      extraArgs:
        authorization-mode: Node,RBAC
        bind-address: 0.0.0.0
        feature-gates: CSIStorageCapacity=true,ReadWriteOncePod=true,RotateKubeletServerCertificate=true
      timeoutForControlPlane: 4m0s
    apiVersion: kubeadm.k8s.io/v1beta3
    certificatesDir: /etc/kubernetes/pki
    clusterName: mec01.com
    controlPlaneEndpoint: vip.mec01.com:6443
    controllerManager:
      extraArgs:
        bind-address: 0.0.0.0
        cluster-signing-duration: 87600h
        feature-gates: RotateKubeletServerCertificate=true,CSIStorageCapacity=true,ReadWriteOncePod=true
        node-cidr-mask-size: "24"
      extraVolumes:
      - hostPath: /etc/localtime
        mountPath: /etc/localtime
        name: host-time
        readOnly: true
    dns:
      imageRepository: registry-1.ict-mec.net:18443/coredns
      imageTag: 1.9.3
    etcd:
      external:
        caFile: /etc/ssl/etcd/ssl/ca.pem
        certFile: /etc/ssl/etcd/ssl/node-master-1.pem
        endpoints:
        - https://xx.xx.xx.xx:2379
        - https://xx.xx.xx.xx:2379
        - https://xx.xx.xx.xx:2379
        keyFile: /etc/ssl/etcd/ssl/node-master-1-key.pem
    imageRepository: registry-1.ict-mec.net:18443/kubesphere
    kind: ClusterConfiguration
    kubernetesVersion: v1.27.2
    networking:
      dnsDomain: mec01.com
      podSubnet: 10.xx.xx.0/18
      serviceSubnet: 10.xx.xx.0/18
    scheduler:
      extraArgs:
```        bind-address: 0.0.0.0
         feature-gates: CSIStorageCapacity=true,ReadWriteOncePod=true,RotateKubeletServerCertificate=true
 kind: ConfigMap
 metadata:
   creationTimestamp: "2023-08-23T05:47:44Z"
   name: kubeadm-config
   namespace: kube-system
   resourceVersion: "233"
   uid: fd244790-167b-4024-b465-60caaf9c04ea
 ```#### 2.3.2 Сетевая безопасность```Сетевая безопасность также требует особого внимания. Мы ожидаем, что нормальные запросы не будут затронуты, в то время как ненормальные запросы будут заблокированы. Можно настроить белый список для брандмауэра, например, ограничить доступ к kube-apiserver только из сегмента сети 172.25.0.0/24.

- В последних версиях k8s все запросы выполняются на основе модели zero trust, где все соединения аутентифицируются с помощью mTLS (двустороннего TLS). Однако, если из-за удобства используется команда `kubectl proxy`, это увеличивает риск несанкционированного доступа.
- В худшем случае команда `kubectl proxy --address="0.0.0.0"` может привести к серьезным проблемам безопасности, особенно если в конфигурации вашего кластера указано имя SAN (Subject Alternative Name), например abc.com. В этом случае злоумышленник может легко получить доступ к kube-apiserver, изменив конфигурацию .kube/config и файл /etc/hosts.

```console
# Просмотр маршрута доступа
$ kubectl get node -v=10 2>&1 | tee output
$ cat output | grep -i "GET https:"
# output
I1009 10:05:38.708661   36252 round_trippers.go:553] GET https://xx.xx.xx.xx:6443/api/v1/nodes?limit=500 200 OK in 8 milliseconds
$ kubectl proxy
# Доступ без сертификата к api-server
$ curl http://127.0.0.1:8001/api/v1/nodes?limit=500

В k8s компоненты kube-proxy и kubelet должны безопасно взаимодействовать с kube-apiserver. Удобство не должно идти в ущерб безопасности.

2.3.3 Другие аспекты безопасностиОблачные платформы обычно состоят из множества проектов, и чем больше проектов, тем шире атакуемая поверхность. Мы должны выбирать проекты, которые прошли процесс "graduation" в CNCF, так как они уже учли вопросы безопасности. Проекты, находящиеся в процессе "incubation", могут иметь некоторые недостатки в плане безопасности, например: CNI, CRI-O, Linkerd, OpenTracing, Thanos. Проекты, находящиеся в "sandbox", могут иметь еще более серьезные проблемы безопасности, например: Artifact Hub, k3s, in-toto, Keylime, Parsec. Проекты, находящиеся в "archived" статусе, уже не поддерживаются и их использование может привести к дополнительным рискам безопасности.В k8s есть специальная группа SIG, отвечающая за безопасность Kubernetes Security Profiles Operator SIG, а CNCF имеет специальную группу для обеспечения безопасности всех проектов CNCF Special Interest Group for Security

2.3.4 Источники, категории и способы реагирования на риски

Распределение ресурсов -- может привести к увеличению различных рисков, например:

  • Схема единого входа (SSO) кажется хорошим способом управления, но она повышает риски безопасности. Если SSO-сервис перестанет работать, то все платформы станут недоступными.
  • Каждое добавление нового сотрудника по безопасности увеличивает риск безопасности. Это мнение с точки зрения назначения персонала. Люди имеют множество непредсказуемых факторов, таких как настроение и давление из-за личной жизни, но даже наличие одного сотрудника по безопасности также является риском.
  • Слишком высокая степень藕合的服务应用 -- 比如将许多关键服务部署在没有灾难恢复方案的主机群或平台上,如果平台或主机群断电,则这些服务都将停止运行。

应对策略

Слишком высокая степень藕合的服务应用 -- 比如将许多关键服务部署在没有灾难恢复方案的主机群或平台上,如果平台或主机群断电,则这些服务都将停止运行。

应对策略- Превентивные механизмы -- нам необходимо предотвратить возникновение ситуаций, которые могут увеличить уровень угроз безопасности. Это можно сделать с помощью аппаратных или программных средств.

  • Управление доступом с помощью безопасного программного обеспечения для контроля доступа человек/приложение к определённым программам/аппаратным средствам.

  • Увеличение административных процессов, например, при необходимости доступа приложения A к базе данных A требуется заполнение соответствующей заявки и её одобрение.

  • В зависимости от уровня безопасности, мы можем выключить физические устройства и управлять ими в режиме оффлайн. Единственным местом входа может быть комната с кодовым замком или замком, который может быть открытым только с разрешения.

  • Механизмы обнаружения -- конечно, только превентивные механизмы не могут полностью исключить угрозы безопасности. В случае возникновения событий, влияющих на безопасность, нам необходимо обнаружить их с помощью различных средств. В системе обнаружения и предотвращения вторжений (IDPS) превентивные механизмы являются теми, о которых мы говорили выше. Обнаружение вторжений для нас наиболее очевидным методом является статический мониторинг данных, то есть метод, использующий мониторинг/журналы для сбора данных. Например, мы можем установить Prometheus на k8s.

    • Механизмы реагирования -- реагирование всегда является пассивным, но мы можем сделать его как можно более активным. Например, если k8s полностью выходит из строя, но если мы регулярно делаем полные резервные копии базы данных etcd или используем velero для резервного копирования объектов, то мы можем восстановить кластер до состояния, близкого к состоянию до сбоя.Атакующие могут быть разделены на следующие категории:
  • White Hat/Белый хат — обычно работает в компаниях по безопасности, они соблюдают закон и сообщают об обнаруженных уязвимостях соответствующим организациям.

  • Black Hat/Чёрный хат — это те, кого мы обычно называем хакерами, они проникают в компьютеры, крадут или уничтожают ценные данные для достижения своих целей.

  • Script Kiddie/Скрипт кидди — это не настоящие хакеры, а те, кто только начинает и использует готовые скрипты или инструменты для атак.

  • Hacktivist/Хактивист — эти люди обычно проводят атаки с целью пропаганды, они обычно атакуют веб-сайты, изменяя главную страницу для достижения своих целей.

  • Nation State/Государственная организация — эти атакующие принадлежат к государственным учреждениям.

  • Organized Crime/Организованное преступление — атакуют компьютеры по определённым мотивам, имея организованную структуру.

  • Bots/Боты — компьютеры или терминалы, заражённые вредоносным ПО, которые используются для атак на другие компьютеры.

Источники атак:

  • Внутренние — внутренние атаки обычно происходят из-за внутренних сотрудников, наиболее распространенным примером является кража исходного кода или чертежей, которые сотрудник имеет право доступа, но затем продает эти данные конкурентам.

  • Внешние — атаки, осуществляемые через сеть, когда злоумышленник незаконно заходит на компьютер и крадет информацию.Категории атак

  • Активные атаки/Active Attacks — активные атаки направлены на уничтожение нормально функционирующих приложений и услуг. Обычные методы включают отказы и атаки типа "flooding", которые увеличивают нагрузку на приложение, делая его почти недоступным.

    • Отказ от сервиса/DoS — обычно достигается путем перегрузки клиента, например, постоянными запросами к kube-apiserver, что делает его неспособным обрабатывать обычные запросы, что приводит к недоступности k8s платформы.
    • Атаки подмены/Spoofing attacks — или атаки подделки обычно происходят в ARP, DNS, IP-адресах и MAC-адресах, где они легко поддаются подделке. Например, сервис appA использует IP-адрес 10.0.0.100 для аутентификации API apiA. Если злоумышленник подделает apiA на IP-адресе 10.0.0.100 и разрешит все запросы от appA, то appA полностью утратит защиту аутентификации.
    • Атаки сканирования портов/Port scanning — злоумышленник использует nmap для сканирования портов на хосте, что позволяет получить полный список работающих на целевом узле приложений.
  • Пассивные атаки/Passive Attacks — пассивные атаки обычно не включают модификацию чего-либо, они включают просмотр и копирование чувствительных данных, что делает их трудноразличимыми.

Уровни безопасности — наш подход к безопасности заключается в том, чтобы максимально ограничить распространение рисков на уровне кода за пределы контейнера.- Код — уровень кода находится на самом внутреннем уровне.

  • Контейнер — уровень контейнера находится на втором уровне.
  • Кластер — уровень кластера находится на третьем уровне.
  • Облачные платформы — уровень облачных платформ находится на наивысшем уровне.

Эволюция безопасности на уровне аппаратного обеспечения — в области аппаратного обеспечения безопасное ПО также развивается, например, Platform Abstraction for Security (PARSEC) предоставляет универсальные API безопасности для аппаратного обеспечения.

Federal Information Processing Standard (FIPS)/Федеральный стандарт обработки информации — это стандарт США по компьютерной безопасности, подробную информацию можно найти на странице публикаций Computer Security Resource Center. Основные моменты:- Управление активами/Asset Management

  • Бизнес-среда/Business Environment
  • Управление/Государственные решения
  • Оценка рисков/Risk Assessment
  • Стратегия управления рисками/Risk Management Strategy
  • Управление рисками в цепочке поставок/Supply Chain Risk Management

Защита высокозначимых активов/Protection of High-Value Assets -- очень важна балансировка услуг и безопасности для некоторых очень чувствительных бизнес-процессов, таких как интерфейсы для поиска информации о банковских кредитных картах. Если слишком сильно защитить такие интерфейсы, они перестанут предоставлять необходимые услуги поиска. Поэтому нам нужно найти компромисс. В США можно обратиться в Cybersecurity and Infrastructure Security Agency (CISA) для проведения необходимого рискового анализа приложений, чтобы подтвердить, что их защитные механизмы способны противостоять угрозам безопасности.Программа национальных проверочных списков -- это веб-сайт, за которым стоит база данных (National Vulnerability Database (NVD)), которая содержит информацию о множестве уязвимостей и рисках в различных версиях программного обеспечения и облачных платформ. Посетители могут посетить National Vulnerability Database для получения общей информации или использовать страницу поиска для поиска конкретных проблем в определенных версиях k8s NIST страница поиска

National Vulnerability Database

страница NIST

NIST страница поиска

страница NIST

CIS Benchmarks -- Центр безопасности интернета (CIS®) -- это некоммерческая организация, которая предоставляет бесплатную информацию о лучших практиках и бесплатные компоненты для безопасного тестирования. Ученики, заинтересованные в этом, могут самостоятельно изучить.

kube-bench -- kube-bench -- это инструмент для проведения безопасного тестирования k8s, разработанный компанией Aqua Security. Хотя его тесты могут быть не такими всесторонними, как у CIS Benchmarks, они все равно стоят внимания.Более информации о защите высокозначимых активов — вы можете посетить страницу Homeland Security/Гражданской безопасности Cybersecurity Directives/Руководства по кибербезопасности для получения информации о текущих уязвимостях безопасности и страницу Securing High Value Assets page для получения рекомендаций по защите высокозначимых активов от Гражданской безопасности департамента. Улучшение культуры команды безопасности / Построение культуры безопасности в отделе безопасностиЧасто в разработческих командах люди относятся к безопасности с некоторым отторжением, возможно, потому что они считают, что некоторые аспекты безопасности усложняют их работу. Такое отрицательное отношение можно преодолеть через обучение и образование. Команда безопасности должна активно участвовать в каждом проекте на всех этапах жизненного цикла разработки. Важно также создать эффективные механизмы поддержки, чтобы помочь разработчикам выполнять свои задачи и при этом учитывать безопасность. Например, когда разработчики предлагают реализацию функций, которые могут содержать определенные риски безопасности, команда безопасности не должна сразу отказываться от этой реализации, а должна помочь разработчикам найти способ реализовать функцию, учитывая при этом безопасность.

Limit Access/Ограничение доступа -- ограничение доступа к ключевым узлам также является эффективным методом повышения безопасности.- Сетевая безопасность между узлами -- между рабочими узлами должна быть программная/железная фаервол-защита, включая защиту между рабочими узлами и узлами инфраструктуры (обычно это узел северо-южного трафика в k8s, через который осуществляется доступ извне в k8s).

  • Среда CI/CD -- часто обновляется из-за обновления кода, и мы не должны игнорировать существующие риски, например, среда CI/CD должна быть защищена от доступа из публичной сети, так как новый код может содержать уязвимости безопасности. Также следует использовать средства сканирования безопасности на всех этапах сборки.
  • Безопасные инструменты вне контейнеров -- такие как SELinux, Kerberos, SAML. SELinux вызывает споры, так как многие программы/платформы рекомендуют отключать его. Если программа/платформа не требует его отключения, мы рекомендуем оставить SELinux включенными.### 2.4 Лаборатория

2.4.1 Лаборатория: Установка aio k8s

См. лаборатория: установка k8s

3. Подготовка к Установке

3.1 Обзор Раздела

  • Понимание цепочки сборки образов и средств обеспечения безопасности
  • Изучение других сред для изоляции контейнеров
  • Рассмотрение стратегий управления доступом и разрешениями
  • Сканирование образов перед их использованием

3.2 Безопасные Риски Образов

Понимание цепочки поставок образов можно рассматривать как приготовление блюда на кухне, где ингредиенты (образы) поступают от различных поставщиков. Мы должны гарантировать их безопасность, например, откуда поступают образы, как они создаются, есть ли в них уязвимости или вредоносные программы. Хорошее управление является важным аспектом, и у нас есть такие инструменты, как grafeas, чтобы упростить этот процесс.

3.2.1 GrafeasТеперь поговорим о Grafeas и его функциях. Grafeas также был разработан как открытый проект, и все коммиты доступны на GitHub. В какой части цепочки поставок программного обеспечения он находится? Он представляет все различные этапы. Он предназначен для хранения информации о коде, его источнике, людях, которые его развертывают, и времени коммита, а также результатов тестирования. Он может представлять каждый этап цепочки поставок программного обеспечения. CI/CD -- Основная ветка может сохранять все данные, связанные с сохранением образов, в Grafeas, включая результаты сканирования и другие сведения. Grafeas также поддерживает хранение пользовательских сертификатов безопасности образов, которые можно использовать для реализации механизма безопасности, запрещающего запуск образов без соответствующего сертификата в Kubernetes. Обычно используется вместе с Kritis.

Интеграция с Kubernetes — с помощью вебхука валидации pod можно отклонять все запросы к запуску образов, которые не прошли проверку подписи.

3.2.2 Риски, связанные с репозиториями образов

Образы, полученные из общедоступных репозиториев — обычно официальные образы, такие как nginx, проходят безопасное сканирование и считаются более безопасными, но не исключено наличие образов с уязвимостями.

  • Стратегия 1 — как только обнаружены образы с уязвимостями, команда безопасности должна немедленно уведомить команду разработки об обновлении до последней версии.

Образы, полученные из приватных репозиториев — образы из приватных репозиториев обычно создаются самой командой или используются как офлайн-репозитории. Здесь существует риск внутреннего атакующего, например, недовольный сотрудник, готовящийся уволиться, может заменить образ etcd на собственный и внедрить в него вредоносный код для удаления данных etcd etcdctl del "" --prefix.

# Зловредный Dockerfile, заменяющий оригинальный двоичный файл
# Dockerfile
FROM orgin
RUN update-ca-trust
RUN mv /usr/bin/org-binary /usr/bin/org-binary-renamed
COPY hack-binary /usr/bin/org-binary

# Зловредный Dockerfile, удаляющий данные etcd
# Поскольку kubeadm запускается с привилегированными правами, злоумышленник может легко удалить все файлы в директории etcd, заменив команду CMD
# Dockerfile
...
CMD [ "sh", "-c", "rm -rf /var/lib/etcd/*" ]
```- Стратегия 1 -- В этом случае необходимо самостоятельно обеспечивать безопасность образов, усиливая проверку md5sum и других метрик.
- Стратегия 2 -- Можно использовать подпись образов для обеспечения их безопасности, например, с помощью cosign для подписи образов.
- Стратегия 3 -- Избегать использования приватных репозиториев, которые позволяют без аутентификации отправлять образы. Все репозитории должны требовать аутентификации для отправки образов, например, при использовании Harbor следует включить функцию аутентификации.

### 3.3 Безопасность программ в образе

Безопасность программ, запущенных в образе — наша технология контейнеризации использует пространства имен ядра для изоляции, что в корне означает программную изоляцию. Поэтому существуют риски, такие как `escape` (выход из контейнера), и поэтому важно использовать надежное время выполнения контейнера, например, `gVisor`. Конечно, у нас есть множество вариантов.- Стратегия 1 — использование [gvisor](https://github.com/google/gvisor) в качестве времени выполнения контейнера — время выполнения контейнера является входной точкой для запуска необходимых программ, расположенных внутри песочницы. Каждый контейнер имеет два процесса: `Sentry`, который отвечает за обработку вызовов ядра внутри контейнера, и `Gofer`, который отвечает за доступ к файловой системе, работающий в ограниченном контейнере `seccomp`.

- Стратегия 2 — использование [kata](https://katacontainers.io/) в качестве времени выполнения контейнера — проект, зародившийся в сообществе OpenStack, для создания легковесных виртуальных машин. Позже он был принят сообществом контейнеров и стал проектом CNCF. Принцип работы заключается в использовании `kvm` для изоляции, где каждый контейнер представляет собой легковесную виртуальную машину. Это обеспечивает отличную изоляцию, но имеет недостаток в виде медленного времени запуска, так как требуется запуск виртуальной машины. Другими словами, каждый контейнер имеет собственное ядро для изоляции, что делает его очень безопасным.

- Стратегия 3 — использование [firecracker](https://github.com/firecracker-microvm/firecracker-containerd) в качестве времени выполнения контейнера — реализация firecracker похожа на работу kata.### 3.4 Примеры атак

#### 3.4.1 Атака через неправильное монтированиеАтака через монтирование файловой системы хоста в контейнер для выхода из контейнера. Например, можно смонтировать файл `/var/run/docker.sock` хоста в контейнер, что позволит контейнеру обращаться к Docker через API и использовать это для атаки на хост.

```bash
# Пример самого простого "утечки" контейнера Docker
$ docker run -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 -it centos /bin/bash
$ [root@40611890a749 /]# curl -s --unix-socket /var/run/docker.sock http://172.17.0.2:8080/containers/json
# вывод
[
    {
        "Id": "40611890a74960d37455c19f252ada510b50db35110e7a7780297c698ab76b34",
        "Names": ["/wizardly_moser"],
        "Image": "centos",
        "ImageID": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
        "Command": "/bin/bash",
        "Created": 1696676011,
        "Ports": [
            {
                "IP": "0.0.0.0",
                "PrivatePort": 8080,
                "PublicPort": 8080,
                "Type": "tcp"
            },
            {
                "IP": "::",
                "PrivatePort": 8080,
                "PublicPort": 8080,
                "Type": "tcp"
            }
        ],
        "Labels": {
            "org.label-schema.build-date": "20210915",
            "org.label-schema.license": "GPLv2",
            "org.label-schema.name": "CentOS Base Image",
            "org.label-schema.schema-version": "1.0",
            "org.label-schema.vendor": "CentOS"
        },
        "State": "running",
        "Status": "Up About a minute",
        "HostConfig": {
            "NetworkMode": "default"
        },
        "NetworkSettings": {
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "01be86c752174fbf8436b6974f78802f52ceaa6e2b91f96c934032f6ca8fa589",
                    "EndpointID": "3728c585e295bfedf81adb39b02c147ce6512e60ec79413ba539face73816f1a",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/var/run/docker.sock",
                "Destination": "/var/run/docker.sock",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]
    }
]

Подход таков

Разумеется, если мы можем получить доступ к контейнерам Docker через API, то и команда curl -s --unix-socket /var/run/docker.sock "http://172.17.0.2:8080/containers/create" -X POST -H "Content-Type: application/json" -d {...} может создать любой вредоносный контейнер для атаки```

3.4.2 notify_on_release атака

Использование функции notify_on_release cgroup v1 для атаки. Принцип этой атаки заключается в использовании функции notify_on_release cgroup v1, которая предназначена для уведомления родительского cgroup при освобождении cgroup. Эта функция используется для выполнения очистки родительского cgroup, например, освобождения ресурсов, но она также может быть использована для атак. Вкратце, функции, используемые для очистки, могут быть использованы как точки атаки.

3.5 Управление контейнерами

k8s runtime class -- используется для указания runtime контейнеров, например, можно указать, чтобы pod использовал runtime kata или gvisor, таким образом, можно гарантировать безопасность pod.

apiVersion: node.k8s.io/v1beta1
kind: RuntimeClass
metadata:
  name: gvisor
handler: runsc

# Указание runtime для pod
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  runtimeClassName: myclass

3.6 Безопасность пакетов программного обеспечения


### 3.7 Централизованный инструмент управления политиками

[Open Policy Agent(OPA)](https://www.openpolicyagent.org/) -- инструмент для создания политик для k8s с разных сторон, например, можно отклонить все запросы к запуску контейнеров, использующих образы, начинающиеся не с `linux.com/`, или отклонить все контейнеры, использующие образы с тегом `latest`, или отклонить все контейнеры, запускаемые под пользователем `root`. Таким образом, можно гарантировать безопасность контейнеров. [gatekeeper](https://github.com/open-policy-agent/gatekeeper-library/tree/c7bd62bf6a2694106519ad4c52dec99c05c2d29b/library) -- gatekeeper использует [OPA Constraint Framework](https://github.com/open-policy-agent/frameworks/tree/master/constraint) в качестве контроллера доступа (admission controller), все правила (policy), которые мы определяем, задаются в виде CRD-объекта.

```yaml
# Пример, ограничивающий запуск всех pod только при наличии метки
# Правила задаются с помощью языка rego
apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
  name: k8srequiredlabels
spec:
  crd:
    spec:
      names:
        kind: K8sRequiredLabels
        listKind: K8sRequiredLabelsList
        plural: k8srequiredlabels
        singular: k8srequiredlabels
      validation:
        # Схема для поля `parameters`
        openAPIV3Schema:
          properties:
            labels:
              type: array
              items: string
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package k8srequiredlabels
```        deny[{"msg": msg, "details": {"missing_labels": missing}}] {
          provided := {label | input.review.object.metadata.labels[label]}
          required := {label | label := input.parameters.labels[_]}
          missing := required - provided
          count(missing) > 0
          msg := sprintf("вы должны предоставить эти метки: %v", [missing])
        }

# После создания шаблона можно использовать его
# rule-label1.yaml
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequiredLabels
metadata:
  name: ns-require-label
spec:
  match:
    kinds:
     - apiGroups: [""]
        kinds: ["Namespace"]
  parameters:
    labels: ["gk-ns"]
# Чтобы применить правило к определенному namespace, можно использовать следующую команду
$ kubectl create -f rule-label1.yaml -n label-required-ns

3.8 лаборатория

3.8.1 Исследование компонентов безопасности

3.8.2 Попробуйте Trivy

sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy
# Сканирование образа knqyf263/vuln-image:1.2.3
trivy image knqyf263/vuln-image:1.2.3
``````log
# вывод
2023-07-27T00:33:44.811Z	INFO	Необходимо обновить базу данных
2023-07-27T00:33:44.811Z	INFO	Репозиторий базы данных: ghcr.io/aquasecurity/trivy-db
2023-07-27T00:33:44.812Z	INFO	Загрузка базы данных...
38.50 MiB / 38.50 MiB [--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 100.00% 14.70 MiB p/s 2.8s
2023-07-27T00:33:49.545Z	INFO	Сканирование уязвимостей включено
2023-07-27T00:33:49.546Z	INFO	Сканирование секретов включено
2023-07-27T00:33:49.546Z	INFO	Если сканирование медленное, попробуйте использовать '--scanners vuln' для отключения сканирования секретов
2023-07-27T00:33:49.546Z	INFO	Для более быстрого обнаружения секретов убедитесь, что вы используете рекомендации по ссылке: https://aquasecurity.github.io/trivy/v0.43/docs/scanner/secret/#recommendation
2023-07-27T00:33:56.692Z	INFO	Обнаруженная ОС: alpine
2023-07-27T00:33:56.692Z	INFO	Обнаружение уязвимостей Alpine...
2023-07-27T00:33:56.696Z	INFO	Количество языковых файлов: 2
2023-07-27T00:33:56.696Z	INFO	Обнаружение уязвимостей composer...
2023-07-27T00:33:56.697Z	INFO	Обнаружение уязвимостей cargo...
2023-07-27T00:33:56.702Z	WARN	Эта версия ОС больше не поддерживается дистрибутивом: alpine 3.7.1
2023-07-27T00:33:56.703Z	WARN	Обнаружение уязвимостей может быть недостаточным, так как обновления безопасности больше не предоставляются
```knqyf263/vuln-image:1.2.3 (alpine 3.7.1)Всего: 64 (UNKNOWN: 0, LOW: 1, MEDIUM: 25, HIGH: 19, CRITICAL: 19)
```diff
┌───────────────────────┬──────────────────┬──────────┬───────────────────┬───────────────┬──────────────────────────────────────────────────────────────┐
│        Библиотека     │ Уязвимость       │ Степень  │ Установленная верс │ Исправленная  │                            Заголовок                         │
├───────────────────────┼──────────────────┼──────────┼───────────────────┼───────┬───────┼──────────────────────────────────────────────────────────────┤
│ curl                  │ CVE-2018-14618   │ КРИТИЧЕС │ 7.61.0-r0          │ 7.61.1-r0     │ curl: переполнение NTLM-пароля через переполнение целого   │
│                       │                  │          │                   │               │ https://avd.aquasec.com/nvd/cve-2018-14618                   │
│                       ├──────────────────┤          │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
.  .  .
├───────────────────────┼──────────────────┼──────────┤                   │               ├──────────────────────────────────────────────────────────────┤
``` │ subversion-libs       │ CVE-2019-0203    │ ВЫСОКИЙ  │                   │               │ subversion: NULL-указатель в svnserve, приводящий к атаке от   │
  │                       │                  │          │                   │               │ имени неавторизованного удалённого клиента (DoS).
  │                       │                  │          │                   │               │ https://avd.  aquasec.  com/nvd/cve-2019-0203                    │
  │                       ├──────────────────┼──────────┤                   │               ├──────────────────────────────────────────────────────────────┤
  │                       │ CVE-2018-11782   │ СРЕДНИЙ │                   │               │ subversion: уязвимость DoS, триггерируемая удалённо в функции  │
  │                       │                  │          │                   │               │ svnserve 'get-deleted-rev'.
  │                       │                  │          │                   │               │ https://avd.  aquasec.  com/nvd/cve-2018-11782                   │
  ├───────────────────────┼──────────────────┤          ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
tar                   │ CVE-2018-20482   │          │ 1.  29-r1          │ 1.  31-r0      │ tar: бесконечный цикл чтения в функции sparse_dump_region в     │
  │                       │                  │          │                   │               │ файле sparse.  c.                                               │
  │                       │                  │          │                   │               │ https://avd.  aquasec.  com/nvd/cve-2018-20482                   │
  ├───────────────────────┼──────────────────┼──────────┼───────────────────┼───────────────┼───────────────────────────────────────────────────────────────┤com/nvd/cve-2018-20482                   │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │ │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                                                               │
  │                       │                  │          │                   │               │                       │                  │          │                   │└───────────────────────┴──────────────────┴──────────┴───────────────────┴───────────────┴──────────────────────────────────────────────────────────────┘php-app/composer.lock (composer)Общее количество: 8 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 8, CRITICAL: 0)  
┌───────────────────┬────────────────┬──────────┬───────────────────┬─────────────────────┬─────────────────────────────────────────────────────────────┐
│      Библиотека   │ Уязвимость     │ Степень  │ Установленная версия │ Исправленная версия │                            Заголовок                            │
├───────────────────┼────────────────┼──────────┼───────────────────┼─────────────────────┼─────────────────────────────────────────────────────────────┤
│ guzzlehttp/guzzle │ CVE-2016-5385  │ ВЫСОКИЙ  │ 6.2.0               │ 6.2.1, 4.2.4, 5.3.1 │ PHP: устанавливает переменную окружения на основе заголовка запроса прокси, предоставленного пользователем     │
│                   │                │          │                   │                     │ https://avd.aquasec.com/nvd/cve-2016-5385                   │
│                   ├────────────────┤          │                   ├─────────────────────┼─────────────────────────────────────────────────────────────┤
│                   │ CVE-2022-29248 │          │                   │ 7.4.3, 6.5.6        │ Guzzle — это клиент HTTP для PHP. Версии Guzzle до 6.5.6 и. . .
└───────────────────┴────────────────┴──────────┴───────────────────┴─────────────────────┴─────────────────────────────────────────────────────────────┘ │                   │                │          │                   │                     │ https://avd.aquasec.com/nvd/cve-2022-29248                  │
   ┴───────────────────┴────────────────┴──────────┴───────────────────┴─────────────────────┴─────────────────────────────────────────────────────────────┴│                   ├────────────────┤          │                   ├─────────────────────┼─────────────────────────────────────────────────────────────┤
  │                   │ CVE-2022-31042 │          │                   │ 7.4.4, 6.5.7        │ Guzzle — это открытая библиотека HTTP-клиента на PHP. В       │
  │                   │                │          │                   │                     │ уязвимых версиях. . .
  │                   │                │          │                   │                     │ https://avd.aquasec.com/nvd/cve-2022-31042                  │
  │                   ├────────────────┤          │                   │                     ├─────────────────────────────────────────────────────────────┤
  │                   │ CVE-2022-31043 │          │                   │                     │ Guzzle — это открытая библиотека HTTP-клиента на PHP. В       │
  │                   │                │          │                   │                     │ уязвимых версиях Author. . .
  │                   │                │          │                   │                     │ https://avd.aquasec.com/nvd/cve-2022-31043                  │
 │                   ├────────────────┤          │                   ├─────────────────────┼─────────────────────────────────────────────────────────────┤
  │                   │ CVE-2022-31090 │          │                   │ 7.4.5, 6.5.8        │ Guzzle — это расширяемая библиотека HTTP-клиента на PHP. В    │
  │                   │                │          │                   │                     │ уязвимых версиях `Authorization` заголовки на запросах. . .
 │                   │                │          │                   │                     │ https://avd.aquasec.com/nvd/cve-2022-31090                      │
  │                   ├────────────────┤          │                   │                     ├─────────────────────────────────────────────────────────────┤
  │                   │ CVE-2022-31091 │          │                   │                     │ Guzzle — расширяемый клиент HTTP для PHP. `Authorization` и    │
  │                   │                │          │                   │                     │ `Cookie` заголовки. . .
  │                   │                │          │                   │                     │ https://avd.aquasec.com/nvd/cve-2022-31091                      │
  ├───────────────────┼────────────────┤          ├───────────────────┼─────────────────────┼─────────────────────────────────────────────────────────────┤
  │ guzzlehttp/psr7   │ CVE-2022-24775 │          │ 1.5.2             │ 2.1.1, 1.8.4        │ guzzlehttp/psr7 — библиотека для работы с HTTP-сообщениями в   │
 │                   │                │          │                   │                     │ соответствии с PSR-7.   Версии до 1.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.Общее количество: 10 (UNKNOWN: 0, LOW: 1, MEDIUM: 2, HIGH: 3, CRITICAL: 4)  
┌────────────────┬─────────────────────┬──────────┬───────────────────┬───────────────┬─────────────────────────────────────────────────────────────┐
│    Библиотека  │    Уязвимость       │ Степень  │ Установленная верс │ Исправленная  │                            Заголовок                       │
├────────────────┼─────────────────────┼──────────┼───────────────────┼───────────────┼─────────────────────────────────────────────────────────────┤
│ ammonia        │ CVE-2019-15542      │ КРИТИЧЕС │ 1.9.0              │ 2.1.0         │ Несконтролируемая рекурсия в ammonia                        │
│                │                     │          │                   │               │ https://avd.aquasec.com/nvd/cve-2019-15542                  │
│                ├─────────────────────┼──────────┤                   ├───────────────┼─────────────────────────────────────────────────────────────┤
│                │ CVE-2021-38193      │ ВЫСОКИЙ  │                   │ 2.1.3, 3.1.0  │ Проблема была обнаружена в ammonia crate до версии 3.1.0     │
│                │                     │          │                   │               │ для Rust. . . .
│                │                     │          │                   │               │ https://avd.aquasec.com/                                        │
└────────────────┴─────────────────────┴──────────┴───────────────────┴───────────────┴─────────────────────────────────────────────────────────────┘```markdown
com/nvd/cve-2021-38193                  │
  ├────────────────┼─────────────────────┼──────────┼───────────────────┼───────────────┼─────────────────────────────────────────────────────────────┤
  │ openssl        │ CVE-2016-10931      │ КРИТИЧЕСКАЯ │ 0.8.3             │ 0.9.0         │ Неправильная проверка сертификата в openssl                │
  │                │                     │          │                 │              │ https://avd.aquasec.com/nvd/cve-2016-10931                  │
  ├────────────────┼─────────────────────┼──────────┼───────────────────┼───────────────┼─────────────────────────────────────────────────────────────┤
  │ rand_core      │ CVE-2020-25576      │ КРИТИЧЕСКАЯ │ 0.4.0             │ 0.3.1, 0.4.2 │ Проблема была обнаружена в crate rand_core до версии 0.4.2 │
  │                │                     │          │                 │              │ для Rust. . . .
  │                │                     │          │                 │              │ https://avd.aquasec.com/nvd/cve-2020-25576                  │
  ├────────────────┼─────────────────────┼──────────┼───────────────────┼───────────────┼─────────────────────────────────────────────────────────────┤
  │ remove_dir_all │ GHSA-mc8h-8q98-g5hr │ НИЗКАЯ    │ 0.5.1             │ 0.8.          │
``````markdown
0         │ Условие гонки, позволяющее следовать за ссылками и условие гонки времени проверки и времени использования (TOCTOU) в remove_dir_all. │
  ├────────────────┼─────────────────────┼──────────┼───────────────────┼───────────────┼─────────────────────────────────────────────────────────────┤
  │                │                     │          │                   │               │ https://github.com/advisories/GHSA-mc8h-8q98-g5hr           │
  ├────────────────┼─────────────────────┼──────────┼───────────────────┼───────────────┼─────────────────────────────────────────────────────────────┤
  │ smallvec       │ CVE-2019-15551      │ КРИТИЧЕСКИЙ │ 0.6.9             │ 0.6.10        │ Обнаружена проблема в crate smallvec до версии 0.6.10 для Rust. │
  │                │                     │          │                   │               │ https://avd.aquasec.com/nvd/cve-2019-15551                  │
  │                ├─────────────────────┼──────────┼───────────────────┼───────────────┼─────────────────────────────────────────────────────────────┤
``` │                │ CVE-2019-15554      │          │                   │               │ Обнаружена проблема в crate smallvec до версии 0.6.10 для Rust.  .  .
  │                │                     │          │                   │               │ https://avd.aquasec.com/nvd/cve-2019-15554                  │
  │                ├─────────────────────┼──────────┼───────────────────┼───────────────┼─────────────────────────────────────────────────────────────┤
  │                │ CVE-2021-25900      │          │                   │ 1.6.1, 0.6.14 │ Обнаружена проблема в crate smallvec до версии 0.6.14 │
  │                │                     │          │                   │               │ и 1. x. . .
  │                │                     │          │                   │               │ https://avd.aquasec.com/nvd/cve-2021-25900                  │
  │                ├─────────────────────┼──────────┤                   ├───────────────┼─────────────────────────────────────────────────────────────┤
  │                │ CVE-2018-25023      │ HIGH     │                   │ 0.6.13        │ Была обнаружена уязвимость в crate smallvec до версии 0.6.13 │
  │                │                     │          │                   │               │ для Rust. . . .
  │                │                     │          │                   │               │ https://avd.aquasec.com/nvd/cve-2018-25023                  │
 │                ├─────────────────────┼──────────┤                   │               ├─────────────────────────────────────────────────────────────┤
  │                │ GHSA-66p5-j55p-32r9 │ MEDIUM   │                   │               │ smallvec создаёт неинициализированное значение любого типа      │
  │                │                     │          │                   │               │ https://github.com/advisories/GHSA-66p5-j55p-32r9             │
  └────────────────┴─────────────────────┴──────────┴───────────────────┴───────────────┴─────────────────────────────────────────────────────────────┘
  ```bash
  # Проверка nginx-образа
  trivy image nginx
  ```# Проверка безопасного образа
trivy image alpine

4. Установка кластера K8S: вопросы безопасности

4.1 Обзор раздела

  • Планирование регулярных обновлений кластера и программного обеспечения
  • Усиление ядра (Kernel) с помощью различных инструментов
    • Уязвимости ядра
    • Скрипты для обнаружения уязвимостей ядра
    • Методы обработки уязвимостей ядра
  • Обсуждение вариантов аппаратного обеспечения для повышения безопасности
  • Реализация модулей безопасности Linux и соответствующих управляющих инструментов

4.2 Защита ядра

Уязвимости ядра — это проблема, которую только вы знаете, потому что при обнаружении уязвимости в ядре Linux у вас обычно есть только один вариант — обновить ядро. Однако обновление ядра также может привести к проблемам, таким как несовместимость с вашими приложениями. Поэтому перед обновлением ядра необходимо провести тщательные тесты, чтобы убедиться, что обновление не повлияет на ваши приложения. В противном случае можно использовать другие методы для устранения уязвимостей.

4.2.1 Скрипты для обнаружения уязвимостей ядра

Вы можете использовать базу данных CVE и соответствующие открытые скрипты для обнаружения уязвимостей в вашем ядре, например linux-exploit-suggester-2

# Клонирование репозитория
git clone https://github.com/jondonas/linux-exploit-suggester-2.git
```# Выполнение скрипта в каталоге скрипта
```./linux-exploit-suggester-2.pl

4.2.2 Методы устранения уязвимостей ядра

Отключение динамической загрузки модулей ядра — некоторые хакерские инструменты используют модули ядра для маскировки атакующих инструментов. Они могут загружать их таким образом, что они не видны в выводе команд ps или top, что значительно снижает вероятность обнаружения атаки. Эти атаки обычно следуют пути: уход от прав доступа -> динамическая загрузка вредоносного модуля ядра -> удаление следов вторжения. Отключение динамической загрузки модулей ядра может эффективно защитить от этого пути атаки. Администраторы могут отключить динамическую загрузку модулей ядра, установив параметр kernel.modules_disabled в 1.Включение случайного распределения адресов памяти в userspace — некоторые атаки используют фиксированные адреса памяти для получения доступа к чувствительным данным. Это позволяет злоумышленникам получить доступ к чувствительным данным без получения прав root. Случайное распределение адресов памяти в userspace (ASLR) — адаптивное случайное распределение адресов стека — позволяет программам каждый раз использовать разные адреса памяти для shared memory и адреса данных. Администраторы могут использовать инструмент sysctl для установки параметра kernel.randomize_va_space для включения ASLR.

  • 0 = Не включать
  • 1 = Включить, случайное назначение адреса shared memory
  • 2 = Включить, случайное назначение адреса shared memory и адреса данных### 4.3 Опции безопасности оборудования

Linux также может достигать целей безопасности, управляя некоторыми функциями оборудования:- NX(No eXecute) -- В современных процессорах эта функция обычно включена, чтобы предотвратить выполнение кода в областях стека и кучи, что помогает предотвратить атаки типа переполнения буфера. Это можно проверить командой cat /proc/cpuinfo | grep -i nx | wc -l, если результат не равен 0, значит функция включена. В более ранних процессорах можно использовать ExecShield для достижения аналогичного эффекта.

  • Vt-d Virtualization -- VT-D — это расширение для процессоров Intel, которое позволяет виртуальным машинам напрямую использовать устройства хоста, что называется "утечкой". Если узел не выполняет виртуальные машины, можно уменьшить риск, отключив эту функцию через настройки BIOS.
  • Trusted Platform Module (TPM) -- Это аппаратная функция, которая позволяет записывать контрольную сумму загрузочного диска и использовать её для сравнения в будущем, чтобы обнаружить угрозы безопасности.
  • Trusted Executed Technology (TXT) -- Работает в сочетании с TPM для изоляции адресов памяти виртуальных машин, что предотвращает доступ к чувствительным данным хоста со стороны злонамеренного ядра.
  • Secure computing mode (seccomp) -- Это механизм безопасности, который уменьшает поверхность атаки, ограничивая доступ к определённым системным вызовам API. Он имеет два режима:
    • Режим 1 -- режим недоверия, в котором программа может использовать только системные вызовы read(), write(), exit() и sigreturn(). - Режим 2 -- режим соответствия, в котором программа может использовать только системные вызовы, перечисленные в белом списке.### 4.3 Лаборатория

4.3.1 Лаборатория 1: Использование kube-bench для обнаружения рисков безопасности

# Установка kube-bench
wget https://github.com/aquasecurity/kube-bench/releases/download/v0.6.17/kube-bench_0.6.17_linux_amd64.deb
sudo dpkg -i kube-bench_0.6.17_linux_amd64.deb

# Начало проверки
sudo kube-bench

4.3.2 Лаборатория 2: Использование Open Policy Agent GateKeeper

# Клонирование проекта GateKeeper
$ git clone https://github.com/open-policy-agent/gatekeeper.git
$ cd gatekeeper
$ kubectl create -f deploy/gatekeeper.yaml

# Проверка установки GateKeeper
$ kubectl get pods -n gatekeeper-system
NAME                                                                                          READY   STATUS    RESTARTS   AGE
gatekeeper-audit-54b5f86d57-k6qnf                             1/1          Running   0                    37s
gatekeeper-controller-manager-5b96bd668-cxvs8                 1/1          Running   0                    37s
gatekeeper-controller-manager-5b96bd668-fhv6g                 1/1          Running   0                    37s
gatekeeper-controller-manager-5b96bd668-hvkp8                 1/1          Running   0                    37s

Создайте правило для отказа от создания namespace

$ cat < gk-ns-constraintTemplate.yaml apiVersion: templates.gatekeeper.sh/v1beta1 kind: ConstraintTemplate metadata: name: k8srequiredlabels spec: crd: spec: names: kind: K8sRequiredLabels validation: openAPIV3Schema: properties: labels: type: array items: string targets: - target: admission.k8s.gatekeeper.sh rego: | package k8srequiredlabels

    violation[{"msg": msg, "details": {"missing_labels": missing}}] {
      provided := {label | input.review.object.metadata.labels[label]}
      required := {label | label := input.parameters.labels[_]}
      missing := required - provided
      count(missing) > 0
      msg := sprintf("You must provide labels: %v", [missing])
    }

EOF# Создайте шаблон constraint, который не будет применяться, пока не будет создан объект constraint $ kubeclt apply -f gk-ns-constraintTemplate.yaml

Создайте объект constraint

$ cat < gk-ns-constraint.yaml apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sRequiredLabels metadata: name: ns-require-label spec: match: kinds: - apiGroups: [""] kinds: ["Namespace"] parameters: labels: ["gk-ns"] EOF

После выполнения этой команды все namespace должны иметь label gk-ns

$ kubectl apply -f gk-ns-constraint.yaml

Создайте namespace, этот запрос будет отклонен

$ kubectl create ns test-ns

Создайте namespace с label gk-ns: xxx, этот запрос будет разрешен

$ cat < test-ns.yaml apiVersion: v1 kind: Namespace metadata: name: test-с-ns labels: gk-ns: xxx EOF

Создание namespace, так как этот namespace имеет метку gk-ns: xxx, запрос может быть выполнен

$ kubectl apply -f test-ns.yaml

Создайте шаблон правила для изображения, этот шаблон правила будет использовать соответствующие поля registry из экземпляров для проверки легальности изображения при запуске pod

$ cat < gk-ns-constraintTemplate.yaml apiVersion: templates.gatekeeper.sh/v1beta1 kind: ConstraintTemplate metadata: name: k8srequiredregistry spec: crd: spec: names: kind: K8sRequiredRegistry validation: openAPIV3Schema: properties: image: type: string targets: - target: admission.k8s.gatekeeper.sh rego: | package k8srequiredregistry violation[{"msg": msg, "details": {"Registry must be": required}}] { input.review.object.kind == "Pod" some i image := input.review.object.spec.containers[i].image required := input.parameters.registry not startswith(image,required) msg := sprintf("Forbidden registry: %v", [image]) } EOF# Создание объекта ограничения, этот объект будет отклонять все pod, использующие изображения с registry.docker.io $ cat < gk-image-constraint.yaml apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sRequiredRegistry metadata: name: only-quay-images spec: match: kinds: - apiGroups: [""] kinds: ["Pod"] parameters: registry: "quay.io/" EOF

Создание pod, изображение которого начинается с registry.docker.io, поэтому этот запрос будет отклонен

$ cat < test-pod.yaml apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers:

  • name: test-pod image: registry.docker.io/nginx EOF

$ kubectl create -f test-pod.yaml


## 5. Безопасность kube-APIServer

### 5.1 Обзор раздела

- Ключевые параметры kube-apiserver
- Включение аудита kube-apiserver
- RBAC (Role-Based Access Control)
- Политики безопасности контейнеров (PSP, Pod Security Policies)
- Токены учетных записей службы (ServiceAccount Tokens)

### 5.2 Ключевые параметры kube-apiserverkube-apiserver является основным API-интерфейсом всего k8s, и все взаимодействие с k8s проходит через него, поэтому его безопасность является очень важной. Параметр `--advertise-address` определяет адрес kube-apiserver. Если этот параметр не указан, kube-apiserver будет использовать значение параметра `--bind-address`. Если и `--bind-address` не указан, возникает вопрос безопасности, связанный с атаками на kube-apiserver. Обычно kube-apiserver открыт только для внутренней сети, поэтому правильная настройка `--advertise-address` для ограничения доступа к kube-apiserver очень важна. Например, если сегмент адресов для доступа из интернета — 10.0.0.0/24, а сегмент адресов для управления кластером — 172.25.0.0/24, то значение параметра `--advertise-address` должно быть 172.25.0.x, а не 10.0.0.x или 0.0.0.0. Также следует избегать трехуровневого взаимодействия между сегментами 10.0.0.0/24 и 172.25.0.0/24 на уровне сети.

Параметр `--allow-privileged` контролирует возможность использования pod в привилегированном режиме. Значение по умолчанию — `False`. Если значение установлено в `True`, все pod могут использовать привилегированный режим. Если значение установлено в `False`, все pod не могут использовать привилегированный режим. Правила безопасности pod могут быть настроены с помощью pod security policy для более детального контроля над привилегированным режимом pod (pod в привилегированном режиме могут получить доступ к чувствительным данным на хосте).  - Вопросы для рассмотрения — можно ли установить значение false? По моему опыту, это невозможно, так как многие pod, такие как cni, требуют привилегированного режима для работы.
 - --authorization-mode — определяет режим авторизации. В настоящее время для настройки безопасности здесь нет необходимости, так как все поддерживаемые k8s режимы авторизации основаны на RBAC. Значение параметра --authorization-mode совпадает с настройками RBAC, обычно используется значение `Node,RBAC`. Node используется для авторизации kubelet, а RBAC — для авторизации доступа к kube-apiserver.
 - --client-ca-file — указывает физическое расположение CA-сертификата, используемого при инициализации кластера. Если этот параметр заменен злоумышленником или сертификат отсутствует, кластер может стать недоступным.
 - --enable-admission-plugins — включает плагины контроля доступа. Значение параметра совпадает с настройками Admission Controllers, обычно используется значение `NodeRestriction`. Существует множество типов плагинов контроля доступа, но рассмотрим несколько, связанных с безопасностью.
   - NodeRestriction — плагин контроля доступа, который ограничивает kubelet от удаления объектов node через kube-apiserver. Это предотвращает возможность удаления всех объектов node злоумышленником, который захватил kubelet на одном из узлов, что может привести к недоступности всего кластера.- AlwaysPullImages -- этот准入控制器用于要求pod的镜像总是从镜像仓库中拉取,忽略本地镜像。这有助于防止在某台机器上用恶意镜像替换正常镜像。
    - EventRateLimit -- этот准入控制器用于限制kube-apiserver每秒可以接受的事件数量,这有助于防止通过大量事件发起的攻击。
    - ImagePolicyWebhook -- этот准入控制器用于检查pod的镜像是否符合特定的安全要求。这将镜像的合法性验证委托给外部服务,通常与`Open Policy Agent GateKeeper`一起使用。
  - --enable-bootstrap-token-auth --当此参数设置为true时,这会增加kube-apiserver认证的风险,因为攻击者可以使用此令牌将恶意节点添加到集群中。因此,此参数应设置为false。
#### 5.2.1 Лабораторная работа: Включение аутентификации API сервераВыполните следующие действия:

- Используйте режим авторизации Node, RBAC и准入控制器 NodeRestriction

    ```yaml
    vi /etc/kubernetes/manifests/kube-apiserver.yaml
    # Убедитесь, что присутствуют следующие строки
    - --authorization-mode=Node,RBAC
    - --enable-admission-plugins=NodeRestriction
    - --client-ca-file=/etc/kubernetes/pki/ca.crt
    - --enable-bootstrap-token-auth=true
    ```

- Удалите ClusterRolebinding для system:anonymous, чтобы отменить права администратора для анонимных пользователей

    ```bash
    kubectl delete clusterrolebinding system:anonymous
    ```

#### 5.2.2 Лабораторная работа: ImagePolicyWebhook

Выполните следующие шаги:

1. Измените конфигурационный файл контроллера, чтобы изменить поведение по умолчанию с отказа на разрешение при отсутствии действующего сервера

    `vi /etc/kubernetes/epconfig/admission_configuration.json`

    ```json
    {
    "imagePolicy": {
        "kubeConfigFile": "/etc/kubernetes/epconfig/kubeconfig.yaml",
        "allowTTL": 50,
        "denyTTL": 50,
        "retryBackoff": 500,
        "defaultAllow": true
    }
    }
    ```

2. Измените конфигурационный файл kubeconfig для доступа к webhook серверу

    `vi /etc/kubernetes/epconfig/kubeconfig.yaml`

    Измените следующие строки

    ```yaml
    apiVersion: v1
    kind: Config
    clusters:
    - cluster:
        certificate-authority: /etc/kubernetes/epconfig/webhook.pem
        server: https://acme.local:8082/image_policy  # адрес webhook сервера
    name: bouncer_webhook
    # остальное опущено
    ```

3. Включите ImagePolicyWebhook

    `vi /etc/kubernetes/manifests/kube-apiserver.yaml`    ```yaml
    # Включите ImagePolicyWebhook
    - --enable-admission-plugins=NodeRestriction,ImagePolicyWebhook
    # Укажите файл конфигурации准入控制器
    - --admission-control-config-file=/etc/kubernetes/epconfig/admission_configuration.json
    # монтирование
    volumeMounts:
    - mountPath: /etc/kubernetes/epconfig
    name: epconfig
    # отображение volumes
    volumes:
    - name: epconfig
    hostPath:
    path: /etc/kubernetes/epconfig
    ```
    ```yaml
    # Включите ImagePolicyWebhook
    - --enable-admission-plugins=NodeRestriction,ImagePolicyWebhook
    # Укажите файл конфигурации准入控制器
    - --admission-control-config-file=/etc/kubernetes/epconfig/admission_configuration.json
    # монтирование
    volumeMounts:
    - mountPath: /etc/kubernetes/epconfig
      name: epconfig
    # отображение volumes
    volumes:
    - name: epconfig
      hostPath:
        path: /etc/kubernetes/epconfig
    ```4. Проверьте, работает ли настройка

    ```bash
    systemctl daemon-reload
    systemctl restart kubelet
    kubectl apply -f /cks/img/web1.yaml
    ```

### 5.3 Аудит логов

После атаки важно отследить действия злоумышленника. Если kube-apiserver не настроен на аудит, то отследить действия злоумышленника будет сложно. Поэтому включение аудита очень важно. Логи аудита имеют следующие уровни:

- None — не записывать события, соответствующие этому правилу.
- Metadata — записывать метаданные запроса (пользователь, время, ресурс, глагол и т.д.), но не записывать тело запроса или ответа.
- Request — записывать метаданные события и тело запроса, но не записывать тело ответа. Это не применимо для не-ресурсных запросов.
- RequestResponse — записывать метаданные события, тело запроса и тело ответа. Это не применимо для не-ресурсных запросов.

```console
# Создание директории audit-журналов
$ sudo mkdir -p /etc/kubernetes/audit
$ sudo bash -c 'cat <<EOF > /etc/kubernetes/audit/audit-policy.yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata # Обычно достаточно уровня Metadata для удовлетворения наших потребностей
EOF'

$ sudo mkdir -p /var/log/kubernetes/audit
$ sudo touch /var/log/kubernetes/audit/audit.log
# Переконфигурировать kube-apiserver, добавив красные части в этот файл
# Сохраните файл, и kube-apiserver перезапустится
# Если он не запускается в течение минуты, проверьте логи в /var/log/pod/kube-system_kube-apiserverxxxxx
$ sudo vi /etc/kubernetes/kube-apiserver.yaml
``````yaml
# Добавить в command
  - command:
    - kube-apiserver
    ...
    - --audit-policy-file=/etc/kubernetes/audit/audit-policy.yaml
    - --audit-log-path=/var/log/kubernetes/audit/audit.log
    - --audit-log-maxage=30 # Количество дней, в течение которых хранятся старые аудит-журналы
    - --audit-log-maxbackup=10 # Количество резервных копий audit, например, если audit.log достигнет bk 100 мегабайт, он будет переименован в audit202302022xxx.log
    - --audit-log-maxsize=100 # Размер audit.log, после достижения которого он будет переименован и сохранен
    ...
    volumeMounts:
    ...
    - mountPath: /etc/kubernetes/audit
      name: k8s-audit-config
      readOnly: true
    - mountPath: /var/log/kubernetes/audit
      name: k8s-audit-log
      readOnly: false
  volumes:
  ...
  - hostPath:
      path: /var/log/kubernetes/audit
      type: DirectoryOrCreate
    name: k8s-audit-log
  - hostPath:
      path: /etc/kubernetes/audit
      type: DirectoryOrCreate
    name: k8s-audit-config

5.4 RBAC (Разделение доступа на основе ролей)

Здесь мы не будем подробно описывать конкретные конфигурации, так как основные понятия clusterrole и role должны быть известны всем, кто имеет базовые знания Kubernetes.Наши рекомендации заключаются в том, чтобы не просто назначать роль clusterrole --cluster-admin определенному пользователю. Это может привести к тому, что пользователь получит полный доступ ко всем ресурсам кластера. Если токен этого пользователя будет украден, злоумышленник сможет использовать его для выполнения любых действий. Поэтому следует назначать пользователям права, соответствующие их реальным задачам. Например, если нашим операторам требуется управление только определенным пространством имен, мы можем назначить им роль role, которая будет ограничивать их доступ только к ресурсам этого пространства имен, а не предоставлять им роль clusterrole --cluster-admin.### 5.5 Политики безопасности подов (PSP, Pod Security Policies)

Политики безопасности подов используются для массового изменения параметров безопасности подов, удовлетворяющих определенным условиям. Например, все поды в пространстве имен ns1 должны иметь параметр drop_capability=CAP_SYS_ADMIN, даже если они запущены в режиме с повышенными привилегиями. Это позволяет предотвратить ситуацию, когда злоумышленник может получить полный доступ к хосту и тем самым сделать кластер недоступным. Обычно администраторы могут настроить политики безопасности подов для конкретных пространств имен.

Однако стоит отметить, что данная функция была отмечена как устаревшая в версии bk 1.21 Kubernetes и полностью удалена в версиях 1.25 и выше. Поэтому следует как можно скорее перейти на использование контроллеров доступа (Admission Controllers) для замены политик безопасности подов (PSP). В настоящее время это не является частью экзаменационного материала.

Примеры:

  1. Создание PSP

    apiVersion: policy/v1beta1
    kind: PodSecurityPolicy
    metadata:
    name: restrict-policy
    spec:
    privileged: false
    seLinux:
        rule: RunAsAny
    supplementalGroups:
        rule: RunAsAny
    runAsUser:
        rule: RunAsAny
    fsGroup:
        rule: RunAsAny
    volumes:
    - '*'
  2. Создание clusterrole с использованием PSP

    kubectl create clusterrole restrict-access-role --verb=use --resource=psp --resource-name=restrict-policy3. Создание serviceaccount

    kubectl create sa psp-denial-sa -n staging
  3. Привязка clusterrole к serviceaccount

    kubectl create clusterrolebinding dany-access-bind --clusterrole=restrict-access-role --serviceaccount=staging:psp-denial-sa
  4. Включение PSP

    vi /etc/kubernetes/manifests/kube-apiserver.yaml
    # Убедитесь, что присутствует следующий параметр:
    - --enable-admission-plugins=NodeRestriction,PodSecurityPolicy

5.6 Токен сервисного аккаунта (Service Account Token)

Этот токен используется для авторизации pod для доступа к kube-apiserver, поэтому его безопасность очень важна. Если токен утечет, злоумышленник сможет использовать его для выполнения любых действий. Поэтому рекомендуется регулярно обновлять токен, например, один раз в месяц. Если токен утечет, например, из-за неправильной конфигурации, злоумышленник может загрузить токен сервисного аккаунта с правами cluster-admin в вредоносный pod. В этом случае злоумышленник легко сможет получить доступ ко всем API группам kube-apiserver с помощью метода InClusterConfig(), что позволит ему легко удалять объекты node и другие объекты, что может нанести значительный ущерб кластеру.

# Создание шаблона
kubectl create sa correct-sa -n task2 --dry-run=client -o yaml > task2-temp-sa.yaml
# Убедитесь, что конфигурация соответствует следующему:
vi task2-temp-sa.yaml

У сервисного аккаунта есть опция automountServiceAccountToken, которая определяет, будет ли автоматически монтироваться secret в pod.С помощью этой опции можно контролировать процесс создания и привязки pod к сервисному аккаунту, чтобы автоматическое монтирование secret не происходило. В этом случае pod не будет иметь права на доступ к apiserver, что повышает безопасность бизнес-приложений.

Эту опцию можно настроить в конфигурации сервисного аккаунта и pod. Настройка в конфигурации сервисного аккаунта является глобальной, а настройка в конфигурации pod будет перекрывать глобальную настройку.

# task2-temp-sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: correct-sa
  namespace: task2
automountServiceAccountToken: false # Обратите внимание, что здесь должно быть false, по умолчанию true
# Создание sa
kubectl create -f task2-temp-sa.yaml

# Изменение pod
# Измените serviceAccountName: sa-not-exist на serviceAccountName: correct-sa
vi /tmp/task2/pod.yaml

```yaml
apiVersion: v1
kind: Pod
metadata:
  name: backend
  namespace: qa
spec:
  serviceAccountName: correct-sa
  containers:
  - image: nginx:1.9
    imagePullPolicy: IfNotPresent
    name: backend

Затем создайте pod и проверьте, можно ли с помощью токена service подключиться к k8s apiserver.

# Создайте pod
kubectl create -f /tmp/task2/pod.yaml

Автоматически смонтированный токен service позволяет выполнять множество действий, например получать secret.

k -n restricted get pod -o yaml | grep automountServiceAccountToken

curl https://kubernetes.default/api/v1/namespaces/restricted/secrets -H "Authorization: Bearer $(cat /run/secrets/kubernetes.io/serviceaccount/token)" -k

Yöntem 5.7 лабораторная работа

5.7.1 lab1 аудит логовСоздайте файл политики аудита логов

apiVersion: audit.k8s.io/v1
kind: Policy
omitStages:
- "RequestReceived"
rules:
- level: RequestResponse
    resources:
    - group: ""
    resources: ["namespaces"]

- level: Request
    resources:
    - group: ""
    resources: ["persistentvolumes"]
    namespaces: ["front-apps"]

- level: Metadata
    resources:
    - group: ""
    resources: ["secrets", "configmaps"]

- level: Metadata
    omitStages:
    - "RequestReceived"

Измените файл конфигурации kube-apiserver.yaml, чтобы включить политику аудита логов, указать путь к файлу политики аудита, путь к файлу логов и циклический период.

vi /etc/kubernetes/manifests/kube-apiserver.yaml
# Укажите путь к файлу политики аудита в pod
- --audit-policy-file=/etc/kubernetes/logpolicy/sample-policy.yaml

# Укажите путь к файлу логов
- --audit-log-path=/var/log/kubernetes/audit-logs.txt

# Укажите циклический период для логов
- --audit-log-maxage=10
- --audit-log-maxbackup=2

# Смонтируйте файлы политики аудита и логов
volumeMounts:
- mountPath: /etc/kubernetes/logpolicy/sample-policy.yaml
    name: audit
    readOnly: true
- mountPath: /var/log/kubernetes/audit-logs.txt
    name: audit-log
    readOnly: false
volumes:
- name: audit
    hostPath:
    path: /etc/kubernetes/logpolicy/sample-policy.yaml
    type: File
- name: audit-log
    hostPath:
    path: /var/log/kubernetes/audit-logs.txt
    type: FileOrCreate

Перезапустите API Server для проверки audit.log

cd /etc/kubernetes/manifests/
mv kube-apiserver.yaml ..
watch crictl ps # подождите, пока apiserver не исчезнет
truncate -s 0 /etc/kubernetes/audit/logs/audit.log
mv ../kube-apiserver.yaml .

cat audit.log | tail | jq

# показывает записи Secret
cat audit.log | grep '"resource":"secrets"' | wc -l
# проверяет, что записи секретов имеют уровень Metadata
cat audit.log | grep '"resource":"secrets"' | grep -v '"level":"Metadata"' | wc -l
```# Показывает записи уровня RequestResponse
cat audit.log | grep -v '"level":"RequestResponse"' | wc -l

# Проверяет, что записи уровня RequestResponse только для системных узлов system:nodes
cat audit.log | grep '"level":"RequestResponse"' | grep -v "system:nodes" | wc -l

6. Сети

6.1 Сетевая защита приложений

Внимание:

  1. Несохраняемый атакующий профиль — если у нашего приложения нет внешнего брандмауэра для защиты, то пути и методы атаки будут труднодоступны для отслеживания. В следующей схеме показано, как атакующий напрямую атакует хост в кластере, а затем использует этот хост для атаки других хостов в кластере. Администраторы могут с трудом определить полный путь атаки.

    bypassfirewall

  2. Брандмауэр — если мы рассматриваем весь кластер k8s как черный ящик, то каждый входной точке доступа следует как можно чаще проходить через брандмауэр. Брандмауэр может быть программным обеспечением, таким как firewalld, или аппаратным брандмауэром. Брандмауэры имеют достаточные возможности для записи логов, что позволяет легко отслеживать источник атаки и детализированные данные. С помощью правил брандмауэра можно легко соответствовать требованиям безопасности, например, запрещать доступ к порту 22 и т.д. bypassfirewall

  3. Сетевые угрозы безопасности k8s — на следующей схеме показано, как пользователь с левой стороны через сеть обращается к компоненту балансировки нагрузки, например, к nginx или аппаратному устройству f5, затем запросы распределяются к внутреннему ingress (на схеме используется envoy, но можно использовать другие опции, такие как nginx, которые мы здесь не обсуждаем), трафик до узла, если pod не находится на этом узле, CNI (на схеме используется calico) перенаправляет трафик на другие узлы, затем pod через сеть подключается к службе хранения, такой как ceph. В этом процессе можно увидеть множество сетевых соединений, каждое из которых может быть атаковано. bypassfirewall

  4. Разделение обязанностей по безопасности сети k8s — на следующей схеме показаны компоненты балансировки нагрузки, которые находятся вне кластера. Когда вы выбираете использование программного балансировщика нагрузки, такого как nginx или haproxy, вы можете выбрать использование iptables или ipvs для обеспечения безопасности. Конечно, вы можете не использовать никаких настроек и вместо этого настроить брандмауэр на более раннем этапе для выполнения различных настроек безопасности, как если бы вы использовали F5 в качестве балансировщика нагрузки.

    ![bypassfirewall](images/chapter-6-4.png)
1. Контроль сетевой безопасности с помощью k8s — мы можем использовать network policy для реализации, например, два следующих примера представляют собой политику, которая блокирует все входящие трафики, а другой фильтрует некоторые трафики. Эти политики применяются на уровне pod.

```yaml
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: deny-all # Имя политики
  namespace: prod-ns # Пространство имен, в котором применяется политика
spec:
  podSelector: {}
  policyTypes:
  - Ingress
```# Пример более сложной политики сети
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: deny-partial # Имя политики
  namespace: prod-ns # Пространство имен, в котором применяется политика
spec:
  podSelector:
    matchLabels:
      app: scooter # Объект, на который применяется политика, здесь это pod с app=scooter
      role: db # Объект, на который применяется политика, здесь это pod с role=db
  ingress: # Политика входящего трафика
  - from:
    - podSelector: # Разрешение трафика от pod с app=scooter, role=search
        matchLabels:
          app: scooter
          role: search
    - podSelector: # Разрешение трафика от pod с app=scooter, role=api
        matchLabels:
          app: scooter
          role: api
    - podSelector: # Разрешение трафика от pod с app=inventory, role=web
        matchLabels:
          app: inventory
          role: web
``````yaml
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: deny-all
  namespace: prod-ns
spec:
  podSelector:
    matchLabels:
      app: scooter
      role: db
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: scooter
          role: search
    - podSelector:
        matchLabels:
          app: scooter
          role: api
    - podSelector:
        matchLabels:
          app: inventory
          role: web

6.2 Лаборатория

6.2.1 Лаборатория 1 Настройка ingress с самоподписанным сертификатом

Этот урок позволяет нам добавить TLS-сертификат к ingress, используя самоподписанный сертификат для выполнения этого упражнения. Для проверки конечного результата мы используем curl -k, чтобы доверять этому сертификату. В производственной среде мы можем использовать Let's Encrypt для выдачи сертификатов, и тогда нам больше не потребуется curl -k для игнорирования проверки сертификата.

# Развертывание ingress
$ kubectl apply -f ../src/cks/chapter-6/ingress-deploy.yaml

Проверка результатов

$ kubectl -n ingress-nginx get pod --field-selector=status.phase=Running

Вывод

NAME READY STATUS RESTARTS AGE ingress-nginx-controller-7f97f76d55-vxrw8 1/1 Running 1 (84s ago) 10m

$ kubectl get svc -n ingress-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx-controller LoadBalancer 10.233.19.143 80:32077/TCP,443:30022/TCP 6m4s ingress-nginx-controller-admission ClusterIP 10.233.38.200 443/TCP 6m4s

$ cat <<EOF > ingress-instance.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: tester
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  ingressClassName: nginx
  rules:
    - host: example.io
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: tester
                port:
                  number: 80
EOF$ kubectl create -f ingress-instance.yaml

# Проверка работоспособности ingress
$ kubectl get ing
# Вывод
NAME     CLASS   HOSTS        ADDRESS   PORTS   AGE
tester   nginx   example.io             80      23s

# Создание pod nginx для тестирования
$ kubectl create deployment tester --image nginx:alpine
# Развертывание сервиса
$ kubectl expose deployment tester --port=80

# Проверка работы всего процесса
$ curl http://10.0.0.10:32077 -H'Host: example.io'
# Вывод
<!DOCTYPE html>
<html>
<head>
<title>Добро пожаловать в nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Добро пожаловать в nginx!</h1>
<p>Если вы видите эту страницу, веб-сервер nginx успешно установлен и работает. Требуется дополнительная настройка.</p>

<p>Для получения онлайн-документации и поддержки обратитесь к <a href="http://nginx.org/">nginx.org</a>.<br/>
Коммерческая поддержка доступна на <a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Спасибо за использование nginx.</em></p>
</body>
</html>

# Выдача сертификата
$ openssl req -x509 -newkey rsa:2048 -keyout example.key -out example.out -days 365 -nodes -subj "/C=US/ST=Ohio/L=Columbus/O=LFtraining/CN=example.io"
# Создание секрета
$ kubectl create secret tls example --key="example.key" --cert="example.out"# Обновление правил ingress
$ kubectl delete -f ingress-instance.yaml
$ cp ingress-instance.yaml ingress-instance-tls.yaml
# vi ingress-instance-tls.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: tester
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - example.io
    secretName: example
  rules:
    - host: example.io
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: tester
                port:
                  number: 80
      https:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: tester
                port:
                  number: 443# Проверка всего процесса, обратите внимание, что нам нужно использовать порт 30022 для Ingress https
$ curl http://example.io:30022 -k --resolve example.io:30022:10.0.0.10
# Вывод
<!DOCTYPE html>
<html>
<head>
<title>Добро пожаловать в nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Добро пожаловать в nginx!</h1>
<p>Если вы видите эту страницу, веб-сервер nginx успешно установлен и работает. Требуется дальнейшая настройка.</p>

<p>Для получения онлайн-документации и поддержки обратитесь к <a href="http://nginx.org/">nginx.org</a>.<br/>
Коммерческая поддержка доступна на <a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Спасибо за использование nginx.</em></p>
</body>
</html>

7. Рассмотрение рабочих нагрузок

7.1 Обзор раздела

  • Статический анализ
  • Динамический анализ
  • Проактивные меры защиты

7.2 Защита перед запуском контейнеров в рабочей среде

Ранее мы обсудили некоторые риски в цепочке поставок образов. Теперь рассмотрим действия, которые соответствуют стандартам безопасности перед запуском контейнера в рабочей среде. Как показано на следующем рисунке, образ должен пройти два этапа проверки — статический и динамический анализ — перед тем, как быть загруженным в репозиторий образов и использованным.

bypassfirewall#### 7.2.1 Статический анализ

Статический анализ (Static Analysis) представляет собой анализ контейнерного образа до запуска контейнера для выявления потенциальных угроз безопасности, таких как наличие вредоносного ПО, небезопасного ПО или небезопасных конфигураций. Обычно статический анализ можно выполнить с помощью следующих инструментов:- docker-bench-security -- Docker поддерживает Docker Bench, инструмент, похожий на kube-bench, который можно использовать для анализа образов без необходимости быть частью Kubernetes-кластера. Этот инструмент называется docker-bench-security. Вывод и проверка аналогичны, но не включают рекомендации по исправлению каждой проблемы. Инструмент Docker Bench отстает на несколько версий от CIS и не обновляется с тех пор, как Mirantis взяла на себя управление Docker и пообещала продолжить поддержку открытых проектов.

  • clair -- Этот инструмент разработан Quay.io, компанией, принадлежащей Red Hat. Clair состоит из двух частей и имеет три функциональные области:
    • Индексация -- Первый этап начинается с списка, предоставленного Clair. Clair использует эту информацию для загрузки слоев образа и последующего сканирования каждого слоя, что приводит к созданию IndexReport.
    • Сопоставление -- Второй этап включает сравнение IndexReport с известными уязвимостями. Эти уязвимости регулярно загружаются. После запуска Clair может потребоваться некоторое время для загрузки данных для сопоставления. (В Китае загрузка может быть медленной)
  • Обнаружение уязвимостей -- Третий этап включает обнаружение уязвимостей в IndexReport. В зависимости от настроек уведомлений, они могут быть выведены на экран, а также можно настроить действия для соответствующего обработки.- trivy -- Это простой и всеобъемлющий инструмент для сканирования уязвимостей в контейнерах. При каждом запуске trivy он загружает полный список уязвимостей для анализа. Поскольку этот список загружается из Alpine Linux, он наиболее полный при анализе Alpine и RHEL/CentOS. В больших средах вы можете настроить собственный сервер vuln-list и использовать trivy в клиентском режиме, передав адрес и порт сервера. Это позволяет избежать загрузки базы данных и ссылаться на публичную базу данных на сервере. Это также полезно для работы в изолированных средах, где список уязвимостей загружается на внешней системе, проверяется и затем вручную устанавливается на защищенных серверах. Trivy также легко интегрируется с CI (также является материалом для экзаменов).#### 7.2.2 Динамический анализПосле завершения статического сканирования образа следующий этап — это "динамический анализ" (динамический анализ), например, проверка доступа к чувствительным системным вызовам (system call api). Для этого можно использовать инструменты, такие как perf и ftrace, которые помогают отслеживать и анализировать процессы во время выполнения. Программа Tracee может использоваться для аналогичного отслеживания с использованием eBPF для наблюдения за системными вызовами и событиями. Она также может использоваться для просмотра используемой процессом памяти и извлечения двоичных файлов для полного понимания того, что обрабатывает программа.Как реализовать динамический анализ в k8s — мы можем использовать мутационные веб-хуки (для pod), добавляя init-контейнер в YAML каждого запускаемого pod для выполнения динамического сканирования перед основным запуском. Ниже приведен пример конфигурации мутационного веб-хука, который направляет создание pod к службе с DNS-именем my-webhook.example.com. В соответствующей службе мы используем client-go для получения pod и добавления init-контейнера для выполнения бинарного файла trivy. Если результат выполнения содержит ошибки, создание pod будет прервано. Однако такой подход безопасности может привести к дополнительным затратам на ресурсы.
Пример мутационного веб-хука, который будет соответствовать созданию любого ресурса (но не подресурсов) с меткой foo: bar:

apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
webhooks:
- name: my-webhook.example.com
  objectSelector:
    matchLabels:
      foo: bar
  rules:
  - operations: ["CREATE"]
    apiGroups: ["*"]
    apiVersions: ["*"]
    resources: ["*"]
    scope: "*"

Tracee — это инструмент, который позволяет в реальном времени отслеживать системные вызовы и события ядра. Хотя все операции будут отслеживаться, вы можете использовать grep для уменьшения области до конкретного pod. Отображаемая информация включает точное время, uts_name, UID, PID, код возврата, событие и параметры.Falco — это более крупный и полный фреймворк, который включает несколько компонентов для отслеживания системных вызовов и поддерживает создание специфических правил для конкретных контейнеров. Он также позволяет более детализированный анализ, например, когда контейнер записывает или читает ключевые директории, такие как /usr/bin, /etc/, или когда контейнер запускает команды, такие как ssh, scp. Если контейнер нарушает правила, вы можете выводить сообщения в лог или вызывать определенные API через gRPC. В этом случае эти сообщения могут быть приняты на платформу для приема и дальнейшей обработки сообщений.bypassfirewall

7.2.3 Активная защита (изменение контейнеров)Сотрудники по безопасности хотят, чтобы контейнеры не могли быть изменены после запуска, но на практике это сложно реализовать. Например, контейнер с MySQL должен иметь возможность записывать данные в файл data, который подвешен в соответствующей директории, а также записывать binlog в соответствующий каталог. Конечно, мы можем сделать слой контейнера в k8s read-only, но возможно, что для активной защиты потребуется более глубокий уровень. Например, если контейнер обращается к API fork() system call, это не соответствует нашим требованиям безопасности, и такой запрос должен быть отклонен. К счастью, мы можем использовать следующие инструменты для реализации этой защиты.

  • seccomp — Основная идея заключается в обеспечении безопасности путем ограничения доступных для приложения системных вызовов (system calls). В ранних версиях приложения, использующие seccomp, могли использовать только Yöntemler 4 системных вызова: read(), write(), exit(), и sigreturn(). В более поздних версиях, с использованием технологии ebpf, стало возможным ограничивать доступ к системным вызовам с помощью строковых выражений. В контексте Kubernetes (k8s) при нарушении правил seccomp контейнер (pod) будет находиться в состоянии CrashLoopBackoff.

  • selinux — SELinux был разработан Американским агентством национальной безопасности (National Security Agency) при участии компании Tresys.Компания Red Hat также была одним из партнёров, помогая в разработке и интеграции программного обеспечения для использования в правительственных и военных приложениях. SELinux является важной частью RHEL и имеет широкую базу пользователей. В своей работе SELinux представляет собой набор правил безопасности, которые определяют, какие процессы могут иметь доступ к файлам, директориям, портам и другим объектам на системе. Поскольку все объекты в Linux являются некоторым типом "файла", а все действия являются некоторым типом "процесса", SELinux может контролировать все аспекты системы.

  • AppArmor — (экзаменационный материал) AppArmor представляет собой альтернативный LSM (Linux Security Module) для SELinux. Поддержка AppArmor была включена в Linux ядро с Yöntem 2006 года. Он используется в дистрибутивах SUSE, Ubuntu и других. AppArmor дополняет традиционную модель UNIX DAC (discretionary access control) за счёт предоставления обязательного доступного контроля (MAC). В дополнение к ручному определению конфигурационных файлов, AppArmor включает режим обучения, в котором нарушения конфигурационных файлов регистрируются, но не блокируются. Затем на основе типичного поведения программы этот журнал можно преобразовать в конфигурационный файл.

    • Дополняет недостатки DAC (Unix discretionary access control)
    • Основная идея реализации через MAC (mandatory access control)
    • С версии Linux ядра mainline 2.6.36 AppArmor был включен в Linux ядро. AppArmor загрузка проверки:```console $ sudo aa-status модуль AppArmor загружен. загружено 32 профиля. 32 профиля находятся в режиме enforce. /snap/snapd/18357/usr/lib/snapd/snap-confine /snap/snapd/18357/usr/lib/snapd/snap-confine//mount-namespace-capture-helper /snap/snapd/19457/usr/lib/snapd/snap-confine /snap/snapd/19457/usr/lib/snapd/snap-confine//mount-namespace-capture-helper /usr/bin/man /usr/lib/NetworkManager/nm-dhcp-client.action /usr/lib/NetworkManager/nm-dhcp-helper /usr/lib/connman/scripts/dhclient-script /usr/lib/snapd/snap-confine /usr/lib/snapd/snap-confine//mount-namespace-capture-helper /{,usr/}sbin/dhclient cri-containerd.apparmor.d lsb_release man_filter man_groff nvidia_modprobe nvidia_modprobe//kmod snap-update-ns.lxd snap.lxd.activate snap.lxd.benchmark snap.lxd.buginfo snap.lxd.check-kernel snap.lxd.daemon snap.lxd.hook.configure snap.lxd.hook.install snap.lxd.hook.remove snap.lxd.lxc snap.lxd.lxc-to-lxd snap.lxd.lxd snap.lxd.migrate snap.lxd.user-daemon tcpdump 0 профилей находятся в режиме complain. 0 профилей находятся в режиме kill. 0 профилей находятся в режиме unconfined. 10 процессов имеют определённые профили. 10 процессов находятся в режиме enforce. /usr/local/bin/kube-scheduler (5312) cri-containerd.apparmor.d /usr/local/bin/kube-apiserver (5335) cri-containerd.apparmor.d /usr/local/bin/kube-controller-manager (5354) cri-containerd.apparmor.d /usr/local/bin/etcd (5384) cri-containerd.apparmor.d /sbin/tini (6699) cri-containerd.apparmor.d /code/calico-typha (6716) cri-containerd.apparmor.d /code/apiserver (7380) cri-containerd.apparmor.d /code/apiserver (7532) cri-containerd.apparmor.d /usr/bin/kube-controllers (7624) cri-containerd.apparmor.d /usr/local/bin/operator (8161) cri-containerd.apparmor.d 0 процессов находятся в режиме complain. 0 процессов не ограничены, но имеют определённые профили. 0 процессов находятся в режиме mixed. 0 процессов находятся в режиме kill.

7.3 Лабораторная

7.3.1 lab1-trivy

Использование trivy в экзаменационных и реальных сценариях включает три основных шага:

# Получение имени образа
kubectl get pod XXXX -n kamino -o yaml | grep image
# Сканирование образа
trivy imagename | grep (HIGH|CRITICAL)
trivy nginx:1.16.1-alpine | grep -E 'CVE-2020-10878|CVE-2020-1967'
# Удаление pod
kubectl delete po XXXX

Полный эксперимент включает запуск двух pod с использованием образов nginx:latest и alpine:latest в namespace chapter-7, а затем сканирование их образов с помощью trivy.

# Создание namespace
kubectl create ns chapter-7

cat <<EOF > chapter7-pod1.yaml
apiVersion: v1
kind: Pod
metadata:
  name: chapter7-pod1
  namespace: chapter-7
spec:
  containers:
  - name: chapter7-container1
    image: nginx
EOF

cat <<EOF > chapter7-pod2.yaml
apiVersion: v1
kind: Pod
metadata:
  name: chapter7-pod2
  namespace: chapter-7
spec:
  containers:
  - name: chapter7-container2
    image: alpine
EOF

kubectl create -f chapter7-pod1.yaml
kubectl create -f chapter7-pod2.yaml

image_list=`kubectl get po -n chapter-7 --output=custom-columns="IMAGE:.spec.containers[*].image" | sed -n '1!p'`
for i in $image_list; do trivy image --skip-db-update -s 'HIGH,CRITICAL' $i; done
2023-08-03T00:56:07.143Z	INFO	Включен сканирование уязвимостей
2023-08-03T00:56:07.143Z	INFO	Включен сканирование секретов
2023-08-03T00:56:07.143Z	INFO	Для ускорения сканирования используйте '--scanners vuln' для отключения сканирования секретов
2023-08-03T00:56:07.143Z	INFO	Для более быстрого сканирования секретов, см. https://aquasecurity.github.io/trivy/v0.43/docs/scanner/secret/#recommendation
2023-08-03T00:56:10.327Z	INFO	Обнаруженная операционная система: debian
2023-08-03T00:56:10.327Z	INFO	Сканирование уязвимостей Debian...
2023-08-03T00:56:10.351Z	INFO	Количество файлов на языках: 0

nginx (debian 12.1)
``````markdown
┌───────────────┬────────────────┬──────────┬───────────────────┬───────────────┬───────────────────────────────────────────────────────────┐
│    Библиотека    │ Уязвимость    │ Степень серьезности │ Установленная версия │ Исправленная версия │                           Заголовок                           │
├───────────────┼────────────────┼──────────┼───────────────────┼───────────────┼───────────────────────────────────────────────────────────┤
│ libde265-0    │ CVE-2023-27103 │ ВЫСОКИЙ  │ 1.0.11-1           │               │ В версии Libde265 1.0.11 обнаружено наличие переполнения буфера кучи через ...                                            │
│               │                │          │                   │               │ https://avd.aquasec.com/nvd/cve-2023-27103                │
├───────────────┼────────────────┤          ├───────────────────┼───────────────┼───────────────────────────────────────────────────────────┤
│ libldap-2.5-0 │ CVE-2023-2953  │          │ 2.5.13+dfsg-5     │               │ Dereferencing null pointer в функции ber_memalloc_x       │
│               │                │          │                   │               │ https://avd.aquasec.com/nvd/cve-2023-2953                 │
└───────────────┴────────────────┴──────────┴───────────────────┴───────────────┴───────────────────────────────────────────────────────────┘

Тип документа для перевода: markdown Язык исходного текста: английский Язык финального текста: русский └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘├───────────────┼────────────────┤ ├───────────────────┼───────────────┼───────────────────────────────────────────────────────────┤ │ perl-base │ CVE-2023-31484 │ │ 5.36.0-7 │ │ CPAN.pm до версии 2.35 не проверяет сертификаты TLS при │ │ │ │ │ │ │ скачивании дистрибутивов по протоколу HTTPS. │ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2023-31484 │ └───────────────┴────────────────┴──────────┴───────────────────┴───────────────┴───────────────────────────────────────────────────────────┘ 2023-08-03T00:56:11.019Z INFO Сканирование уязвимостей включено 2023-08-03T00:56:11.019Z INFO Сканирование секретов включено 2023-08-03T00:56:11.019Z INFO Если ваше сканирование медленное, попробуйте использовать '--scanners vuln', чтобы отключить сканирование секретов 2023-08-03T00:56:11.019Z INFO Для более быстрого обнаружения секретов, пожалуйста, посмотрите https://aquasecurity.github.io/trivy/v0.43/docs/scanner/secret/#recommendation 2023-08-03T00:56:14. 200Z INFO Обнаруженная ОС: alpine 2023-08-03T00:56:14. 200Z INFO Обнаружение уязвимостей Alpine... 2023-08-03T00:56:14. 204Z INFO Количество языковых файлов: 0 (alpine 3.18.2)Общее: 0 (CRITICAL: 0, КРИТИЧЕСКИЙ: 0)


#### 7.3.2 lab2-apparmor

См. <https://kubernetes.io/ru/docs/tutorials/security/apparmor/> для полного примера.

Используйте образ `nginx` для создания pod в namespace -- chapter-7, затем создайте правило apparmor, которое отменяет любые записи этого pod.

```bash
# Обратите внимание, что если у вас есть несколько узлов, вам нужно выполнить эту команду на каждом узле, если вы не указали nodeSelector при запуске pod.
sudo bash -c 'cat <<EOF > /etc/apparmor.d/chapter7-profile1
#include <tunables/global>
profile k8s-apparmor-chapter7-pod3-deny-write flags=(attach_disconnected) {
  #include <abstractions/base>

  file,

  # Отменяет все записи файлов.
  deny /** w,
}
EOF'

Вышеуказанное deny /** w означает отмену всех записей файлов, более подробная синтаксис в: https://gitlab.com/apparmor/apparmor/-/wikis/QuickProfileLanguage#rule-modifiers, например: deny /path/to/file2, w означает отмену записи в /path/to/file2, без журналирования

cat <<EOF > chapter7-pod3.yaml
apiVersion: v1
kind: Pod
metadata:
  name: chapter7-pod3
  namespace: chapter-7
  annotations:
    container.apparmor.security.beta.kubernetes.io/chapter7-container3: localhost/k8s-apparmor-chapter7-pod3-deny-write # Добавьте эту строку, этот аннотация указывает на загрузку соответствующего профиля apparmor.
spec:
  containers:
  - name: chapter7-container3
    image: nginx
EOF

kubectl create -f chapter7-pod3.yaml

8. Обнаружение проблем

8.1 Цикл жизни атакиbypassfirewall -侦察/侦查阶段 -- атакующий использует различные методы для исследования цели, например сканирование портов,探测服务等,甚至可能是攻击者直接通过请 IT 人员喝酒聊天来套取必要信息, для чего это делается, потому что он должен понять топологию всего системы и версию компонентов, эти данные являются основой для последующих атак. Чем полнее этот этап, тем выше вероятность успеха атаки. Например, если атакующий узнает, что вся среда использует cgroup v1, он попытается использовать notify_on_release для атаки по установке контейнеров, обычно этот узел легко может быть обнаружен.

  • контроль/控制 -- как только необходимая информация будет получена, можно начать контроль над целью. В этом этапе атакующий использует различные методы для внедрения атакующих инструментов и т.д., по мере того, как увеличивается количество контролируемых хостов, атака становится все труднее обнаружить.

  • достижение цели/目标达成 -- достижение определенных целей, например, получение определенных конфиденциальных данных или разрушение определенных служб. В этом этапе атакующий стремится максимально глубоко проникнуть в систему, например, атакующий может получить доступ к определенным конфиденциальным данным, контролируя определенные pod, или разрушить определенные службы, контролируя определенные podkill chain — детализация жизненного цикла атаки — мы детализируем в Yöntemlerini, böylece hedefin kontrolü artar.

  • цель ulaşımı/目标达成 -- belirli hedeflere ulaşma, örneğin belirli gizli verileri elde etme veya belirli hizmetleri yok etme. Bu aşamada saldıran kişi, sistem içine daha derine girmeyi amaçlar, örneğin belirli gizli verileri kontrol ederek belirli pod'ları veya belirli hizmetleri yok etmek için belirli pod'ları öldürme zinciri — saldırganın yaşam döngüsü detayları — bizi yedi adımda detaylandırır.bypassfirewall1. reconnaissance — ранее уже было описано, повторять здесь не будем

  1. weaponization/оружейная подготовка — оружейная подготовка означает, что злоумышленник упаковывает инструменты атаки в исполняемые файлы, например, злоумышленник может упаковать инструменты атаки в docker-образ, а затем запустить его с помощью команды docker run, что позволяет злоумышленнику использовать его в различных средах. Также инструменты атаки могут быть упакованы в файл PDF и отправлены по электронной почте целевому пользователю. При открытии этого файла PDF инструменты атаки будут запущены, что позволит злоумышленнику получить контроль над хостом пользователя.
  2. delivery/передача — передача означает, что злоумышленник передает оружейно подготовленные инструменты атаки целевому пользователю, например, злоумышленник может отправить файл по электронной почте целевому пользователю или использовать другие методы передачи. В этом этапе злоумышленник должен учитывать, как заставить целевого пользователя открыть этот файл, например, злоумышленник может использовать социальную инженерию, чтобы заставить пользователя открыть файл, например, отправить электронное письмо с файлом PDF. Как только файл будет открыт, злоумышленник сможет перейти к этапу Exploitation. Или же атакующий может внедрить программу атаки на USB-устройство, которое затем будет подключено к хосту пользователя.Как только USB-устройство будет подключено, злоумышленник сможет получить контроль над хостом пользователя.
  3. Exploitation/эксплуатация — как только оружейно подготовленные инструменты атаки попадают на целевой хост, злоумышленник может начать эксплуатацию, например, злоумышленник может использовать эксплуатацию для получения прав root на целевом хосте, что позволит злоумышленнику получить контроль над хостом.
  4. Installation/установка вредоносного ПО — как только эксплуатация удачно завершена и злоумышленник получил права root, он может установить вредоносное ПО, например, злоумышленник может установить бэкдор, что позволит ему получать доступ к целевому хосту в любое время.
  5. Command and Control/управление — как только вредоносное ПО установлено, злоумышленник может управлять целевым хостом, например, злоумышленник может использовать вредоносное ПО для управления хостом, например, злоумышленник может использовать вредоносное ПО для получения конфиденциальной информации с хоста или для нарушения работы сервисов на хосте.
  6. Actions on Objectives/достижение целей — как только злоумышленник получил контроль над целевым хостом, он может достичь своих целей, например, злоумышленник может использовать контроль над хостом для получения конфиденциальной информации с хоста или для нарушения работы сервисов на хосте. ### 8.2 Стратегии реагирования на атаки- Хорошая стратегия реагирования на утечку данных — при обнаружении утечки конфиденциальных данных компания должна иметь четкий алгоритм действий. Например, при обнаружении утечки конфиденциальных данных следует немедленно оповестить соответствующих лиц, затем провести анализ утечек, выявить причины утечки, очистить утечку данных и наконец устранить причины утечки. В этом процессе должны быть задействованы специальные лица, а не все сотрудники, чтобы избежать снижения эффективности и ошибок.
  • Периодическое резервное копирование — мы должны определить регулярное резервное копирование, например, для etcd базы данных k8s, а также регулярно проводить тренировки по восстановлению после катастрофы, чтобы гарантировать быстрое восстановление в случае катастрофы.
  • Экстренная команда реагирования — компания должна создать экстренную команду реагирования, которая будет специализироваться на реагировании на утечку конфиденциальных данных, чтобы гарантировать быстрое реагирование при утечке конфиденциальных данных, а не заставлять всех сотрудников реагировать, что может привести к снижению эффективности и ошибкам.
  • Юридические меры реагирования — в зависимости от уровня утечки информации иногда может потребоваться вмешательство полиции, но разные страны имеют разные подходы.Например, в Китае нет четких правил, определяющих, когда следует вызвать полицию при утечке данных, в то время как в США разные уровни утечек могут требовать отчетности в ФБР и другие органы. Поэтому при реагировании на утечку данных важно знать местные законы и регламенты, чтобы лучше подготовиться к таким ситуациям.### 8.3 Системы обнаружения вторжений

Системы обнаружения вторжений:

  • Системы обнаружения вторжений на хостах/Host Intrusion Detection Systems (HIDS) — мы можем использовать HIDS-инструменты для обнаружения вторжений, они периодически выполняют сканирование на локальных узлах для обнаружения вторжений, например, открытыми являются Tripwire и OSSEC
  • Системы обнаружения вторжений на сети/Network Intrusion Detection Systems (NIDS) — например, SNORT и Suricata

AI-инструменты против вторжений: с помощью AI можно обнаруживать вторжения, как если бы это было противостояние системы, AI будет реагировать быстрее, чем человек, после обучения эти инструменты могут автоматически обнаруживать вторжения, например:

9. Советы для сдачи экзамена

Используйте k вместо kubectl, чтобы сократить количество нажатий клавиш.

alias k=kubectl

Другие полезные советы:- Используйте функцию notepad, предоставляемую экзаменационным программным обеспечением, чтобы сначала записать yaml-файлы или команды, а затем скопировать их в терминал.

  • Не забывайте использовать команду kubectl apply -f.
  • Не забывайте устанавливать контекст и подключаться через ssh, а также выходить из ssh.
  • Не забывайте, что файлы журнала обычно находятся вне основной директории.
  • Перед изменением файлов выполните команду cp.
  • Перед изменением объектов k8s, сначала экспортируйте их в yaml-файл.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dev-99cloud-training-kubernetes.git
git@api.gitlife.ru:oschina-mirror/dev-99cloud-training-kubernetes.git
oschina-mirror
dev-99cloud-training-kubernetes
dev-99cloud-training-kubernetes
master