Slide 1

Slide 1 text

淺談網路爬蟲、網站安全與 WordPress 防禦機制 Terry Lin

Slide 2

Slide 2 text

講者自介 林新邦 ( Terry Lin) 現職:豐趣科技 前端工程師 GitHub: terrylinooo Website: https://terryl.in WP Githuber MD (Markdown 編輯器外掛 ) WP Shieldon (安全性外掛) Mynote (佈景主題) WordPress 相關作品

Slide 3

Slide 3 text

什麼是網路爬蟲 維基百科的解釋: https://zh.wikipedia.org/wiki/網路爬蟲 一言以蔽之: 以搜集資料為目的的自動程式。

Slide 4

Slide 4 text

常見的網路爬蟲 1 搜尋引擎 2 網路服務商 3 數據收集 4 盜文採集、垃圾流量網站 5 資安威脅

Slide 5

Slide 5 text

(1) 搜尋引擎 ● Google、Bing 、Yandex (俄羅斯)、Baidu (中國),etc. 1 沒有目標、連結跟隨 2 遵守網路禮儀。( robots.txt) 3 為網站帶來自然流量

Slide 6

Slide 6 text

(2) 數據收集 ● 反向連結分析 (e.g. ahref . com) ● 版權比對 (e.g. copyscape . com) ● SEO 分析 (e.g. semrush . com ) ,等等... 1 沒有目標、連結跟隨 2 不一定遵守網路禮儀。( robots.txt) 3 收集數據後,包裝成服務轉售

Slide 7

Slide 7 text

(3) 網路服務商 ● 垃圾貼文 (Link building) ● 比價網站,等等 1 有採集目標 2 不遵守網路禮儀。( robots.txt) 3 收集數據後,整理資訊呈現

Slide 8

Slide 8 text

(4) 盜文採集 ● 非自產型文章農場 ● 網站鏡像 (Website Mirroring) ● 離線下載軟體,等等 看到長的和你網站一模一樣的網站 吼...氣氣氣氣氣氣氣 (Shieldon 誕生的起源)

Slide 9

Slide 9 text

資安威脅 隨機弱點掃描、攻擊目標收集 來看看實例

Slide 10

Slide 10 text

cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr 查詢 access.log 連線次數最多的IP

Slide 11

Slide 11 text

grep 150.109.67.14 access.log 這個 IP 想做什麼?

Slide 12

Slide 12 text

探嗅目標、弱點掃描 150.109.67.14 - - [02/Sep/2019:07:23:31 +0200] "GET /phpMyAdmln/index.php HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" 150.109.67.14 - - [02/Sep/2019:07:23:31 +0200] "GET /program/index.php HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" 150.109.67.14 - - [02/Sep/2019:07:23:32 +0200] "GET /shopdb/index.php HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" 150.109.67.14 - - [02/Sep/2019:07:23:32 +0200] "GET /phppma/index.php HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" 150.109.67.14 - - [02/Sep/2019:07:23:32 +0200] "GET /phpmy/index.php HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" 150.109.67.14 - - [02/Sep/2019:07:23:33 +0200] "GET /mysql/admin/index.php HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" 150.109.67.14 - - [02/Sep/2019:07:23:33 +0200] "GET /mysql/dbadmin/index.php HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" 150.109.67.14 - - [02/Sep/2019:07:23:33 +0200] "GET /mysql/sqlmanager/index.php HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" 150.109.67.14 - - [02/Sep/2019:07:23:33 +0200] "GET /mysql/mysqlmanager/index.php HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" 150.109.67.14 - - [02/Sep/2019:07:23:33 +0200] "GET /wp-content/plugins/portable-phpmyadmin/wp-pma- mod/index.php HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" 150.109.67.14 - - [02/Sep/2019:07:23:33 +0200] "GET /manager/html HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0"

Slide 13

Slide 13 text

伺服器端的防禦機制 Apache Nginx ngx_http_limit_req_module (內建) mod_evasive (自行安裝)

Slide 14

Slide 14 text

Apache : 模組 mod_evasive 儲存在記憶體的表大小 設定的時間區間內頁面最大的網頁讀取數 設定的時間區間內網站最大的網頁讀取數 被封鎖的秒數

Slide 15

Slide 15 text

Nginx : 模組 ngx_http_limit_req_module rate=1r/s : 每秒1次 burst=5 : 最大緩衝次數

Slide 16

Slide 16 text

思考一下 伺服器方案的優點和缺點

Slide 17

Slide 17 text

網站上的訪客,覺得? 訪客A: 網站壞了,工程師好遜

Slide 18

Slide 18 text

搜尋引擎吃網頁吃到一半遇到這個? GoogleBot: 這張網頁有問題,給它排名低一點

Slide 19

Slide 19 text

有沒有解決方案,不會影響搜尋引擎排名?

Slide 20

Slide 20 text

應用程式面的防禦機制

Slide 21

Slide 21 text

Shieldon 的 生命週期 部署在 PHP 套件管裡器 Composer 自動載入之後 PHP 框架的設計模式如有 Middleware (中介層) 1 2

Slide 22

Slide 22 text

WordPress Hook 生命週期 部署在 plugins_loaded 第一順位 1

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

過濾爬蟲的優點 1 節省流量 2 節省系統開銷 3 提高攻擊者成本 4 提高安全性 5 智慧財產權保護

Slide 26

Slide 26 text

優點1:節省流量 (平均頁面下載 ? MB 降到 < 20KB ) 例:Google Cloud 網路流量定價

Slide 27

Slide 27 text

優點2:節省系統開銷 使用 Acunetix 試用版進行掃描15分鐘後 CPU 每5分鐘平均: 5.02 → 2.34 ↓ 53.78% Memory 已使用:490752 → 379944 ↓ 22.58% 啟用前 啟用後

Slide 28

Slide 28 text

優點3:提高攻擊者成本 ● 更多的 Proxy IP Shared - 0.5 美元 Dedicated - 2 美元 ● 更多的時間 與其浪費時間在你的網站,不如找其它目標

Slide 29

Slide 29 text

優點4:提高安全性 ● 阻礙弱點掃描,降低找到弱點機率 ● 攻擊者嘗試修改標頭資訊 (Header)、修改表單 (Form) 測試弱點會一直受到要求驗證碼的阻礙

Slide 30

Slide 30 text

優點5:智慧財產權保護 ● 保護文章被打包帶走

Slide 31

Slide 31 text

過濾爬蟲的缺點 1 偶爾造成訪客瀏覽困擾 2 擋到不希望被阻擋的爬蟲 3 可能阻擋到 WordPress 正常功能使用 (請回報給我立即排除)

Slide 32

Slide 32 text

WP Shieldon 設定說明及過濾原理 ● 設定 ● 動作記錄 ● 總覽 ● 規則表 ● 過濾器記錄表 ● 工作階段表 ● IP 位址管理 ● XSS 防護 ● 網頁驗證

Slide 33

Slide 33 text

設定 → 守護進程 ● 必須啟用才會正式運作。

Slide 34

Slide 34 text

設定 → 守護進程 → 資料驅動 ● 效率 Redis > MySQL > SQLite > File system

Slide 35

Slide 35 text

設定 → 守護進程 → 重設資料週期 ● 已經不會再度造訪的 IP 累積越多,查詢效率越差

Slide 36

Slide 36 text

設定 → 守護進程 → IP 位址來源 ● 網站訪客的 IP 來源

Slide 37

Slide 37 text

設定 → 守護進程 → 線上工作階段限制

Slide 38

Slide 38 text

設定 → 守護進程 → 線上工作階段限制 ● 線上 280 個工作階段。 ● 限制 100 個工作階段。 ● 我是第 280 個,須等待 180 人。 ● 每人有 5 分鐘可以瀏覽, 過期後會被踢出重新排隊。

Slide 39

Slide 39 text

過濾器 (Filters) 1 點閱頻率 2 工作階段 3 HTTP 參照來源 4 Cookie

Slide 40

Slide 40 text

設定 → 守護進程 → 檢查頻率(Filter 1)

Slide 41

Slide 41 text

設定 -> 過濾器 -> 工作階段(Filter 2)

Slide 42

Slide 42 text

設定 → 過濾器 → HTTP 參照來源位址(Filter 3) ● HTTP_REFERER 為空的會被標記

Slide 43

Slide 43 text

設定 → 過濾器 → Cookie(Filter 4) ● 無法執行網頁的 JavaScript 以產生 Cookie,會被標記

Slide 44

Slide 44 text

元件 (Components) 1 受信任的檢索機器人 2 資料標頭 3 使用者代理 4 DNS 反向解析

Slide 45

Slide 45 text

設定 → 元件 → 受信任的檢索機器人 ● [嚴格模式] 下一頁說明

Slide 46

Slide 46 text

IP 與 IP 反解

Slide 47

Slide 47 text

設定 → 元件 → 資料標頭 (Header)

Slide 48

Slide 48 text

設定 → 元件 → 使用者代理 (User-agent)

Slide 49

Slide 49 text

設定 → 元件 → DNS 反向解析 (rDNS)

Slide 50

Slide 50 text

設定 → CAPTCHA → Google ReCAPTCHA

Slide 51

Slide 51 text

設定 → CAPTCHA → Google ReCAPTCHA v2 v3

Slide 52

Slide 52 text

設定 -> CAPTCHA -> 圖片CAPTCHA 驗證

Slide 53

Slide 53 text

設定 → CAPTCHA → 圖片CAPTCHA 驗證

Slide 54

Slide 54 text

設定 → 排除項目 → 網址

Slide 55

Slide 55 text

設定 → 排除項目 → 頁面

Slide 56

Slide 56 text

IP管理 ● 全站 ● 登入 ● 註冊 ● XML-RPC 可設定封鎖單一個 IP 也可封鎖 IP 區段

Slide 57

Slide 57 text

IP管理 → 登入 ( wp.login.php ) ● 給沒有固定 IP 的使用者,一個避免封鎖的入口 ● 這個網址只能你本人知道。

Slide 58

Slide 58 text

XSS 防護

Slide 59

Slide 59 text

XSS 防護 不想過濾全部,也 可只針對特定變數 名稱。

Slide 60

Slide 60 text

網頁認證

Slide 61

Slide 61 text

報表 → 動作記錄

Slide 62

Slide 62 text

報表 → 資料週期 → 工作階段表

Slide 63

Slide 63 text

報表 → 資料週期 → 過濾器記錄表

Slide 64

Slide 64 text

報表 → 資料週期 → 規則表

Slide 65

Slide 65 text

總覽

Slide 66

Slide 66 text

WP Shieldon 外掛下載 https://wordpress.org/plugins/wp-shieldon/ https://github.com/terrylinooo/wp-shieldon 開放源碼 WordPress官方下載點

Slide 67

Slide 67 text

實例 https://terryl.in (WP Shieldon外掛) https://shieldon.io (Shieldon Firewall)

Slide 68

Slide 68 text

END