Я ищу разъяснения по поводу того, что я считаю потенциальной проблемой с группами безопасности EC2.
Я настраиваю группу безопасности для подключения к экземплярам Linux. Я создал правила для доступа по HTTP и HTTPS "где угодно".
Для моего правила SSH в учебнике Amazon сказано, что я должен ограничить входящий доступ к моему общедоступному IP-адресу.
Я не понимаю, насколько это безопасно или работоспособно, если ваш общедоступный IP-адрес является динамическим?
Мой IP-адрес является динамическим. Что произойдет, если мой интернет-провайдер изменит мой общедоступный IP-адрес, и я больше не смогу подключиться к моему экземпляру по ssh?
Ссылка на руководство по установке, которое я использую: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html (Шаг 7 «Создание группы безопасности» мне кажется проблематичным)
Я не понимаю, насколько это безопасно или работоспособно, если ваш общедоступный IP-адрес является динамическим?
Это решение может работать, если вы обнаружите, что ваш IP-адрес не меняется часто или вам нужен доступ только на короткое время. Это добавляет дополнительный уровень безопасности, поскольку SSH не подвергается трафику за пределами предоставленного вами CIDR.
Если конкретный CIDR не работает, вы можете попробовать на плате или более диапазонах CIDR, которые, вероятно, будет использовать ваш провайдер, это все равно ограничит доступ из большого процента Интернета, и это победа для безопасности.
что произойдет, если мой интернет-провайдер изменит мой общедоступный IP-адрес, и я больше не смогу подключиться к своему экземпляру по ssh?
Вы можете войти в консоль AWS или использовать интерфейс командной строки для обновления правила группы безопасности на лету.
Вы можете написать сценарий, который напрямую взаимодействует с CLI. Это может быть так же просто, как что-то, что проверяет Port 22 rule
против вашего текущего IP-адреса и обновляет его, если он отличается. Конечно, запуск такого скрипта может вызвать больше вопросов безопасности :)
Хотя приятно ограничивать трафик ssh только надежными IP-источниками, где это возможно, то, что делает ssh безопасным, - это использование закрытых ключей и разумная конфигурация.
Ключевые моменты, которые следует учитывать:
Вы также можете сделать несколько вещей, чтобы избавиться от «шума», связанного с атаками методом грубой силы:
Можно ограничить доступ к вашему SSH-серверу по IP-адресу, но SSH не полагается на это для своей безопасности. Если вы отключите вход по паролю (PasswordAUthentication no
) и используйте только аутентификацию с закрытым ключом, никто не сможет войти без вашего закрытого ключа. Это безопасно.
Другими словами, вам не нужно беспокоиться о правилах брандмауэра, если вы этого не хотите.
Вы можете добавить диапазон CIDR в группу безопасности, которая представляет собой надмножество всех IP-адресов, которые ваш интернет-провайдер может вам выделить.
Либо так, либо используйте API AWS для динамического обновления вашей группы безопасности.
Есть несколько более свежих решений этого старого вопроса:
Изнутри AWS: Как автоматически обновлять группы безопасности для Amazon CloudFront и AWS WAF с помощью AWS Lambda
Удаленное обновление из динамического источника (скрипт node.js): скрипт узла aws-ec2-ssh-secgroup-update
Удаленное обновление из динамического источника (скрипт Python): Автоматически добавлять текущий общедоступный IP-адрес в группу безопасности, чтобы разрешить трафик на определенный порт
Ты можешь использовать aws_ipadd , чтобы легко обновлять правила группы безопасности AWS и управлять ими, а также вносить в белый список ваш общедоступный IP-адрес с портом при его изменении.
$ aws_ipadd my_project_ssh
Your IP 10.10.1.14/32 and Port 22 is whitelisted successfully.
$ aws_ipadd my_project_ssh
Modifying existing rule...
Removing old whitelisted IP '10.10.1.14/32'.
Whitelisting new IP '10.4.10.16/32'.
Rule successfully updated!
Вы можете использовать AWS CLI для динамического добавления / удаления правил доступа для SSH в вашей группе безопасности. Есть авторизовать вход группы безопасности и аннулировать вход группы безопасности Доступны методы API.
Я недавно опубликовал сообщение в блоге об этом на случай, если вам нужно пошаговое объяснение.
После настройки правильной группы безопасности и пользователей IAM вы можете переключить свой SSH-доступ, используя следующие сценарии bash:
bin / open_ssh
#!/bin/sh
source ./bin/.authorize_aws
WHITELISTED_IP=$(curl https://ifconfig.me 2> /dev/null)
echo "Opening SSH for ${WHITELISTED_IP}"
aws ec2 autorize-security-group-ingress \
--group-name ephemeral-ec2-ssh-access \
--region us-west-1 --protocol tcp --port 22 \
--cidr "${WHITELISTED_IP}/32" 2> /dev/null
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
bin / close_ssh
#!/bin/sh
source ./bin/.authorize_aws
WHITELISTED_IP=$(curl https://ifconfig.me 2> /dev/null)
echo "Closing SSH for ${WHITELISTED_IP}"
aws ec2 revoke-security-group-ingress \
--group-name ephemeral-ec2-ssh-access \
--region us-west-1 --protocol tcp --port 22 \
--cidr "${WHITELISTED_IP}/32" 2> /dev/null
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY