6
votes

Comment créer un groupe de sécurité avec une adresse IP dynamique sur le service Web Amazon

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 ....

Merci d'avance ..


1 commentaires

J'ai fait un Module NPM pour le faire.


4 Réponses :


-1
votes

Vous pouvez utiliser une source CIDR de 0.0.0.0/0 pour permettre l'accès universel.

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.

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.


3 commentaires

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.



1
votes

Voici un moyen de restreindre le groupe de sécurité AWS à votre adresse IP dynamique pour SSH.

Vous pouvez écrire un cronjob pour répéter régulièrement les étapes ci-dessous:

  1. Fetch Adresse IP externe (par exemple http://checkip.amazonaws.com/ )
  2. Fetch Security Group Détails en utilisant AWS SDK
  3. Boucle via toutes les règles de sécurité, vérifiez le port 22
  4. Si l'adresse IP est inadéquate que de l'étape 1, mettez-la à la mettre à jour.

0 commentaires

0
votes
  1. Créez un groupe de sécurité avec l'accès à l'ingression du port 22 de votre adresse IP actuelle. LI>
  2. Ajoutez une étiquette au groupe de sécurité avec la clé ssh-from-my-ip code> et la valeur true code> li>
  3. 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
    

0 commentaires

0
votes
#!/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

1 commentaires

Bienvenue sur Stackoverflow. Bien que ce code puisse répondre à la question, fournissant un contexte supplémentaire concernant comment et / ou pourquoi il résout le problème améliorerait la valeur à long terme de la réponse.