Amazon SCS-C02: Безопасность периметра и приложений — Руководство по подготовке

Часть AWS Security Specialty SCS-C02 — Руководство по подготовке. Практикуйтесь с проверенными ответами в центре экзаменов Amazon, или пройдите тесты на время на ExamRoll.io.

Гео-ограничения CloudFront и блокировка на уровне стран

CloudFront предлагает два механизма для блокировки трафика по странам, и выбор между ними влияет на стоимость и функциональность. Встроенная функция гео-ограничения (также называемая геоблокировкой) настраивается непосредственно в дистрибуции и проверяет запросы на пограничном уровне (edge) по списку разрешенных или заблокированных стран, определяемых по IP-адресу пользователя. Эта функция бесплатна, не требует оценки правил и возвращает HTTP 403 до любого обращения к источнику. Для простых сценариев соответствия требованиям — «блокировать посетителей из страны X» — это самый дешевый и простой вариант.

Альтернативой является правило WAF с гео-сопоставлением (geo match statement), которое более гибкое: вы можете комбинировать сопоставления по странам с URI-путями, заголовками, ограничениями по частоте запросов или инвертировать их («разрешить страну А только для /admin»). WAF необходим, когда логика является условной; одни лишь гео-ограничения не могут выразить условие «блокировать страну X только для определенного пути». Выбирайте встроенное гео-ограничение, когда требуется простая блокировка по стране и вы хотите избежать стоимости WAF за каждый запрос.

CloudFront поддерживает два способа раздачи авторизованного частного контента, при этом скрывая источник (S3 бакет, ALB или медиа-источник) за origin access control или пользовательским заголовком:

Для HLS-видеостриминга, где один сеанс воспроизведения запрашивает тысячи сегментов .ts, на которые ссылается манифест, подписанные cookie значительно проще. Переписывание каждого URL сегмента в манифесте с уникальным подписанным URL возможно, но добавляет задержку и сложность. Установите cookie после того, как подписчик аутентифицируется в вашем внутреннем хранилище пользователей, с областью действия, ограниченной шаблоном пути стриминга.

Каноническая политика для подписанного cookie с использованием wildcard выглядит так:

{
  "Statement": [{
    "Resource": "https://d123.cloudfront.net/videos/*",
    "Condition": {
      "DateLessThan": {"AWS:EpochTime": 1735689600},
      "IpAddress":    {"AWS:SourceIp": "203.0.113.0/24"}
    }
  }]
}

Используйте это в паре с origin access control (OAC) или секретным пользовательским заголовком, проверяемым WAF на источнике, чтобы пользователи не могли обойти CloudFront и обратиться к источнику напрямую.

AWS WAF: Управляемые правила, ATP и правила на основе частоты запросов

Прикрепляйте Web ACL к дистрибуции CloudFront, а не к региональному ALB, когда рабочая нагрузка находится за CloudFront. Прикрепление на пограничном уровне (edge) прерывает вредоносные запросы в одной из сотен точек присутствия (POP) — ближе к злоумышленнику — что снижает нагрузку на источник во время DDoS-атак и уменьшает исходящий трафик от источника, поскольку заблокированный трафик никогда не проходит через ваш VPC. Прикрепление WAF только к ALB означает, что объемная атака (volumetric flood) все равно достигает регионального балансировщика нагрузки и потребляет LCU, а межрегиональные атаки обрабатываются одним регионом, а не глобальной пограничной сетью.

Ключевые группы правил для комбинирования:

Сокращенный блок правил WAF:

Rules:
  - Name: RateLimitLogin
    Priority: 1
    Action: { Block: {} }
    Statement:
      RateBasedStatement:
        Limit: 500
        AggregateKeyType: IP
        ScopeDownStatement:
          ByteMatchStatement:
            SearchString: /api/login
            FieldToMatch: { UriPath: {} }
            PositionalConstraint: STARTS_WITH
            TextTransformations: [{ Priority: 0, Type: LOWERCASE }]

Сертификаты ACM, DNS-валидация и CloudFront

Для CloudFront сертификат должен быть выпущен в ACM в регионе us-east-1 (N. Virginia) независимо от того, где находится ваш источник — это жесткое требование, поскольку CloudFront — это глобальный сервис, который считывает сертификаты из этого региона. Региональные сервисы, такие как ALB, считывают их из собственного региона ALB.

Всегда используйте DNS-валидацию с CNAME-записью в Route 53 для любого публичного сертификата, который вы хотите автоматически продлевать. ACM автоматически продлевает сертифкаты, прошедшие DNS-валидацию, до тех пор, пока опубликована CNAME-запись для валидации; Route 53 делает это тривиальной задачей (консоль предлагает опцию «Create records in Route 53» во время запроса). Email-валидация, в свою очередь, отправляет подтверждение на пять адресов в домене (admin@, administrator@, hostmaster@, postmaster@, webmaster@) плюс контактному лицу из WHOIS. Эти почтовые ящики часто не существуют или попадают в карантин корпоративных почтовых фильтров, поэтому продление не удается за 60 дней до истечения срока действия и вызывает предотвратимые сбои. Нет способа автоматизировать клики для email-валидации.

Правильный паттерн продления для мультирегиональных ALB: запросить по одному DNS-валидированному сертификату ACM для каждого региона, один раз опубликовать CNAME-запись для валидации в Route 53, прикрепить сертификат к слушателю ALB и позволить ACM обрабатывать продление и повторное развертывание. Участие человека заканчивается на этапе выпуска.

DNSSEC и Route 53

Включите подписание DNSSEC для хостируемой зоны в Route 53, чтобы предотвратить DNS-спуфинг и отравление кэша для вашего домена. Route 53 управляет KSK в KMS (асимметричный ключ ECC в us-east-1); вы должны опубликовать DS-запись у регистратора домена. Обратите внимание, что подписание DNSSEC защищает процесс разрешения имен в вашей зоне — оно не шифрует DNS-трафик (для этого существуют DoH/DoT) и не влияет на TLS в CloudFront.

Заголовки ответа: политики в сравнении с Lambda@Edge

CloudFront не добавляет автоматически заголовки безопасности, такие как Strict-Transport-Security, X-Frame-Options, X-Content-Type-Options или Content-Security-Policy. Если ваш origin-сервер нельзя изменить (например, это устаревший сайт на S3 или сторонний ресурс), у вас есть два варианта:

Управляемая политика заголовков ответа SecurityHeadersPolicy покрывает базовые требования безопасности одним подключением.

Объяснение распространенных ошибок

Запрос публичных сертификатов ACM с проверкой по электронной почте — хрупкий процесс именно потому, что их продление зависит от людей, читающих письма, отправленные на общие адреса, которые в большинстве организаций не отслеживаются или попадают в спам. Проверка через DNS с помощью Route 53 полностью исключает человеческий фактор.

Подключение WAF только к ALB на бумаге выглядит эквивалентно, но заставляет атакующий трафик проникать в ваш регион и потреблять ресурсы ALB. WAF, подключенный к CloudFront на пограничных узлах (edge), блокирует трафик в сотнях точек присутствия (POP), поэтому распределенная атака поглощается глобально, а исходящий трафик от origin-сервера остается низким, что критически важно во время DDoS-атаки.

Предположение, что CloudFront автоматически добавляет заголовки безопасности, приводит к провалу пентестов. Дистрибуция проксирует те заголовки, которые отправляет origin-сервер; вы должны явно подключить политику заголовков ответа или функцию Lambda@Edge, чтобы добавить X-Frame-Options: DENY, HSTS и CSP.

Практическая задача: сценарий использования

Сценарий: Компания Meridian Financial управляет глобально распределенным клиентским порталом и внутренним порталом отчетов на AWS. Публичный трафик маршрутизируется через Amazon CloudFront на Application Load Balancers для динамических API и на origin-серверы S3 для приватных отчетов; DNS находится в Route 53, а TLS-сертификаты выпускаются через AWS Certificate Manager (ACM).

Проблема: Злоумышленники занимаются скрейпингом и перебором учетных данных (credential stuffing) из нескольких стран, обходя CloudFront и обращаясь напрямую к эндпоинтам origin-серверов для загрузки приватных отчетов, что приводит к перегрузке origin-серверов и утечке данных.

Рекомендуемый подход:

  1. Настроить CloudFront как единственную публичную точку входа и применить CloudFront Geo Restriction для блокировки атакующих стран; включить Origin Access Control (OAC) и ограничить политики origin-серверов S3/ALB так, чтобы только CloudFront мог получать их контент.
  2. Предоставлять доступ к приватным отчетам для каждого пользователя с помощью подписанных URL-адресов CloudFront (с коротким TTL) вместо подписанных cookie, чтобы каждая загрузка была индивидуально авторизована и поддавалась аудиту.
  3. Подключить AWS WAF к дистрибуции CloudFront, используя управляемые правила AWS (AWS Managed Rules), включить AWS WAF Bot Control (расширенная защита от угроз) и создать правила на основе частоты запросов (rate-based rules) с проверками CAPTCHA для борьбы со скрейпингом и перебором учетных данных.
  4. Выпустить TLS-сертификаты в ACM (в регионе us-east-1 для дистрибуций CloudFront), используя проверку через DNS с помощью Route 53, и опубликовать Alias-записи Route 53, указывающие на дистрибуцию CloudFront.
  5. Включить DNSSEC для размещенной зоны (hosted zone) в Route 53, включить логи доступа CloudFront и WAF в S3 и создать алармы CloudWatch, а также опционально использовать AWS Shield Advanced для мониторинга DDoS-атак и оповещений.

Обоснование: Принудительная маршрутизация всего трафика через CloudFront с OAC и WAF обеспечивает доступ к origin-серверам по принципу наименьших привилегий. Geo Restriction и защиты на основе частоты запросов/WAF останавливают вредоносный трафик. Подписанные URL-адреса обеспечивают авторизацию на уровне каждого объекта. Использование ACM+DNS-валидации с DNSSEC гарантирует доверенный TLS и целостность DNS в соответствии с лучшими практиками AWS.

Правила AWS WAF и интеграция с ALB и CloudFront

AWS WAF — это межсетевой экран 7-го уровня, который анализирует HTTP(S)-запросы на соответствие списку контроля доступа (Web ACL), состоящему из упорядоченных правил. Каждое правило проверяет атрибуты запроса (URI, заголовки, тело, строка запроса, IP-адрес источника) и возвращает завершающее действие (Allow, Block, Challenge, CAPTCHA) или незавершающее действие (Count). Web ACL подключаются к дистрибуциям CloudFront, Application Load Balancers, API Gateway, AppSync, пулам пользователей Cognito и сервисам App Runner. При подключении к CloudFront ACL выполняется на пограничных узлах и должен быть создан в области us-east-1 (Global); для ALB он должен находиться в том же регионе, что и балансировщик нагрузки.

Правила на основе частоты запросов (rate-based rules) отслеживают количество запросов, поступающих с одного IP-адреса (или из заголовка с перенаправленным IP, или по составному ключу, например, комбинации URI + IP) за скользящее пятиминутное окно. Когда количество запросов превышает настроенный порог, срабатывает действие правила, которое активно до тех пор, пока частота запросов не упадет ниже лимита. Поскольку AWS WAF непрерывно обновляет список нарушителей за секунды, правила на основе частоты запросов являются каноническим решением для борьбы с массовыми злоупотреблениями от небольшого, постоянно меняющегося набора IP-адресов. Вам не нужно вручную курировать набор IP, и операционные издержки после развертывания правила практически нулевые.

{
  "Name": "RateLimitPerIP",
  "Priority": 10,
  "Statement": {
    "RateBasedStatement": {
      "Limit": 2000,
      "AggregateKeyType": "IP"
    }
  },
  "Action": { "Block": {} },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "RateLimitPerIP"
  }
}

Наборы IP-адресов (IP sets) — это переиспользуемые списки CIDR-диапазонов, на которые ссылаются правила с помощью IPSetReferenceStatement. Они являются подходящим примитивом, когда у вас есть детерминированный список разрешенных/заблокированных адресов — например, для эндпоинтов администрирования с географическими ограничениями или для известных вредоносных диапазонов из каналов данных об угрозах (threat intelligence feeds). Пользовательские правила комбинируют несколько выражений с помощью логических операторов AndStatement, OrStatement и NotStatement, что позволяет вам формулировать условия вроде «блокировать запросы к /login из стран, отличных от США, у которых также отсутствует определенный заголовок».

CloudFront как уровень защиты от DDoS и для защиты источника

CloudFront поглощает объёмные атаки и атаки на исчерпание состояния на пограничных узлах AWS, задолго до того, как трафик достигнет вашего ALB или парка EC2. В каждом пограничном узле автоматически работает AWS Shield Standard, бесплатно обеспечивая защиту от SYN-флуда и атак с отражением (reflection attack). Размещение CloudFront перед ALB сужает поверхность атаки до пограничной сети и позволяет использовать WAF на пограничных узлах, геоблокировку и терминирование TLS.

Защита эффективна только в том случае, если злоумышленники не могут обойти CloudFront, обращаясь напрямую к DNS-имени ALB. Два механизма позволяют защитить этот путь. Во-первых, настройте CloudFront на добавление секретного пользовательского заголовка источника (например, X-Origin-Verify: <random-value>) и создайте правило для обработчика ALB, которое возвращает 403 для любого запроса, в котором отсутствует этот заголовок с точным значением. Периодически ротируйте секрет с помощью AWS Secrets Manager. Во-вторых, ограничьте группу безопасности ALB, используя управляемый AWS список префиксов com.amazonaws.global.cloudfront.origin-facing, который содержит диапазоны IP-адресов пограничных узлов CloudFront.

ALBListenerRule:
  Type: AWS::ElasticLoadBalancingV2::ListenerRule
  Properties:
    Actions:
      - Type: fixed-response
        FixedResponseConfig: { StatusCode: "403", ContentType: text/plain }
    Conditions:
      - Field: http-header
        HttpHeaderConfig:
          HttpHeaderName: X-Origin-Verify
          Values: ["!Ref OriginSecret"]
      - Field: http-header
        HttpHeaderConfig: { HttpHeaderName: X-Origin-Verify, Values: ["*"] }
    Priority: 1

Простое подключение WAF ACL к ALB без принудительного направления трафика через CloudFront оставляет конечную точку ALB общедоступной. Злоумышленники, обнаружившие DNS-имя (через журналы прозрачности сертификатов, историю DNS или перебор поддоменов), могут атаковать его напрямую, обходя все средства защиты на пограничных узлах. Это самая распространенная архитектурная ошибка в проектах, использующих связку «CloudFront + ALB».

Метрики, оповещения и уведомления Shield Advanced

Shield Advanced добавляет улучшенное обнаружение, круглосуточный доступ к команде Shield Response Team, защиту от затрат при масштабировании во время атак и видимость атак на уровне приложений. Однако он не отправляет автоматически email или SMS при возникновении атаки. Уведомления необходимо настраивать явным образом через CloudWatch.

Shield Advanced публикует метрику DDoSDetected (значение 1 во время атаки) и метрики DDoSAttackBitsPerSecond, DDoSAttackPacketsPerSecond и DDoSAttackRequestsPerSecond для каждого защищенного ресурса в пространстве имен AWS/DDoSProtection. Создайте оповещение CloudWatch для DDoSDetected >= 1 с темой SNS в качестве действия; SNS затем будет рассылать уведомления по email, SMS, в чат или запускать Lambda-функцию для реагирования.

aws cloudwatch put-metric-alarm \
  --alarm-name ShieldDDoSDetected \
  --namespace AWS/DDoSProtection \
  --metric-name DDoSDetected \
  --statistic Maximum --period 60 --threshold 1 \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --evaluation-periods 1 \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:secops-alerts

Предположение, что Shield Advanced «просто отправит вам email», является частым заблуждением — без оповещения CloudWatch и подписки SNS единственными сигналами будут консоль Shield и событие на AWS Health Dashboard.

AWS Network Firewall с автоматической блокировкой через Lambda

Network Firewall — это межсетевой экран с отслеживанием состояния (stateful), работающий на уровнях 3–7, который подключается к VPC и проверяет трафик, проходящий через таблицы маршрутизации подсетей. Его политика состоит из групп правил без отслеживания состояния (stateless) и с отслеживанием состояния (stateful); группы правил с отслеживанием состояния используют синтаксис, совместимый с Suricata. Поскольку группы правил управляются через API, они являются идеальными объектами для автоматизации на основе событий.

Распространенный шаблон реагирует на находки GuardDuty (например, UnauthorizedAccess:EC2/RDPBruteForce или Backdoor:EC2/C&CActivity). Security Hub агрегирует находку, EventBridge сопоставляет ее с шаблоном события и вызывает Lambda-функцию, а Lambda вызывает UpdateRuleGroup, чтобы вставить правило блокировки (drop rule) для IP-адреса злоумышленника или ENI скомпрометированного инстанса.

def handler(event, _):
    ip = event["detail"]["findings"][0]["ProductFields"]["aws/guardduty/service/action/networkConnectionAction/remoteIpDetails/ipAddressV4"]
    new_rule = f'drop ip {ip} any -> any any (msg:"GD-block"; sid:{sid()}; rev:1;)'
    rg = nfw.describe_rule_group(RuleGroupArn=RG_ARN)
    rules = rg["RuleGroup"]["RulesSource"]["RulesString"] + "\n" + new_rule
    nfw.update_rule_group(
        RuleGroupArn=RG_ARN,
        UpdateToken=rg["UpdateToken"],
        RulesSource={"RulesString": rules})

Network Firewall — это правильный выбор, когда вам нужно заблокировать двунаправленный трафик к/от инстанса EC2 или CIDR на границе VPC. WAF проверяет только HTTP-запросы, предназначенные для поддерживаемых конечных точек уровня 7, и поэтому не может остановить исходящий C2-трафик или трафик по протоколам, отличным от HTTP.

Ведение журналов, мониторинг и безопасное развертывание с помощью действия Count

Включите ведение журналов WAF для каждого Web ACL и направляйте их в CloudWatch Logs, S3 или Kinesis Data Firehose. Журналы содержат информацию о сработавшем правиле, действии, заголовках запроса и (с правилами редактирования) очищенном теле запроса. Выборочные запросы в консоли дают быстрое представление, но хранятся только за последние 3 часа и в объеме 100 примеров на правило; полные журналы необходимы для аудита и расследований.

Действие Count имеет решающее значение для безопасного развертывания правил. Развертывайте новые группы управляемых правил (например, AWSManagedRulesCommonRuleSet или группу Bot Control), сначала установив для них переопределение действий правил на Count. Отслеживайте метрику CountedRequests в CloudWatch и записи в журналах на предмет ложных срабатываний — легитимного трафика, который мог бы быть заблокирован. Только после настройки исключений изменяйте действия на Block. Развертывание управляемых правил сразу с действием Block часто приводит к сбоям в работе, когда правило, такое как SizeRestrictions_BODY, блокирует легитимную конечную точку для загрузки больших файлов, или когда CrossSiteScripting_BODY срабатывает на полезную нагрузку редактора форматированного текста. Способ устранения — не отключать всю группу, а добавить оператор сужения области действия (scope-down statement) или переопределение действия для конкретного правила, которое срабатывает некорректно.

Используйте метрики WAF (BlockedRequests, AllowedRequests, CountedRequests) в паре с оповещениями CloudWatch, чтобы внезапный всплеск блокировок — или внезапное падение разрешенного трафика — оповещало дежурного инженера, замыкая цикл между защитой на периметре и операционной осведомленностью.

Практическая задача: сценарий использования

Сценарий: Meridian Financial использует клиентское веб-приложение в VPC в нескольких зонах доступности с Application Load Balancers (ALB) перед сервисами ECS, а также распределяет статический и динамический контент через CloudFront. Команда использует AWS WAF, но имеет ограниченную автоматизацию для угроз сетевого уровня и непоследовательное ведение журналов для разных сервисов.

Задача: Недавний всплеск объемного трафика и трафика на уровне приложений был нацелен на конечные точки входа в систему и вызвал исчерпание ресурсов ЦП ALB при попытках подстановки учетных данных (credential stuffing); команде безопасности требуется быстрое противодействие DDoS-атакам, постоянная защита источника, автоматическая блокировка вредоносных IP-адресов и безопасное развертывание более строгих правил.

Рекомендуемый подход:

  1. Активировать CloudFront перед ALB для смягчения угроз на глобальном периметре, настроить ALB на прием трафика только от CloudFront путем проверки пользовательского заголовка источника и ограничения входящего доступа с помощью управляемого CloudFront списка префиксов или известных диапазонов IP-адресов.
  2. Развернуть AWS WAFv2 с управляемыми наборами правил AWS, а также с пользовательскими правилами на основе частоты запросов и для обнаружения ботов; прикрепить WAF как к дистрибуции CloudFront, так и к ALB. Изначально установить для новых пользовательских правил режим COUNT для сбора телеметрии.
  3. Подключить аккаунт к AWS Shield Advanced и ассоциировать с ним дистрибуцию CloudFront и ALB; создать оповещения по метрикам CloudWatch, используя метрики Shield/DDoS, и пересылать оповещения в топик SNS для уведомления дежурных специалистов и запуска сценариев реагирования (runbook).
  4. Централизовать журналы: направить журналы CloudFront, ALB, WAF и AWS Network Firewall в Kinesis Data Firehose → S3 и включить метрики/панели мониторинга CloudWatch для отслеживания количества срабатываний правил в режиме COUNT.
  5. Развернуть AWS Network Firewall в VPC с группами правил с отслеживанием состояния и включить ведение журналов; создать фильтры метрик CloudWatch для подозрительных шаблонов и Lambda-функцию, которая будет запускаться по оповещениям для автоматического обновления группы правил Network Firewall, добавляя атакующие IP-адреса в список запретов.
  6. После наблюдения за трафиком в режиме COUNT и на панелях мониторинга в течение согласованного периода наблюдения, переключить правила WAF с высокой степенью уверенности в режим BLOCK и поддерживать автоматические обновления Network Firewall с безопасными откатами и версионированием групп правил.

Обоснование: Использование CloudFront в качестве периметрового уровня с WAF и Shield Advanced обеспечивает многоуровневую защиту от DDoS, в то время как централизованное ведение журналов, проверка правил в режиме COUNT и автоматические обновления Network Firewall, управляемые через Lambda, предлагают безопасную, наблюдаемую и автоматизированную защиту сети, соответствующую лучшим практикам AWS.


Сетевое взаимодействие и безопасность VPC · Все домены · Управление

Отработать эти вопросы → · Тесты на время на ExamRoll.io →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Сдайте экзамен →

Просмотреть Amazon →

Related guides

Все включено

Одна подписка. Каждый экзамен.

Каждый план открывает неограниченный поиск ответов, практические тесты, объяснения AI и полную библиотеку ресурсов — на более чем 20 языках.

Ежемесячно
24.87
Just €0.83/day
Все включено:
  • Неограниченный поиск ответов
  • Неограниченные практические тесты
  • Объяснения на основе AI
  • Полная библиотека ресурсов
  • 20+ языков
  • Еженедельные обновления контента
  • Награды и рефералы
  • Приоритетная поддержка
Начать бесплатную пробную версию

Кредитная карта не требуется*

Лучшая цена
12 месяцев
179.87
Just €0.49/daySave 40%
Все включено:
  • Неограниченный поиск ответов
  • Неограниченные практические тесты
  • Объяснения на основе AI
  • Полная библиотека ресурсов
  • 20+ языков
  • Еженедельные обновления контента
  • Награды и рефералы
  • Приоритетная поддержка
Начать бесплатную пробную версию

Кредитная карта не требуется*

✓ Включен бесплатный план · ✓ Отмена в любое время · ✓ Все планы открывают полный продукт