J'ai besoin d'exécuter une instance et d'accéder à mon adresse IP..mais le problème est que MyISP change mon adresse IP tous les jours.plz aidez-moi comment puis-je créer un groupe de sécurité afin que mon instance reste accessible même si mon IP changements .... p>
Merci d'avance .. p>
4 Réponses :
Vous pouvez utiliser une source CIDR de 0.0.0.0/0 pour permettre l'accès universel. p>
Vous pouvez le limiter à l'espace d'adressage de votre FAI en recherchant leurs allocations ou en surveillant simplement les adresses IP que vous vous retrouvez avec. P>
Pour le faire correctement et restreindre l'accès à une seule adresse dynamique IP, vous pouvez écrire une application qui surveille votre adresse IP publique et lorsqu'elle change appeler le API EC2 AuthoriseSecurityGroupingSholdress PROCÉDÉ ET Supprimez l'ancienne adresse avec RevokesecurityGroupingress. P>
Cela ne serait-il pas un problème de sécurité pour l'ouvrir jusqu'à 0.0.0.0/0?
Dépend. Votre système d'exploitation de VM pourrait faire la paroi du feu.
L'API correcte serait AuthorizedbsecurityGroupingroming, si vous souhaitez ajouter une CIDR au groupe de sécurité DB.
Voici un moyen de restreindre le groupe de sécurité AWS à votre adresse IP dynamique pour SSH. p>
Vous pouvez écrire un cronjob pour répéter régulièrement les étapes ci-dessous: P>
22 code> li>
- Si l'adresse IP est inadéquate que de l'étape 1, mettez-la à la mettre à jour. li>
ol>
ssh-from-my-ip code> et la valeur true code> li>
- Chaque fois que votre IP change d'exécution de ce script (ou exécutez-le périodiquement via
cron code>) li>
#! /bin/bash
# This script makes it easier to maintain security groups that allow SSH access
# from a computer with a dynamic IP, such as a computer on a home network or ISP.
#
# Using the script will allow you to SSH to an EC2 without having to allow
# access to the whole world (0.0.0.0/0). If you run this script whenever your IP
# changes then the security groups in your account specified by your AWS profile
# will be updated.
#
# The script will find any security groups for your current profile that are
# tagged with a Tag with a Key of "ssh-from-my-ip" and a case insensitive value
# of "true" or "yes".
#
# For each security group found it will revoke any existing tcp ingress on
# port 22 and authorize ingress on port 22 for your current IP.
#
# Dependencies - AWS CLI and jq
# need my current ip
MY_IP=$(curl --silent https://checkip.amazonaws.com)
echo "Your IP is ${MY_IP}"
# need security group id(s) and existing CIDR for the SG
pairs=$(aws ec2 describe-security-groups | aws ec2 describe-security-groups | jq -c '.SecurityGroups[]? | select( (.Tags[]? | select(.Key == "ssh-from-my-ip") | .Value | test("true|yes"; "i"))) | if .IpPermissions | length == 0 then {sg: .GroupId, cidr: null } else {sg: .GroupId, cidr: .IpPermissions[].IpRanges[].CidrIp} end')
for p in $pairs
do
SG=$(echo "$p" | jq -r '.sg')
OLD_CIDR=$(echo "$p" | jq -r '.cidr')
echo "Updating security group ${SG}"
if [[ $OLD_CIDR != 'null' ]]
then
echo "Revoking ingress permission for ${OLD_CIDR} in security group ${SG}"
# remove the existing ingress permission
aws ec2 revoke-security-group-ingress \
--group-id "${SG}" \
--protocol tcp \
--port 22 \
--cidr "${OLD_CIDR}"
fi
# authorize my new IP CIDR
NEW_CIDR="${MY_IP}"/32
echo "Authorizing ingress permission for ${NEW_CIDR} in security group ${SG}"
aws ec2 authorize-security-group-ingress --group-id "${SG}" --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "IpRanges": [{"CidrIp": "'"${NEW_CIDR}"'", "Description": "Rule0"}]}]'
done
#!/bin/bash # User specific data: SECURITY_GROUP_NAME="" # Setup here your group name REGION=${1:-"us-east-1"} # Change default region if needed USER=`aws iam get-user --query "User.UserName" | tr -d '"'` RULE_DESCRIPTION='DynamicIP'$USER echo 'User: '$RULE_DESCRIPTION', Region: '$REGION', Security group: '$SECURITY_GROUP_NAME checkip () { OLD_CIDR_IP=`aws ec2 describe-security-groups --region $REGION --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 [[ $OLD_CIDR_IP != "" ]] && [[ $OLD_CIDR_IP != $NEW_CIDR_IP ]]; then echo "Revoking $OLD_CIDR_IP" aws ec2 revoke-security-group-ingress --region $REGION --group-name $SECURITY_GROUP_NAME --protocol tcp --port 22 --cidr $OLD_CIDR_IP --output text >> /dev/null fi if [[ $NEW_IP != "" ]] && [[ $OLD_CIDR_IP != $NEW_CIDR_IP ]]; then echo "Setting up new ip $NEW_IP" aws ec2 authorize-security-group-ingress --region $REGION --group-name $SECURITY_GROUP_NAME --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "IpRanges": [{"CidrIp": "'$NEW_CIDR_IP'", "Description": "'$RULE_DESCRIPTION'"}]}]' fi sleep 30 checkip } checkip
Bienvenue sur Stackoverflow. Bien que ce code puisse répondre à la question, fournissant un contexte supplémentaire concernant comment i> et / ou pourquoi i> il résout le problème améliorerait la valeur à long terme de la réponse.
J'ai fait un Module NPM pour le faire.