開場白與講者自介 什麼是網路爬蟲 常見網路爬蟲介紹 — 搜尋引擎 — 大數據收集 — 網路服務商 — 盜文採集、垃圾流量網站 — 隨機弱點掃描、網路攻擊目標搜集 進行過濾爬蟲的優點與缺點 伺服器端的防禦機制 應用程式面的防禦機制 免費安全外掛介紹 – WP Shieldon 與會夥伴現場互動 開放提問
淺談網路爬蟲、網站安全與WordPress 防禦機制Terry Lin
View Slide
講者自介林新邦 ( Terry Lin)現職:豐趣科技 前端工程師GitHub: terrylinoooWebsite: https://terryl.inWP Githuber MD (Markdown 編輯器外掛 )WP Shieldon (安全性外掛)Mynote (佈景主題)WordPress 相關作品
什麼是網路爬蟲維基百科的解釋: https://zh.wikipedia.org/wiki/網路爬蟲一言以蔽之:以搜集資料為目的的自動程式。
常見的網路爬蟲1 搜尋引擎2 網路服務商3 數據收集4 盜文採集、垃圾流量網站5 資安威脅
(1) 搜尋引擎● Google、Bing 、Yandex (俄羅斯)、Baidu (中國),etc.1 沒有目標、連結跟隨2 遵守網路禮儀。( robots.txt)3 為網站帶來自然流量
(2) 數據收集● 反向連結分析 (e.g. ahref . com)● 版權比對 (e.g. copyscape . com)● SEO 分析 (e.g. semrush . com ) ,等等...1 沒有目標、連結跟隨2 不一定遵守網路禮儀。( robots.txt)3 收集數據後,包裝成服務轉售
(3) 網路服務商● 垃圾貼文 (Link building)● 比價網站,等等1 有採集目標2 不遵守網路禮儀。( robots.txt)3 收集數據後,整理資訊呈現
(4) 盜文採集● 非自產型文章農場● 網站鏡像 (Website Mirroring)● 離線下載軟體,等等看到長的和你網站一模一樣的網站吼...氣氣氣氣氣氣氣(Shieldon 誕生的起源)
資安威脅隨機弱點掃描、攻擊目標收集來看看實例
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr查詢 access.log 連線次數最多的IP
grep 150.109.67.14 access.log這個 IP 想做什麼?
探嗅目標、弱點掃描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/20100101Firefox/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"
伺服器端的防禦機制ApacheNginx ngx_http_limit_req_module (內建)mod_evasive (自行安裝)
Apache : 模組 mod_evasive儲存在記憶體的表大小設定的時間區間內頁面最大的網頁讀取數設定的時間區間內網站最大的網頁讀取數被封鎖的秒數
Nginx : 模組 ngx_http_limit_req_modulerate=1r/s : 每秒1次burst=5 : 最大緩衝次數
思考一下伺服器方案的優點和缺點
網站上的訪客,覺得?訪客A: 網站壞了,工程師好遜
搜尋引擎吃網頁吃到一半遇到這個?GoogleBot: 這張網頁有問題,給它排名低一點
有沒有解決方案,不會影響搜尋引擎排名?
應用程式面的防禦機制
Shieldon 的生命週期部署在 PHP 套件管裡器Composer 自動載入之後PHP 框架的設計模式如有Middleware (中介層)12
WordPress Hook生命週期部署在 plugins_loaded第一順位1
過濾爬蟲的優點1 節省流量2 節省系統開銷3 提高攻擊者成本4 提高安全性5 智慧財產權保護
優點1:節省流量 (平均頁面下載 ? MB 降到 < 20KB )例:Google Cloud 網路流量定價
優點2:節省系統開銷使用 Acunetix 試用版進行掃描15分鐘後CPU 每5分鐘平均: 5.02 → 2.34 ↓ 53.78%Memory 已使用:490752 → 379944 ↓ 22.58%啟用前啟用後
優點3:提高攻擊者成本● 更多的 Proxy IPShared - 0.5 美元Dedicated - 2 美元● 更多的時間與其浪費時間在你的網站,不如找其它目標
優點4:提高安全性● 阻礙弱點掃描,降低找到弱點機率● 攻擊者嘗試修改標頭資訊 (Header)、修改表單(Form) 測試弱點會一直受到要求驗證碼的阻礙
優點5:智慧財產權保護● 保護文章被打包帶走
過濾爬蟲的缺點1 偶爾造成訪客瀏覽困擾2 擋到不希望被阻擋的爬蟲3 可能阻擋到 WordPress 正常功能使用(請回報給我立即排除)
WP Shieldon 設定說明及過濾原理● 設定● 動作記錄● 總覽● 規則表● 過濾器記錄表● 工作階段表● IP 位址管理● XSS 防護● 網頁驗證
設定 → 守護進程● 必須啟用才會正式運作。
設定 → 守護進程 → 資料驅動● 效率 Redis > MySQL > SQLite > File system
設定 → 守護進程 → 重設資料週期● 已經不會再度造訪的 IP 累積越多,查詢效率越差
設定 → 守護進程 → IP 位址來源● 網站訪客的 IP 來源
設定 → 守護進程 → 線上工作階段限制
設定 → 守護進程 → 線上工作階段限制● 線上 280 個工作階段。● 限制 100 個工作階段。● 我是第 280 個,須等待180 人。● 每人有 5 分鐘可以瀏覽,過期後會被踢出重新排隊。
過濾器 (Filters)1 點閱頻率2 工作階段3 HTTP 參照來源4 Cookie
設定 → 守護進程 → 檢查頻率(Filter 1)
設定 -> 過濾器 -> 工作階段(Filter 2)
設定 → 過濾器 → HTTP 參照來源位址(Filter 3)● HTTP_REFERER 為空的會被標記
設定 → 過濾器 → Cookie(Filter 4)● 無法執行網頁的 JavaScript 以產生 Cookie,會被標記
元件 (Components)1 受信任的檢索機器人2 資料標頭3 使用者代理4 DNS 反向解析
設定 → 元件 → 受信任的檢索機器人● [嚴格模式] 下一頁說明
IP 與 IP 反解
設定 → 元件 → 資料標頭 (Header)
設定 → 元件 → 使用者代理 (User-agent)
設定 → 元件 → DNS 反向解析 (rDNS)
設定 → CAPTCHA → Google ReCAPTCHA
設定 → CAPTCHA → Google ReCAPTCHAv2 v3
設定 -> CAPTCHA -> 圖片CAPTCHA 驗證
設定 → CAPTCHA → 圖片CAPTCHA 驗證
設定 → 排除項目 → 網址
設定 → 排除項目 → 頁面
IP管理● 全站● 登入● 註冊● XML-RPC可設定封鎖單一個 IP也可封鎖 IP 區段
IP管理 → 登入 ( wp.login.php )● 給沒有固定 IP 的使用者,一個避免封鎖的入口● 這個網址只能你本人知道。
XSS 防護
XSS 防護不想過濾全部,也可只針對特定變數名稱。
網頁認證
報表 → 動作記錄
報表 → 資料週期 → 工作階段表
報表 → 資料週期 → 過濾器記錄表
報表 → 資料週期 → 規則表
總覽
WP Shieldon 外掛下載https://wordpress.org/plugins/wp-shieldon/https://github.com/terrylinooo/wp-shieldon開放源碼WordPress官方下載點
實例https://terryl.in (WP Shieldon外掛)https://shieldon.io (Shieldon Firewall)
END