Saltar al contenido

¿Cómo puedo encontrar una dirección IP que esté en mis registros pero no en mi instancia de Amazon VPC?

10 minutos de lectura
0

Quiero encontrar una dirección IP que esté en mis registros pero que no esté en mi instancia de Amazon Virtual Private Cloud (Amazon VPC).

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de AWS CLI.

Revisión de los eventos de CloudTrail

Para usar los eventos de AWS CloudTrail para encontrar tu dirección IP, sigue estos pasos:

Para usar el evento AllocateAddress para comprobar si asignaste la dirección IP elástica a tu cuenta de AWS, ejecuta el siguiente comando lookup-events:

aws cloudtrail lookup-events \--region example-region \
--lookup-attributes AttributeKey=EventName,AttributeValue=AllocateAddress \
--start-time example-yyyy-mm-dd \
--query 'Events[].Resources[?ResourceName == 'example-eip-address'].{ResourceType:ResourceType,IP:ResourceName}[]' --output table

Nota: Sustituye example-eip-address por tu dirección IP elástica, example-yyyy-mm-dd por la fecha de inicio y example-region por tu región de AWS. El comando CloudTrail anterior no muestra las direcciones IPv4 públicas de Amazon Elastic Compute Cloud (Amazon EC2).

Para usar el evento AssociateAddress y los filtros AllocationID para ver el servicio que usa la dirección IP elástica, ejecuta el siguiente comando lookup-events:

aws cloudtrail lookup-events \--region example-region \
--lookup-attributes AttributeKey=ResourceName,AttributeValue=example-allocation-id \
--start-time example-yyyy-mm-dd \

Nota: Sustituye example-allocation-id por tu dirección IP elástica, example-yyyy-mm-dd por la fecha de inicio y example-region por tu región. El comando anterior muestra el historial completo de la asignación de direcciones IP elásticas. El orden comienza desde la asignación más reciente hasta la más temprana en función de la fecha que selecciones.

Para usar el evento CreateNetworkInterface para comprobar si asignaste la dirección IP privada a la interfaz de red elástica, ejecuta el siguiente comando lookup-events:

aws cloudtrail lookup-events \--region example-region \
--lookup-attributes AttributeKey=EventName,AttributeValue=CreateNetworkInterface \
--start-time example-yyyy-mm-dd \
--query 'Events[].CloudTrailEvent' --output text | jq -r "select(.responseElements.networkInterface.privateIpAddressesSet.item[].privateIpAddress == \"example-private-ip-address\")"

Nota: Sustituye example-private-ip-address por tu dirección IP privada, example-yyyy-mm-dd por la fecha de inicio y example-region por tu región. Si el comando anterior no devuelve eventos coincidentes, no obtendrás ningún resultado.

Para usar el evento AttachNetworkInterface para comprobar si un recurso utilizó una interfaz de red en el pasado, ejecuta el siguiente comando lookup-events:

aws cloudtrail lookup-events \--region example-region \
--lookup-attributes AttributeKey=EventName,AttributeValue=AttachNetworkInterface \
--start-time example-yyyy-mm-dd \
--query 'Events[].CloudTrailEvent' --output text | jq -r "select(.requestParameters.networkInterfaceId == \"example-eni-id\")"

Nota: Sustituye example-eni-id por tu id. de interfaz de red, example-yyyy-mm-dd por la fecha de inicio y example-region por tu región.

Para comprobar si CloudTrail puede encontrar los eventos, ejecuta el siguiente comando lookup-events sin el filtro jq:

aws cloudtrail lookup-events \
--region example-region \
--lookup-attributes AttributeKey=EventName,AttributeValue=CreateNetworkInterface \
--start-time example-yyyy-mm-dd

Nota: Sustituye example-yyyy-mm-dd por la fecha de inicio y example-region por tu región.

Para usar el evento RunInstances para comprobar si asociaste la dirección IP privada a la instancia en el momento del lanzamiento de la instancia, ejecuta el siguiente comando lookup-events:

aws cloudtrail lookup-events \--region example-region \
--lookup-attributes AttributeKey=EventName,AttributeValue=RunInstances \
--start-time example-yyyy-mm-dd \
--query 'Events[].CloudTrailEvent' --output text | jq -r "select(.responseElements.instancesSet.items[].privateIpAddress == \"example-private-ip-address\") | [.responseElements.instancesSet.items[].networkInterfaceSet.items[]] "

Nota: Sustituye example-private-ip-address por tu dirección IP privada, example-yyyy-mm-dd por la fecha de inicio y example-region por tu región.

Para usar el evento AssignPrivateIpAddresses para comprobar si asociaste la dirección IP privada a la interfaz de red, ejecuta el siguiente comando lookup-events:

aws cloudtrail lookup-events \--region example-region \
--lookup-attributes AttributeKey=EventName,AttributeValue=AssignPrivateIpAddresses \
--start-time example-yyyy-mm-dd \
--query 'Events[].CloudTrailEvent' --output text | jq -r "select(.responseElements.assignedPrivateIpAddressesSet.assignedPrivateIpAddressSetType[].privateIpAddress == \"example-private-ip-address\" ) | {requestParameters,responseElements}"

Nota: Sustituye example-private-ip-address por tu dirección IP privada, example-yyyy-mm-dd por la fecha de inicio y example-region por tu región.

Para usar el evento AssignIpv6Addresses para comprobar si has asignado la dirección IPv6 a la interfaz de red especificada, ejecuta el siguiente comando lookup-events:

aws cloudtrail lookup-events \--region example-region \
--lookup-attributes AttributeKey=EventName,AttributeValue=AssignIpv6Addresses \
--start-time example-yyyy-mm-dd \
--query 'Events[].CloudTrailEvent' --output text | jq -r "select(.responseElements.AssignIpv6AddressesResponse.assignedIpv6Addresses.item == \"example-IPv6-address\") | [.responseElements.AssignIpv6AddressesResponse] "

Nota: Sustituye example-IPv6-address por tu dirección IPv6, example-yyyy-mm-dd por la fecha de inicio y example-region por tu región.

Uso de registros de CloudWatch para analizar los datos de registro

Nota: Para enviar eventos de registro a Registros de Amazon CloudWatch, configura el proceso de seguimiento. Para más información, consulte Supervisión de archivos registro de CloudTrail con Registros de Amazon CloudWatch.

Comprobación de las direcciones IPv4 asignadas a tu cuenta

Para ver la asignación anterior de direcciones IP elásticas y el servicio que utilizó la dirección IP pública, usa los siguientes eventos:

fields      eventTime as Time,
     userIdentity.accountId as AccountID,
     userIdentity.principalId as Principal,
     awsRegion as Region,
     eventName as Action,
     requestParameters.allocationId as AssociateAddress_AllocationID,
     requestParameters.instanceId as InstanceID,
     requestParameters.privateIpAddress as PrivateIP,
     responseElements.allocationId as AllocateAddress_AllocationID,
     responseElements.publicIp as EIP
| filter

     eventName = "AllocateAddress" or
     eventName = "AssociateAddress" and
     # AssociateAddress does not indicate resources outside EC2 instances.
     (
          EIP = "example-public-ip-addresses" or
          AssociateAddress_AllocationID = "example-allocation-id"
     )
| sort @timestamp desc

Nota: Sustituye example-public-ip-addresses por tus direcciones IP públicas y example-allocation-id por tu id. de asignación.

Para buscar las asignaciones de direcciones IP privadas anteriores, usa los siguientes eventos:

Evento CreateNetworkInterface:

parse @message '"privateIpAddressesSet":{"item":[{"privateIpAddress":"*"' as PrivateIP| fields
eventTime as Time,
userIdentity.accountId as AccountID,
userIdentity.principalId as Principal,
awsRegion as Region,
eventName as Action,
responseElements.networkInterface.networkInterfaceId as ENI
| filter
eventName = "CreateNetworkInterface" and
(
PrivateIP = "example-private-ip-addresses"
)
| sort @timestamp desc

Nota: Sustituye example-private-ip-addresses por tus direcciones IP .

Evento RunInstances:

parse @message '{"privateIpAddress":"*"' as PrivateIP|fields
     eventTime as Time,
     userIdentity.accountId as AccountID,
     userIdentity.principalId as Principal,
     awsRegion as Region,
     eventName as Action
| filter
     eventName = "RunInstances" and
     (
          PrivateIP = "example-private-ip-addresses"
     )
| sort @timestamp desc

Nota: Sustituye example-private-ip-addresses por tus direcciones IP .

Evento AssignPrivateIpAddress:

parse @message '"assignedPrivateIpAddressSetType":[{*}]' as PrivateIpAddress| fields
     eventTime as Time,
     userIdentity.accountId as AccountID,
     userIdentity.principalId as Principal,
     awsRegion as Region,
     eventName as Action
| filter
     eventName = "AssignPrivateIpAddresses" and
     (
          PrivateIpAddress like "example-private-ip-addresses"
     )
| sort @timestamp desc

Note: Replace example-private-ip-addresses with your IP

Nota: Sustituye example-private-ip-addresses por tus direcciones IP .

Consulta los recursos que usaron la interfaz de red:

fields      eventTime as Time,
     userIdentity.accountId as AccountID,
     userIdentity.principalId as Principal,
     awsRegion as Region,
     eventName as Action,
     requestParameters.instanceId as InstanceID,
     requestParameters.networkInterfaceId as ENI
| filter
     eventName = "AttachNetworkInterface" and
     (
          ENI = "example-eni-id"
     )
| sort @timestamp desc

Nota: Sustituy example-eni-id por tu id. de interfaz de red.

Comprobación de las direcciones IPv6 asignadas a tu cuenta

Para buscar las asignaciones anteriores de direcciones IP privadas, usa los siguientes eventos:

Evento AssignIpv6Addresses:

fields    eventTime as Time,
    userIdentity.accountId as AccountID,
    userIdentity.principalId as Principal,
    awsRegion as Region,
    eventName as Action,
    responseElements.AssignIpv6AddressesResponse.assignedIpv6Addresses.item as IPv6
| filter
    eventName = "AssignIpv6Addresses" and
    (
        IPv6 = "example-ipv6-addresses"
    )
| sort @timestamp desc

Nota: Sustituyeexample-ipv6-addresses por tus direcciones IP.

Evento RunInstances:

fields    eventTime as Time,
    userIdentity.accountId as AccountID,
    userIdentity.principalId as Principal,
    awsRegion as Region,
    eventName as Action,
    responseElements.AssignIpv6AddressesResponse.assignedIpv6Addresses.item as IPv6
| filter
    eventName = "RunInstances" and
    (
        PrivateIP = "example-private-ip-addresses"
    )
| sort @timestamp desc

Nota: Sustituye example-private-ip-addresses por tus direcciones IP .

Evento CreateNetworkInterface:

parse @message '"ipv6AddressesSet":{"items":[{"ipv6Address":"*"' as IPv6| fields
     eventTime as Time,
     userIdentity.accountId as AccountID,
     userIdentity.principalId as Principal,
     awsRegion as Region,
     eventName as Action,
     responseElements.instancesSet.items.0.instanceId as InstanceID
| filter
     eventName = "CreateNetworkInterface" and
     (
         IPv6 = "example-ipv6-addresses"
     )
| sort @timestamp desc

Nota: Sustituyeexample-ipv6-addresses por tus direcciones IP.

Consulta los recursos que usaron la interfaz de red:

fields      eventTime as Time,
     userIdentity.accountId as AccountID,
     userIdentity.principalId as Principal,
     awsRegion as Region,
     eventName as Action,
     requestParameters.instanceId as InstanceID,
     requestParameters.networkInterfaceId as ENI
| filter
     eventName = "AttachNetworkInterface" and
     (
         ENI = "example-eni-id" or
     )
| sort @timestamp desc

Nota: Sustituy example-eni-id por tu id. de interfaz de red.

(Opcional) Para comprobar si el prefijo BGP y el ASN de la dirección IP pública corresponden a una dirección IP de AWS, ejecuta el siguiente comando whois:

whois -h whois.cymru.com " -v example-public-ip-address"

Nota: Sustituye example-public-ip-address por tu dirección IP pública.

Revisión del historial de direcciones IP

Puedes usar un archivo ip-ranges.json, el Administrador de direcciones IP (IPAM) de Amazon VPC o AWS CLI para buscar una dirección IP en el historial de direcciones IP.

ip-ranges.json

Sigue estos pasos:

  1. Para ver una lista de todas las direcciones IP públicas que pertenecen a un servicio de AWS, consulta el archivo ip-ranges.json.
  2. Para filtrar la lista, utiliza las siguientes variables:
    "ip_prefix"
    "region"
    "service"

IPAM

Para usar IPAM para rastrear las VPC o los recursos que usaron una dirección IP específica a lo largo del tiempo, sigue estos pasos:

  1. Abre la consola de IPAM.
  2. En el panel de navegación, selecciona Buscar historial de IP.
  3. Introduce tu dirección IP.
  4. Selecciona Buscar.

Los resultados de la búsqueda muestran los siguientes elementos:

  • VPC o interfaz de red asociada a la dirección IP
  • Intervalo de tiempo en el que se asignó la dirección IP
  • Recursos relacionados

AWS CLI

Para usar AWS CLI para obtener información de la dirección IP, ejecuta el siguiente comando get-ipam-address-history:

aws ec2 get-ipam-address-history \
 --ipam-scope-id ipam-scope-###### \
 --cidr 10.0.1.5 \
 --region us-east-1

Nota: Si utilizas AWS Organizations, puedes ampliar la búsqueda de direcciones IP a nivel de la organización para realizar un seguimiento centralizado de las cuentas de varios miembros.

Designación de una cuenta de administrador de IPAM

Sigue estos pasos:

  1. En tu organización, elige una cuenta de AWS para que sea la cuenta de administración.
  2. Para convertir tu id. de cuenta en el administrador de IPAM de tu organización, ejecuta el siguiente comando enable-aws-service-access en tu cuenta de administración:
    aws organizations enable-aws-service-access \
     --service-principal ipam.amazonaws.comaws ec2 enable-ipam-organization-admin-account \
     --delegated-admin-account-id YOUR_ACCOUNT_ID

Nota: Sustituye YOUR_ACCOUNT_ID por el ID de tu cuenta.

Creación de un IPAM en la cuenta de administrador

Completa los siguientes pasos en tu cuenta de administrador de IPAM:

  1. Para crear un IPAM, ejecuta el siguiente comando create-ipam:

    aws ec2 create-ipam \
     --description "Org-wide IPAM" \
     --operating-regions RegionName=us-east-1 RegionName=us-west-2

    Nota: Sustituye us-east-1 y us-west-2 por tus regiones.

    Este IPAM ahora puede recopilar y administrar el uso de CIDR en varias cuentas.

  2. Para crear un proceso de descubrimiento de recursos, ejecuta el siguiente comando create-ipam-resource-discovery:

    aws ec2 create-ipam-resource-discovery \
    --description "Org-wide Discovery" \
    --operating-regions RegionName=us-east-1 \
    --tag-specifications ResourceType=ipam-resource-discovery,Tags=[{Key=Org,Value=Enabled}]

    Nota: Sustituye us-east-1 por tu región.

  3. Para asociar la detección de recursos a IPAM, ejecuta el siguiente comando associate-ipam-resource-discovery:

    aws ec2 associate-ipam-resource-discovery \
     --ipam-id ipam-######## \
     --ipam-resource-discovery-id ipam-res-disco-####

Puedes compartir un descubrimiento de recursos con otra cuenta.

Nota: Cada cuenta de miembro de tu organización debe compartir datos de recursos con el IPAM. Si utilizas la misma organización y has configurado la detección centralizada, los datos de los recursos se comparten automáticamente. Utiliza el panel de IPAM para supervisar los recursos que has descubierto, como las VPC y las direcciones IP.

Importante:

  • Todas las direcciones IP que asignes a cualquier cuenta o VPC de la organización aparecerán en el historial de direcciones IP del IPAM.
  • Puedes usar la consola de IPAM o AWS CLI para consultar el uso anterior de una dirección IP.
  • Si la dirección IP del historial de IPAM es de AWS y hay actividad malintencionada, denuncia el uso indebido de los recursos de AWS.
OFICIAL DE AWSActualizada hace 2 meses