---
# System prepended metadata

title: 監控到 internet 訪問哪些 Public Url 的相關 log
tags: [AWS]

---

監控到 internet 訪問哪些 Public Url 的相關 log
===
###### tags: `AWS`
* **選項 1 – 開啟VPC FLOW LOG並傳入CLOUDWATCH LOGS日誌組**
* **選項 2 – 在 Linux 和 Windows 上使用第三方工具 tcpdump 和 WinDump 捕獲主機上發起的出站連接**

## **選項1:**

### **創建CloudWatch Logs日誌組**
在頁面中填寫日誌組名稱："Secworkshopvpc_flowlog"。在"保留設定"下拉框裡，選擇"1週(7天)"，點擊【建立】按鈕

![](https://i.imgur.com/fnlDHNj.png)


---

### **創建Flowlogs所需的IAM**
1. 在導覽窗格中，選擇 Policies (政策)。
2. 選擇 Create policy (建立政策)。
3. 在 Create policy (建立政策) 頁面上，執行下列動作：
 * 選擇 JSON。
 * 將此視窗的內容取代為本節開頭的許可政策。
 * 選擇 Next: Tags (下一步：標籤) 和 Next: Review (下一步：檢閱)。
 * 輸入您的政策的名稱和選用描述，然後選擇 Create policy (建立政策)。
```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Resource": "*"
    }
  ]
}  
```
![](https://i.imgur.com/9gcmC44.png)

4. 在導覽窗格中，選擇 Roles (角色)。
5. 選擇 Create Role (建立角色)。
6. 對於 Trusted entity type (信任的實體類型)，選擇 Custom trust policy (自訂信任政策)。對於 Custom trust policy (自訂信任政策)，將 "Principal": {}, 取代為下列內容，然後選擇 Next (下一步)。
```
"Principal": {
   "Service": "vpc-flow-logs.amazonaws.com"
},
```
![](https://i.imgur.com/akYqDJZ.png)

7. 在 Add permissions (新增許可) 頁面上，選取您先前在此程序中建立的政策的核取方塊，然後選擇 Next (下一步)。
8. 輸入您角色的名稱，然後選擇性提供描述。
9. 選擇 Create Role (建立角色)。


---

### **點選該VPC建立流程日誌**

![](https://i.imgur.com/EWPzIJU.png)

* 在"名稱"一欄輸入名稱，比如：Secworkshopvpc_flow。
* 在"篩選條件"中選擇"全部"單選框。
* 在"最大聚合時間間隔"選擇"10分鐘"
* 在"目標"中選擇"發送到CloudWatch Logs"
* 在"目標日誌組"下拉列表中選擇上一步驟中創建的日誌組：“Secworkshopvpc_flowlog”。
* 在"IAM角色"中，點擊"設置權限"鏈接，這會打開一個新的頁面，在打開的頁面中記錄"角色名稱"一欄的內容，取名為"flowlogsRole"，並點擊【允許】按鈕。
* 切換回至創建流日誌頁面中，在IAM 角色下拉列表中選擇剛剛記錄的角色名稱："flowlogsRole"。

![](https://i.imgur.com/qhivMiR.png)


---

![](https://i.imgur.com/Hg25ICU.png)

---

![](https://i.imgur.com/Bwxzw6F.png)

### **在CloudWatch的log group裡面查看flowlogs**

![](https://i.imgur.com/bJ8U6Jz.png)

### **透過CLOUDWATCH LOGS INSIGHT分析VPC FLOW LOG**

![](https://i.imgur.com/t4AArEu.png)

### **參考連結:**
[建立Flowlogs所需的IAM](https://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/flow-logs-cwl.html)
[設置CLOUDWATCH LOGS INSIGHT](https://seclab.cloudguru.run/%E5%9F%BA%E7%A1%80/3.networksecurity/9.2.flowlog_insight/)

---

## **選項2:**

### **安裝Tcpdump**
**EC2的OS為Ubuntu 20.04**
```
sudo apt update
sudo apt install tcpdump
```

![](https://i.imgur.com/2AlCfK6.png)


**因此，為了只捕獲在我們機器上啟動的 TCP 數據包，我們必須告訴 tcpdump 只顯示設置了 SYN 標誌的數據包。我們還必須排除設置了 ACK 標誌的數據包，否則我們也會得到外部主機的響應：**

```
tcpdump -i any src host 172.32.1.126 and "tcp[tcpflags] & (tcp-syn) != 0" and "tcp[tcpflags] & (tcp-ack) == 0"
```
**請注意，tcpdump 的語法不允許類似"(tcp-syn) == 1"的內容。另請注意，您不能將"&"替換為"and"**

![](https://i.imgur.com/elQXpmR.png)

**開啟另一個SSH連接隨意Curl網站，可以查看到Tcpdump會持續記錄發送出的請求**

![](https://i.imgur.com/Mjaa4ii.png)

**測試curl**

![](https://i.imgur.com/2eOpQry.png)

![](https://i.imgur.com/AIs0cGK.png)

**保存所有從本機訪問internet的紀錄**
```
tcpdump -i any src host 10.0.0.1 and "tcp[tcpflags] & (tcp-syn) != 0" and "tcp[tcpflags] & (tcp-ack) == 0" &> outbound.log &
```

**使用Tcpdump捕捉本機發出HTTP的請求**
```
sudo tcpdump -i eth0 -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504F5354 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x48545450 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x3C21444F'
```
**Curl送出的HTTP請求**

![](https://i.imgur.com/dCpFqKj.png)

**捕捉本機發出的HTTP請求內容**

![](https://i.imgur.com/YdRdFf8.png)

---


[Tcpdump範例參考](https://4sysops.com/archives/capture-outbound-connections-initiated-on-your-host-with-tcpdump-and-windump-on-linux-and-windows/)