網路爬蟲與 WordPress 防禦機制 / Anti-scraping and WordPress Security Defence_Terry Lin

網路爬蟲與 WordPress 防禦機制 / Anti-scraping and WordPress Security Defence_Terry Lin

開場白與講者自介 什麼是網路爬蟲
常見網路爬蟲介紹
— 搜尋引擎
— 大數據收集
— 網路服務商
— 盜文採集、垃圾流量網站
— 隨機弱點掃描、網路攻擊目標搜集
進行過濾爬蟲的優點與缺點 伺服器端的防禦機制 應用程式面的防禦機制 免費安全外掛介紹 – WP Shieldon 與會夥伴現場互動 開放提問

0d9743a94b19d92224b6928a6c2f8ad1?s=128

WordCamp Taipei

December 28, 2019
Tweet

Transcript

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

  2. 講者自介 林新邦 ( Terry Lin) 現職:豐趣科技 前端工程師 GitHub: terrylinooo Website:

    https://terryl.in WP Githuber MD (Markdown 編輯器外掛 ) WP Shieldon (安全性外掛) Mynote (佈景主題) WordPress 相關作品
  3. 什麼是網路爬蟲 維基百科的解釋: https://zh.wikipedia.org/wiki/網路爬蟲 一言以蔽之: 以搜集資料為目的的自動程式。

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

    資安威脅
  5. (1) 搜尋引擎 • Google、Bing 、Yandex (俄羅斯)、Baidu (中國),etc. 1 沒有目標、連結跟隨 2

    遵守網路禮儀。( robots.txt) 3 為網站帶來自然流量
  6. (2) 數據收集 • 反向連結分析 (e.g. ahref . com) • 版權比對

    (e.g. copyscape . com) • SEO 分析 (e.g. semrush . com ) ,等等... 1 沒有目標、連結跟隨 2 不一定遵守網路禮儀。( robots.txt) 3 收集數據後,包裝成服務轉售
  7. (3) 網路服務商 • 垃圾貼文 (Link building) • 比價網站,等等 1 有採集目標

    2 不遵守網路禮儀。( robots.txt) 3 收集數據後,整理資訊呈現
  8. (4) 盜文採集 • 非自產型文章農場 • 網站鏡像 (Website Mirroring) • 離線下載軟體,等等

    看到長的和你網站一模一樣的網站 吼...氣氣氣氣氣氣氣 (Shieldon 誕生的起源)
  9. 資安威脅 隨機弱點掃描、攻擊目標收集 來看看實例

  10. cat access.log | awk '{print $1}' | sort | uniq

    -c | sort -nr 查詢 access.log 連線次數最多的IP
  11. grep 150.109.67.14 access.log 這個 IP 想做什麼?

  12. 探嗅目標、弱點掃描 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"
  13. 伺服器端的防禦機制 Apache Nginx ngx_http_limit_req_module (內建) mod_evasive (自行安裝)

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

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

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

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

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

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

  20. 應用程式面的防禦機制

  21. Shieldon 的 生命週期 部署在 PHP 套件管裡器 Composer 自動載入之後 PHP 框架的設計模式如有

    Middleware (中介層) 1 2
  22. WordPress Hook 生命週期 部署在 plugins_loaded 第一順位 1

  23. None
  24. None
  25. 過濾爬蟲的優點 1 節省流量 2 節省系統開銷 3 提高攻擊者成本 4 提高安全性 5

    智慧財產權保護
  26. 優點1:節省流量 (平均頁面下載 ? MB 降到 < 20KB ) 例:Google Cloud

    網路流量定價
  27. 優點2:節省系統開銷 使用 Acunetix 試用版進行掃描15分鐘後 CPU 每5分鐘平均: 5.02 → 2.34 ↓

    53.78% Memory 已使用:490752 → 379944 ↓ 22.58% 啟用前 啟用後
  28. 優點3:提高攻擊者成本 • 更多的 Proxy IP Shared - 0.5 美元 Dedicated

    - 2 美元 • 更多的時間 與其浪費時間在你的網站,不如找其它目標
  29. 優點4:提高安全性 • 阻礙弱點掃描,降低找到弱點機率 • 攻擊者嘗試修改標頭資訊 (Header)、修改表單 (Form) 測試弱點會一直受到要求驗證碼的阻礙

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

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

  32. WP Shieldon 設定說明及過濾原理 • 設定 • 動作記錄 • 總覽 •

    規則表 • 過濾器記錄表 • 工作階段表 • IP 位址管理 • XSS 防護 • 網頁驗證
  33. 設定 → 守護進程 • 必須啟用才會正式運作。

  34. 設定 → 守護進程 → 資料驅動 • 效率 Redis > MySQL

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

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

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

  38. 設定 → 守護進程 → 線上工作階段限制 • 線上 280 個工作階段。 •

    限制 100 個工作階段。 • 我是第 280 個,須等待 180 人。 • 每人有 5 分鐘可以瀏覽, 過期後會被踢出重新排隊。
  39. 過濾器 (Filters) 1 點閱頻率 2 工作階段 3 HTTP 參照來源 4

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

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

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

  43. 設定 → 過濾器 → Cookie(Filter 4) • 無法執行網頁的 JavaScript 以產生

    Cookie,會被標記
  44. 元件 (Components) 1 受信任的檢索機器人 2 資料標頭 3 使用者代理 4 DNS

    反向解析
  45. 設定 → 元件 → 受信任的檢索機器人 • [嚴格模式] 下一頁說明

  46. IP 與 IP 反解

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

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

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

  50. 設定 → CAPTCHA → Google ReCAPTCHA

  51. 設定 → CAPTCHA → Google ReCAPTCHA v2 v3

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

  53. 設定 → CAPTCHA → 圖片CAPTCHA 驗證

  54. 設定 → 排除項目 → 網址

  55. 設定 → 排除項目 → 頁面

  56. IP管理 • 全站 • 登入 • 註冊 • XML-RPC 可設定封鎖單一個

    IP 也可封鎖 IP 區段
  57. IP管理 → 登入 ( wp.login.php ) • 給沒有固定 IP 的使用者,一個避免封鎖的入口

    • 這個網址只能你本人知道。
  58. XSS 防護

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

  60. 網頁認證

  61. 報表 → 動作記錄

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

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

  64. 報表 → 資料週期 → 規則表

  65. 總覽

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

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

  68. END