Группы безопасности и пары ключей
Управляйте входящим и исходящим трафиком с помощью групп безопасности и настройте аутентификацию SSH с помощью пар ключей EC2.
«Группы безопасности и пары ключей» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Что такое группы безопасности
Группа безопасности — это виртуальный брандмауэр с отслеживанием состояния, который управляет входящим и исходящим трафиком к экземпляру EC2 и от него (или к другим ресурсам AWS, таким как RDS, Lambda, ELB). Группы безопасности работают на уровне экземпляра — каждое правило определяет протокол (TCP/UDP/ICMP), диапазон портов и источник или назначение (диапазон IP или другая группа безопасности). В отличие от традиционных брандмауэров, группы безопасности отслеживают состояние соединений: если Вы разрешаете входящий трафик, ответный трафик автоматически разрешается в исходящем направлении без отдельного правила.
Правила для входящего и исходящего трафика
Группы безопасности имеют отдельные наборы правил для входящего и исходящего трафика. Правила для входящего трафика управляют трафиком, поступающим к экземпляру: по умолчанию весь входящий трафик запрещён. Правила для исходящего трафика управляют трафиком, покидающим экземпляр: по умолчанию весь исходящий трафик разрешён. Вы добавляете явные правила Allow; явных правил Deny в группах безопасности нет (для явных запретов используйте сетевые ACL). Все правила группы безопасности оцениваются вместе по логическому принципу OR — любое совпавшее правило Allow разрешает трафик.
# Add an inbound SSH rule to a security group
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 22 \
--cidr 203.0.113.0/24
# Add an inbound HTTP rule
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/0Связывание групп безопасности
Группы безопасности поддерживают ссылки на группы безопасности в качестве источника или назначения, что гибче и безопаснее указания диапазонов IP. Например, группа безопасности ALB разрешает доступ из 0.0.0.0/0 к порту 443. Группа безопасности экземпляров EC2 разрешает входящий доступ к порту 8080 только из ID группы безопасности ALB, а не с любого IP-адреса. Если ALB заменяется или масштабируется, правило продолжает работать корректно без изменения IP-адресов. Такой подход создаёт многоуровневую динамическую защиту для многоуровневых архитектур.
# Allow inbound from another security group (not an IP)
aws ec2 authorize-security-group-ingress \
--group-id sg-ec2-instances \
--protocol tcp \
--port 8080 \
--source-group sg-load-balancerГруппы безопасности отслеживают состояние
Отслеживание состояния означает, что группа безопасности отслеживает состояние соединения. Если правило для входящего трафика разрешает TCP-порт 80 из интернета и клиент отправляет запрос, пакеты ответа (исходящий трафик) автоматически разрешаются обратно клиенту, даже если для порта 80 нет правила исходящего трафика. Это принципиально отличается от сетевых ACL, которые не отслеживают состояние и требуют явных правил для обоих направлений трафика. Благодаря отслеживанию состояния группы безопасности проще настраивать для типичных схем трафика приложений.
Несколько групп безопасности для одного экземпляра
К одному экземпляру EC2 можно подключить несколько групп безопасности (по умолчанию до 5, ограничение можно изменить). Правила всех подключённых групп безопасности объединяются по принципу объединения (логика OR): если любая группа безопасности разрешает запрос, запрос будет разрешён. Это означает, что группы безопасности могут только добавлять разрешения, но не ограничивать их: если Вы хотите ужесточить доступ, необходимо удалить или изменить правила, а не добавить более ограничительную группу безопасности. Помните об этом аддитивном поведении при решении экзаменационных вопросов об ограничении доступа.
Поведение группы безопасности по умолчанию
Каждый VPC включает группу безопасности по умолчанию. Её правила по умолчанию: входящий трафик разрешён от других экземпляров, также находящихся в группе безопасности по умолчанию; исходящий трафик разрешён в любые направления. Это намеренно либеральная настройка, благодаря которой новые экземпляры могут взаимодействовать друг с другом по умолчанию. В производственных средах создавайте пользовательскую группу безопасности с максимально ограниченным набором правил для входящего трафика и удаляйте связи экземпляров с группой безопасности по умолчанию, чтобы избежать случайного раскрытия.
Пары ключей: принцип работы
Пары ключей EC2 используют асимметричную криптографию для аутентификации SSH. AWS генерирует пару ключей (или Вы импортируете собственный открытый ключ): AWS хранит открытый ключ и добавляет его в экземпляр при запуске; Вы скачиваете и храните закрытый ключ (файл .pem) — AWS никогда его не хранит. SSH использует закрытый ключ, чтобы подтвердить серверу Вашу личность без передачи пароля. Для закрытого ключа должны быть установлены ограниченные права доступа (chmod 400), иначе SSH откажется его использовать.
# Create a key pair and save the private key
aws ec2 create-key-pair \
--key-name ProdKey \
--key-type rsa \
--key-format pem \
--query 'KeyMaterial' \
--output text > ProdKey.pem
chmod 400 ProdKey.pemВосстановление доступа без пары ключей
Если Вы потеряли закрытый ключ экземпляра Linux EC2, обычным способом подключиться по SSH не удастся. Варианты восстановления включают: Systems Manager Session Manager (если агент SSM запущен и подключена роль IAM — ключ не нужен), EC2 Instance Connect (добавляет временный ключ через браузер или CLI — требуется открытый порт SSH и разрешения EIC) либо остановить экземпляр, отсоединить корневой том EBS, подключить его к другому экземпляру, изменить файл authorized_keys, снова подключить том и перезапустить экземпляр. Для Windows используйте Systems Manager, чтобы получить пароль.
# Connect using EC2 Instance Connect (temporary key injection)
aws ec2-instance-connect send-ssh-public-key \
--instance-id i-0abcdef1234567890 \
--instance-os-user ec2-user \
--ssh-public-key file://~/.ssh/id_rsa.pub
ssh -i ~/.ssh/id_rsa ec2-user@54.123.45.67Рекомендация: ограничьте доступ по SSH
Открытый для 0.0.0.0/0 SSH (порт 22) подвергает Ваш экземпляр атакам методом перебора и подбору учётных данных из любой точки интернета. Рекомендации: ограничьте SSH конкретным диапазоном IP-адресов Вашей организации или используйте бастионный хост (переходный сервер) в общедоступной подсети с тщательно настроенной группой безопасности, а затем подключайтесь по SSH с бастионного хоста к экземплярам в закрытой подсети. Ещё лучше использовать Systems Manager Session Manager, чтобы полностью исключить открытый порт SSH: правила для входящего трафика вообще не нужны.
# Example: restrict SSH to a corporate IP range
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 22 \
--cidr 198.51.100.0/24 # Your corporate CIDRОграничения и квоты групп безопасности
Основные ограничения групп безопасности по умолчанию (их можно изменить через Service Quotas): до 2 500 групп безопасности на VPC, 60 правил для входящего и 60 правил для исходящего трафика на группу безопасности и 5 групп безопасности на сетевой интерфейс. При указании другой группы безопасности в качестве источника каждая комбинация «ссылка на группу безопасности — правило» считается отдельным правилом. Если Вы достигли ограничения на количество правил, объедините их, указывая ID групп безопасности вместо отдельных диапазонов IP, или используйте списки префиксов, чтобы сгруппировать несколько CIDR в одну управляемую сущность.
Управляемые списки префиксов
Управляемый список префиксов — это набор блоков CIDR, на который можно ссылаться в правилах групп безопасности или таблицах маршрутизации. AWS поддерживает списки префиксов, управляемые AWS, для таких сервисов, как S3 и CloudFront, поэтому Вы можете разрешать трафик к этим сервисам и от них, не поддерживая диапазоны IP самостоятельно (со временем они меняются). Вы также можете создавать списки префиксов, управляемые клиентом, чтобы группировать корпоративные диапазоны IP: обновите список префиксов в одном месте, и все ссылающиеся на него группы безопасности автоматически унаследуют это изменение.
# Allow outbound HTTPS to Amazon S3 using the AWS-managed prefix list
aws ec2 authorize-security-group-egress \
--group-id sg-12345678 \
--ip-permissions '[{"IpProtocol":"tcp","FromPort":443,"ToPort":443,"PrefixListIds":[{"PrefixListId":"pl-63a5400a"}]}]'Быстрая проверка
Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03), рассмотренных в этом уроке.
Итоги урока
В этом уроке Вы узнали, что группы безопасности — это виртуальные брандмауэры с отслеживанием состояния, которые разрешают трафик, если он не запрещён правилами по умолчанию, связывание групп безопасности по ID безопаснее и гибче использования диапазонов IP, а пары ключей обеспечивают асимметричную аутентификацию SSH, тогда как Systems Manager Session Manager устраняет необходимость в открытых портах SSH. Далее мы рассмотрим варианты хранилищ EC2: Instance Store и EBS.
Часто задаваемые вопросы
Урок «Группы безопасности и пары ключей» бесплатный?
Да — полный текст урока «Группы безопасности и пары ключей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Чему я научусь в уроке «Группы безопасности и пары ключей»?
Управляйте входящим и исходящим трафиком с помощью групп безопасности и настройте аутентификацию SSH с помощью пар ключей EC2. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?
Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Группы безопасности и пары ключей»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?
Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Запуск первого экземпляра EC2
- Типы экземпляров и модели ценообразования
- Группы безопасности и пары ключей
- Хранилище EC2: локальное хранилище экземпляра и EBS