本主題將針對使用 VPS 自架站的人提出一些基本的網站安全性檢測與防範,包含 WordPress 資訊隱藏、目錄權限設定、Security Header 檢測與設定、.htaccess 安全性設定、簡易的自動化備份流程等等,希望在自架站的同時,也能對於基本的資安知識有所瞭解。 接著也會介紹網站被駭之後的處理方式,包含網站復原、重新提交網頁漏洞檢測報告(Sucuri、McAfee),避免被防毒軟體當作惡意網站阻擋。
大綱11. WordPress 常見漏洞來源2. 網站基本掃描3. WordPress 版本資訊隱藏4. 目錄權限設定5. Security Header 檢測與設定6. 自動化備份7. 網站被駭之處理方法8. Q&AWordPress基本安全性檢測與防範方式呂明璋/John Lu
View Slide
Johntool-工具王阿璋2● 清大資工碩二● 資安攻防經驗兩年● 部落客/接案者@johntooltwfb.com/JohntoolTWwww.johntool.com
大綱31. WordPress 常見漏洞來源2. 網站基本掃描3. WordPress 版本資訊隱藏4. 目錄權限設定5. Security Header 檢測與設定6. 自動化備份7. 網站被駭之處理方法8. Q&A投影片:https://www.johntool.com/wordcamp
WordPress常見漏洞來源1
過時的主題、外掛、PHP版本定義:WordPress、PHP未更新至最新版,造成已知漏洞攻擊的可能性。攻擊:Exploit Database、WPScan 已知漏洞。預防:定時更新到最新版本。5
非官方來源主題、外掛定義:安裝破解版、不明來源的主題外掛攻擊:WP-VCD、連結轉跳廣告預防:使用官方來源主題、外掛6
7暴力攻擊定義:尋找出使用者,嘗試各種密碼,運用大量的算法與字典來爆破。攻擊:● wpscan --url domain --enumerate u -t 50● wpscan --url domain --wordlist wpw_pwd_dictionary.txt--username admin
8暴力攻擊預防:● 高強度密碼(大小寫英文+數字+符號)● 2FA、3FA● 不要使用 admin 當作使用者● 關閉使用者頁面
SQL Injection定義:透過表單、網址,輸入SQL語法,繞過資料庫的判斷,進而得到資料庫權限或資料。攻擊:' OR 1 = 1 --預防:● 使用 WPScan 或是 Sucuri 掃描確認● 定期備份資料庫● 更新PHP、SQL版本。9
Crossing Site Scripting(XSS)定義:前端輸入被記錄在網站上,瀏覽此網站者會被執行惡意JavaScript。攻擊:' alert( 'xss' )預防:● 確保使用者輸入有進行字串判斷● X-XSS-Protection10
DDOS定義:大量的伺服器向網站發出前端請求,造成網站流量無法負荷。攻擊:XMLRPC Pingback 攻擊預防:● 黑名單● Cloudflare (CDN)● 關閉 Pingback11
網站基本掃描2
SucuriSiteCheck13
“Sucuri SiteCheckhttps://sitecheck.sucuri.net/14
“Sucuri SiteCheckhttps://sitecheck.sucuri.net/15
WPSec16
“WPSechttps://wpsec.com17
“WPSechttps://wpsec.com18
WPScan19
“WPScanhttps://wpscan.org/20
“WPScanhttps://wpscan.org/21
WordPress版本資訊隱藏3
為什麼要隱藏版本資訊23● 避免已知漏洞攻擊● 減少成為攻擊目標的機會P.S. 隱藏版本資訊不是必要,但若是過時的版本,最好要隱藏。
24隱藏方式● 添加位置○ functions.php○ 程式碼片段(Code Snippets) – 教學文章
目錄權限設定4
26目錄權限● Hardening WordPress● 資料夾:755○ find WP_Root -type d -exec chmod 755 {} \;● 檔案:644○ find WP_Root -type f -exec chmod 644 {} \;● Owner, Group:通常為www-data○ sudo chown -R www-data:www-data WP_Root
27.htaccess● 純文字檔案,Apache 伺服器配置相關的指令用途:● 限定網頁讀取 IP● 設定保密資料夾● 自訂錯誤頁面● php.ini 參數值設定● 重新導向頁面
28.htaccess使用方式:● 創建一個 .htaccess 文件● 需要修改 httpd.conf,啟用 AllowOverride (通常預設開啟)
29禁止目錄瀏覽Options -Indexes
30wp-config.php 安全性order allow,denydeny from all
31.htaccess 安全性order allow,denydeny from allsatisfy all
32wp-includes 安全性# Block the include-only files.RewriteEngine OnRewriteBase /RewriteRule ^wp-admin/includes/ - [F,L]RewriteRule !^wp-includes/ - [S=3]RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]RewriteRule ^wp-includes/theme-compat/ - [F,L]
33限制 IP 存取order deny,allowallow from [insert your IP address]deny from all
Security Header檢測與設定5
35Security Header 是什麼?定義於 Http Header Response透過簡單的定義,讓網站更安全
36
37掃描方式● https://securityheaders.com/
38掃描結果
39設定方式● 加入 .htaccess 或是 apache2.confHeader set Strict-Transport-Security: max-age=2592000Header set X-Frame-Options: SAMEORIGINHeader set Referrer-Policy: no-referrerHeader set X-XSS-Protection: “1; mode=block”Header set X-Content-Type-Options: nosniff
自動化備份6
為什麼要自動化備份?41自動備份● 網站的安全性永遠無法預期● 手動備份太麻煩● 指定備份時間
42自動化備份推薦方式● 主機商:○ 注意備份留存時間○ 檔案能不能隨時取得● 外掛:○ UpdraftPlus(教學文章)○ VaultPress● Shell Script:○ 資料夾+資料庫
43備份注意事項● 中文圖片檔名○ 注意編碼方式(UTF-8)壓縮○ 修改檔名(Media File Renamer)○ 上傳自動修改檔名(RY Nice Upload FileName)● 主機資源上限○ 備份時,IO, CPU 會特別高● 避免尖峰時段○ 盡量在半夜進行備份
網站被駭處理方法7
● Google Search Console● Sucuri Sitecheck● 是否有更新到最新版● 不知名的使用者45確認問題
● 比對檔案時間● 特別注意 wp-content, wp-config,.htaccess● 確認檔案權限● 資料庫被更改?● 查詢 error.log / access.log46確認問題
● 尋求主機商、專業人員● 是否有備份?● 還原是否能解決?● 替換 WordPress 檔案47解決問題
● 保持最新版本● 修改密碼 / 二階段驗證● 自動化備份● 回報網站修復完成(Google, Sucuri,McAfee)48後續處理
Q&A8
50Thanks!You can find me at Johntool-工具王阿璋@johntooltwfb.com/JohntoolTWwww.johntool.com