it-roy-ru.com

Могу ли я добавить имя DNS в группу безопасности AWS

Я должен подключить свой динамический IP (который меняется каждый раз) к машине AWS EC2.
Для этого я сопоставил свой публичный IP-адрес с именем домена (xyz.com), теперь я пытаюсь добавить его в группу безопасности.
Но группа безопасности AWS не позволяет добавлять DNS-имена . Правильный ли это процесс, если нет, предложите мне.

9
saurabh24

Группы безопасности и ACL не могут разрешать имена хостов DNS. 

Вы можете использовать интерфейс командной строки AWS для сценария обновления вашего динамического IP-адреса:

aws ec2 авторизация-безопасность-группа-вход --group-id --protocol tcp --port 22 --cidr/24

http://docs.aws.Amazon.com/cli/latest/userguide/cli-ec2-sg.html

8
Andreas

Я использовал этот маленький скрипт bash, чтобы пробить дыру в брандмауэре из моего текущего адреса:

#!/bin/sh
AWS_IP=$(curl http://checkip.amazonaws.com)
aws ec2 authorize-security-group-ingress --group-name my-security-group \
         --protocol tcp --port 22 \
         --cidr $AWS_IP/32

Тем не менее, это приводит к тому, что группа безопасности заполнена дырами от случайных IP-адресов, поэтому вы захотите задать вопрос о том, как не иметь группу безопасности с временными адресами, которые больше не ваши. Одним из способов решения этой проблемы является настройка VPN, которая имеет (относительно) стабильную конечную точку IP-адреса, а затем разрешает этот единственный адрес только через группу безопасности.

2
vielmetti

Я создаю группу безопасности для динамических ips и каждый раз, когда запускаю свой скрипт, удаляю ip, хранящийся в файле.

Это мое решение для окон.

SETLOCAL
@echo off
SET mypath=%~dp0
set PATH=%PATH%;"C:\Program Files\Amazon\AWSCLI\";"C:\Program Files (x86)\PuTTY\";"C:\MyApps\gnuwin32\bin"
set GROUPID=  PUT YOUR DYNAMIC SECURITY GROUP ID HERE
rem aws ec2 create-security-group --group-name dynamic_ips --vpc-id vpc-81a519e5 --description "Dynamic Ip Address"
set /p MYIP=<%mypath%\MYIP_NODELETE.txt
aws ec2 revoke-security-group-ingress --group-id %GROUPID% --protocol tcp --port 0-65535 --cidr %MYIP%/24
wget -qO %mypath%\MYIP_NODELETE.txt http://ipinfo.io/ip
set /p MYIP=<%mypath%\MYIP_NODELETE.txt
aws ec2 authorize-security-group-ingress --group-id %GROUPID% --protocol tcp --port 0-65535 --cidr %MYIP%/24
rem cat %mypath%\MYIP_NODELETE.txt
pause
1
lbolanos

Вы не можете подключить динамический IP-адрес так, как вы хотите; каждый раз, когда меняется ваш ip, если вы хотите разрешить его через ваши группы безопасности, вам нужно будет изменить настройку на ваш новый IP. 

Вы можете написать небольшой сценарий, который вы создадите в виде значка на рабочем столе, однако он использует API-интерфейс AWS, чтобы повторно разрешить текущий IP-адрес, чтобы облегчить его изменение.

0
E.J. Brennan

Правила безопасности AWS допускают только те диапазоны IP-адресов, которые называются CIDR , которые можно обновить с помощью интерфейса командной строки AWS. Однако вы не можете просто обновить CIDR существующего правила, вам необходимо:

  1. удалить старое правило: aws ec2 revoke-security-group-ingress ...
  2. создать новое правило: aws ec2 authorize-security-group-ingress ...

Пример

Я нашел некоторую форму этого скрипта полезной для инкапсуляции необходимых шагов:

#!/bin/bash

# == Script Config ===================

# The rule description is used to determine the rule that should be updated.
RULE_DESCRIPTION=My-Rule-Description
SECURITY_GROUP_NAME=My-Security-Group-Name

# ====================================

OLD_CIDR_IP=`aws ec2 describe-security-groups --query "SecurityGroups[?GroupName=='"$SECURITY_GROUP_NAME"'].IpPermissions[*].IpRanges[?Description=='"$RULE_DESCRIPTION"'].CidrIp" --output text`
NEW_IP=`curl -s http://checkip.amazonaws.com`
NEW_CIDR_IP=$NEW_IP'/32'

# If IP has changed and the old IP could be obtained, remove the old rule
if [[ $OLD_CIDR_IP != "" ]] && [[ $OLD_CIDR_IP != $NEW_CIDR_IP ]]; then
    aws ec2 revoke-security-group-ingress --group-name $SECURITY_GROUP_NAME --protocol tcp --port 8080 --cidr $OLD_CIDR_IP
fi

# If the IP has changed and the new IP could be obtained, create a new rule
if [[ $NEW_IP != "" ]] && [[ $OLD_CIDR_IP != $NEW_CIDR_IP ]]; then
   aws ec2 authorize-security-group-ingress --group-name $SECURITY_GROUP_NAME --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 8080, "ToPort": 8080, "IpRanges": [{"CidrIp": "'$NEW_CIDR_IP'", "Description": "'$RULE_DESCRIPTION'"}]}]'
fi

Объяснение

В этом методе используются следующие 3 команды интерфейса командной строки AWS, взятые из приведенного выше примера с удаленным сценарием bash.

1) Получите CIDR IP правила в определенной группе безопасности по описанию правила. Эта команда использует JMESPath в параметре query для возврата только тех данных, которые нам нужны:

aws ec2 describe-security-groups --query "SecurityGroups[?GroupName=='MY_SECURITY_GROUP_NAME'].IpPermissions[*].IpRanges[?Description=='MY_RULE_DESCRIPTION'].CidrIp" --output text

2) Удалить правило для старого CIDR (успешно, даже если правило не существует):

aws ec2 revoke-security-group-ingress --group-name MY_SECURITY_GROUP_NAME --protocol tcp --port 80 --cidr 0.0.0.0/32

3) Добавить правило для нового CIDR (не выполняется, когда правило уже существует):

aws ec2 authorize-security-group-ingress --group-name MY_SECURITY_GROUP_NAME --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 8080, "ToPort": 8080, "IpRanges": [{"CidrIp": "1.1.1.1/32", "Description": "MY_RULE_DESCRIPTION"}]}]'
0
DonVaughn