Amazon VPC にはないがログにはある IP アドレスを特定する方法を教えてください。
現在使用中の Amazon Virtual Private Cloud (Amazon VPC) にはないが、ログにはある IP アドレスを特定したいです。
簡単な説明
AWS CloudTrail を使用して、IP アドレスの追加や削除を含む過去のイベントを確認できます。過去のイベントを確認するには、過去 90 日間のイベントについては AWS コマンドラインインターフェイス (AWS CLI) を使用します。または、Amazon CloudWatch Logs Insights を使用します。
解決策
AWS CLI
注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
1.AllocateAddress イベントを使用して、Elastic IP アドレスがアカウントに割り当てられているかどうかを確認します。
注: お使いのものでそれぞれ、example-eip-address を Elastic IP アドレスに、example-mm-dd-yyyy を開始日に、example-region を AWS リージョンに置き換えます。
aws cloudtrail lookup-events \ --region example-region \ --lookup-attributes AttributeKey=EventName,AttributeValue=AllocateAddress \ --start-time example-mm-dd-yyyy \ --query 'Events[].Resources[?ResourceName == `example-eip-address`].{ResourceType:ResourceType,IP:ResourceName}[]' --output table
注: 上記の CloudTrail クエリでは、Amazon Elastic Compute Cloud (Amazon EC2) のパブリック IPv4 アドレスはリストに含まれません。
2.AssociateAddress イベントと割り当て ID フィルターを使用して、Elastic IP アドレスを使用したサービスを確認します。
注: お使いのものでそれぞれ、example-allocation-id を Elastic IP アドレス ID に、example-mm-dd-yyyy を開始日に、example-region をリージョンに置き換えます。
aws cloudtrail lookup-events \ --region example-region \ --lookup-attributes AttributeKey=ResourceName,AttributeValue=example-allocation-id \ --start-time example-mm-dd-yyy
3.CreateNetworkInterface イベントを使用して、プライベート IP アドレスがエラスティックネットワークインターフェイスに割り当てられているかどうかを確認します。
注: お使いのものでそれぞれ、example-private-ip-address をプライベート IP アドレスに、example-mm-dd-yyyy を開始日に、example-region をリージョンに置き換えます。
aws cloudtrail lookup-events \ --region example-region \ --lookup-attributes AttributeKey=EventName,AttributeValue=CreateNetworkInterface \ --start-time example-dd-mm-yyyy \ --query 'Events[].CloudTrailEvent' --output text | jq -r "select(.responseElements.networkInterface.privateIpAddressesSet.item[].privateIpAddress == \"example-private-ip-address\")"
4.AttachNetworkInterface イベントを使用して、リソースが過去にネットワークインターフェイスを使用したことがあるかどうかを確認します。
注: お使いのものでそれぞれ、example-eni-id をネットワークインターフェイス ID に、example-mm-dd-yyyy を開始日に、example-region をリージョンに置き換えます。
aws cloudtrail lookup-events \ --region example-region \ --lookup-attributes AttributeKey=EventName,AttributeValue=AttachNetworkInterface \ --start-time example-dd-mm-yyyy \ --query 'Events[].CloudTrailEvent' --output text | jq -r "select(.requestParameters.networkInterfaceId == \"example-eni-id\")"
5.RunInstances イベントを使用して、インスタンスの起動時にプライベート IP アドレスがインスタンスに関連付けられているかどうかを確認します。
注: お使いのものでそれぞれ、example-private-ip-address をプライベート IP アドレスに、example-mm-dd-yyyy を開始日に、example-region をリージョンに置き換えます。
aws cloudtrail lookup-events \ --region example-region \ --lookup-attributes AttributeKey=EventName,AttributeValue=RunInstances \ --start-time example-mm-dd-yyyy \ --query 'Events[].CloudTrailEvent' --output text | jq -r "select(.responseElements.instancesSet.items[].privateIpAddress == \"example-private-ip-address\") | [.responseElements.instancesSet.items[].networkInterfaceSet.items[]] "
6.AssignPrivateIpAddresses イベントを使用して、プライベート IP アドレスがネットワークインターフェイスに関連付けられているかどうかを確認します。
注: お使いのものでそれぞれ、example-private-ip-address をプライベート IP アドレスに、example-mm-dd-yyyy を開始日に、example-region をリージョンに置き換えます。
aws cloudtrail lookup-events \ --region example-region \ --lookup-attributes AttributeKey=EventName,AttributeValue=AssignPrivateIpAddresses \ --start-time example-mm-dd-yyyy \ --query 'Events[].CloudTrailEvent' --output text | jq -r "select(.responseElements.assignedPrivateIpAddressesSet.assignedPrivateIpAddressSetType[].privateIpAddress == \"example-private-ip-address\" ) | {requestParameters,responseElements}"
7.AssignIPv6Addresses イベントを使用して、IPv6 アドレスが指定されたネットワークインターフェイスに割り当てられているかどうかを確認します。
注: お使いのものでそれぞれ、example-IPv6-address を IPv6 アドレスに、example-mm-dd-yyyy を開始日に、example-region をリージョンに置き換えます。
aws cloudtrail lookup-events \ --region example-region \ --lookup-attributes AttributeKey=EventName,AttributeValue=AssignIpv6Addresses \ --start-time example-mm-dd-yyyy \ --query 'Events[].CloudTrailEvent' --output text | jq -r "select(.responseElements.AssignIpv6AddressesResponse.assignedIpv6Addresses.item == \"example-IPv6-address\") | [.responseElements.AssignIpv6AddressesResponse] "
CloudWatch Logs Insights
注: ログイベントを CloudWatch Logs に送信するには、証跡を設定します。詳細については、「Amazon CloudWatch Logs で CloudTrail ログファイルを監視する」を参照してください。
IPv4 アドレスがアカウントに割り当てられているかを確認する
次の手順を実行します。
1.過去の Elastic IP アドレスの割り当てと、パブリック IP アドレスを使用したサービスを確認します。
注: example public ip-addresses はお使いの IP アドレスに、example-allocation-id はお使いの割り当て ID に置き換えます。
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
2.次のイベントを使用して、以前に割り当てられたプライベート IP アドレスを特定します。
注: example-private-ip-addresses は、お使いの IP アドレスに置き換えます。
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
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
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
3.ネットワークインターフェースを使用したリソースを確認します。
注: example-eni-id は、お使いのネットワークインターフェイス ID に置き換えます。
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
IPv6 アドレスがアカウントに割り当てられているかを確認する
次の手順を実行します。
1.次のイベントを使用して、以前に割り当てられたプライベート IP アドレスを特定します。
注: example-ipv6-addresses は、お使いの IP アドレスに置き換えます。
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
RunInstances イベント
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 = "RunInstances"and ( IPv6 = "example-ipv6-addresses" ) | sort @timestamp desc
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
2.ネットワークインターフェースを使用したリソースを確認します。
注: example-eni-id は、お使いのネットワークインターフェイス ID に置き換えます。
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
3.(オプション) 次のコマンドを実行して、パブリック IP アドレスの BGP プレフィックスと ASN が AWS IP アドレスであるかどうかを確認します。
注: example-public-ip-address は、お使いのパブリック IP アドレスに置き換えます。Linux マシンで次のコマンドを実行します。
$ whois -h whois.cymru.com " -v example-public-ip-address"
AWS IP アドレスであり、悪意のあるアクティビティが確認された場合は、AWS Trust & Safety にお問い合わせください。
関連情報
CloudWatch Logs Insights でログデータを分析する
現在、Amazon VPC で不明な IP アドレスを持っているリソースを特定する方法を教えてください
関連するコンテンツ
- 質問済み 5年前lg...
- AWS公式更新しました 2年前
- AWS公式更新しました 9ヶ月前