我的 Ubuntu 14.04 透過 ufw 來設定 firewall ,關於 ufw 設定請參考 https://benjr.tw/93733
目前開放的網路埠只有 ssh (port 22) , http (port 80) , https (port 443)
root@localhost:~# ufw status Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 80 ALLOW Anywhere 443 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6) 80 (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
在 /var/log/syslog 一堆關於 ufw 的訊息.
root@localhost:~# cat /var/log/syslog Aug 28 10:21:14 localhost kernel: [UFW BLOCK] IN=eth0 OUT= MAC=f2:3c:91:3b:ba:a3:50:87:89:40:9f:c1:08:00 SRC=187.185.231.2 DST=139.162.22.140 LEN=40 TOS=0x00 PREC=0x00 TTL=244 ID=43068 PROTO=TCP SPT=35048 DPT=23 WINDOW=14600 RES=0x00 SYN URGP=0
這訊息代表
- Date: 訊息發生時間,日期加上時間.
- Hostname: 發生訊息的主機名稱.
- Logged Event: 訊息的種類, UFW BLOCK 表示 UFW (Uncomplicated Firewall) 阻止連線.
- IN: 代表該訊息是傳入事件.
- OUT: 代表該訊息是傳出事件.
- MAC: f2:3c:91:3b:ba:a3:目的地(本地端) MAC + 50:87:89:40:9f:c1: 來源 MAC 地址組合 , 08:00 (不確定)
- SRC: 來源端的 IP (連線的遠端)
- DST: 目的地的 IP (本地端)
- LEN: 封包大小
- TOS: Type of service
- PREC: Precedence 優先權
- TTL: Time To Live 封包 在到目的地之前,最多可以透過幾個路由器之間轉送,直到 TTL 的上限值.
- ID: ??
- PROTO: 封包的協議,可為 TCP 或是 UDP.
- SPT: 封包來源埠(連線的遠端).
- DPT: 封包目的埠(本地端).
- WINDOW: windows size .請參考 https://benjr.tw/3020
- RES: ??
- SYN URGP: 是否需要三次握手(three-way handshake), 0 表示不需要. 請參考 https://benjr.tw/3020
透過簡單的 bash 來統計一下 UFW 阻擋了幾個 TCP / IP 不正當的請求.
root@localhost:~# grep BLOCK /var/log/syslog | awk 'END{print "UFW Block:"NR}' UFW Block:1888
- grep: 主要是在一群文字資料裡搜尋 Keyword (BLOCK) 關鍵字在哪一行.
- awk: 將一整行做多個 欄位(Field) 的資料處理. print 輸出格式,到標準輸出 (預設為 terminal),NR (Number of Record) 代表目前處理的資料的第幾行. END {} 只會在最後時執行一次.
進階一點我們還可以來統計一下,都是哪一些 IP 發出的需求.
root@localhost:~# grep BLOCK /var/log/syslog | awk '{print $11}' | sort | uniq -c | sort -n ... 15 SRC=148.177.1.213 15 SRC=218.211.34.185 16 SRC=123.249.24.170 19 SRC=186.15.47.26 19 SRC=91.195.103.149 20 SRC=91.211.0.103 85 SRC=125.64.94.201
- grep: 主要是在一群文字資料裡搜尋 Keyword (BLOCK) 關鍵字在哪一行.
- awk: 將一整行做多個 欄位(Field) 的資料處理. print 輸出格式,到標準輸出 (預設為 terminal),$11 代表第 11 欄資料.
- sort: 進行排序(預設使用文字來進行排序), -n 依據 數字 來進行排序.
- uniq: 刪除重複的行 並透過 -c 進行計數.
這時候就可以透過 ufw 來進行 IP 封鎖 (但後來發現這些 IP 一直變動,好像封鎖不完).
root@localhost:~# ufw deny from <ip address>
沒有解決問題,試試搜尋本站其他內容