AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

Amazon VPC にはないがログにはある IP アドレスを特定する方法を教えてください。

所要時間5分
0

現在使用中の 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 アドレスを持っているリソースを特定する方法を教えてください

Amazon CloudWatch で AWS CloudTrail を分析する

AWS の IP アドレス範囲

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ