監控到 internet 訪問哪些 Public Url 的相關 log === ###### tags: `AWS` * **選項 1 – 開啟VPC FLOW LOG並傳入CLOUDWATCH LOGS日誌組** * **選項 2 – 在 Linux 和 Windows 上使用第三方工具 tcpdump 和 WinDump 捕獲主機上發起的出站連接** ## **選項1:** ### **創建CloudWatch Logs日誌組** 在頁面中填寫日誌組名稱:"Secworkshopvpc_flowlog"。在"保留設定"下拉框裡,選擇"1週(7天)",點擊【建立】按鈕  --- ### **創建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": "*" } ] } ```  4. 在導覽窗格中,選擇 Roles (角色)。 5. 選擇 Create Role (建立角色)。 6. 對於 Trusted entity type (信任的實體類型),選擇 Custom trust policy (自訂信任政策)。對於 Custom trust policy (自訂信任政策),將 "Principal": {}, 取代為下列內容,然後選擇 Next (下一步)。 ``` "Principal": { "Service": "vpc-flow-logs.amazonaws.com" }, ```  7. 在 Add permissions (新增許可) 頁面上,選取您先前在此程序中建立的政策的核取方塊,然後選擇 Next (下一步)。 8. 輸入您角色的名稱,然後選擇性提供描述。 9. 選擇 Create Role (建立角色)。 --- ### **點選該VPC建立流程日誌**  * 在"名稱"一欄輸入名稱,比如:Secworkshopvpc_flow。 * 在"篩選條件"中選擇"全部"單選框。 * 在"最大聚合時間間隔"選擇"10分鐘" * 在"目標"中選擇"發送到CloudWatch Logs" * 在"目標日誌組"下拉列表中選擇上一步驟中創建的日誌組:“Secworkshopvpc_flowlog”。 * 在"IAM角色"中,點擊"設置權限"鏈接,這會打開一個新的頁面,在打開的頁面中記錄"角色名稱"一欄的內容,取名為"flowlogsRole",並點擊【允許】按鈕。 * 切換回至創建流日誌頁面中,在IAM 角色下拉列表中選擇剛剛記錄的角色名稱:"flowlogsRole"。  ---  ---  ### **在CloudWatch的log group裡面查看flowlogs**  ### **透過CLOUDWATCH LOGS INSIGHT分析VPC FLOW LOG**  ### **參考連結:** [建立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 ```  **因此,為了只捕獲在我們機器上啟動的 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"**  **開啟另一個SSH連接隨意Curl網站,可以查看到Tcpdump會持續記錄發送出的請求**  **測試curl**   **保存所有從本機訪問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請求**  **捕捉本機發出的HTTP請求內容**  --- [Tcpdump範例參考](https://4sysops.com/archives/capture-outbound-connections-initiated-on-your-host-with-tcpdump-and-windump-on-linux-and-windows/)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up