Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WordPress 基本安全性檢測與防範方式 / WordPress Security Check and How to Prevent Them_呂明璋 / John Lu

WordPress 基本安全性檢測與防範方式 / WordPress Security Check and How to Prevent Them_呂明璋 / John Lu

本主題將針對使用 VPS 自架站的人提出一些基本的網站安全性檢測與防範,包含 WordPress 資訊隱藏、目錄權限設定、Security Header 檢測與設定、.htaccess 安全性設定、簡易的自動化備份流程等等,希望在自架站的同時,也能對於基本的資安知識有所瞭解。 接著也會介紹網站被駭之後的處理方式,包含網站復原、重新提交網頁漏洞檢測報告(Sucuri、McAfee),避免被防毒軟體當作惡意網站阻擋。

WordCamp Taipei

December 28, 2019
Tweet

More Decks by WordCamp Taipei

Other Decks in Technology

Transcript

  1. 大綱
    1
    1. WordPress 常見漏洞來源
    2. 網站基本掃描
    3. WordPress 版本資訊隱藏
    4. 目錄權限設定
    5. Security Header 檢測與設定
    6. 自動化備份
    7. 網站被駭之處理方法
    8. Q&A
    WordPress
    基本安全性檢測與防範方式
    呂明璋/John Lu

    View Slide

  2. Johntool-工具王阿璋
    2
    ● 清大資工碩二
    ● 資安攻防經驗兩年
    ● 部落客/接案者
    @johntooltw
    fb.com/JohntoolTW
    www.johntool.com

    View Slide

  3. 大綱
    3
    1. WordPress 常見漏洞來源
    2. 網站基本掃描
    3. WordPress 版本資訊隱藏
    4. 目錄權限設定
    5. Security Header 檢測與設定
    6. 自動化備份
    7. 網站被駭之處理方法
    8. Q&A
    投影片:https://www.johntool.com/wordcamp

    View Slide

  4. WordPress
    常見漏洞來源
    1

    View Slide

  5. 過時的主題、外掛、PHP版本
    定義:
    WordPress、PHP未更新至最新版,
    造成已知漏洞攻擊的可能性。
    攻擊:
    Exploit Database、WPScan 已知漏洞。
    預防:
    定時更新到最新版本。
    5

    View Slide

  6. 非官方來源主題、外掛
    定義:
    安裝破解版、不明來源的主題外掛
    攻擊:
    WP-VCD、連結轉跳廣告
    預防:
    使用官方來源主題、外掛
    6

    View Slide

  7. 7
    暴力攻擊
    定義:
    尋找出使用者,嘗試各種密碼,
    運用大量的算法與字典來爆破。
    攻擊:
    ● wpscan --url domain --enumerate u -t 50
    ● wpscan --url domain --wordlist wpw_pwd_dictionary.txt
    --username admin

    View Slide

  8. 8
    暴力攻擊
    預防:
    ● 高強度密碼(大小寫英文+數字+符號)
    ● 2FA、3FA
    ● 不要使用 admin 當作使用者
    ● 關閉使用者頁面

    View Slide

  9. SQL Injection
    定義:
    透過表單、網址,輸入SQL語法,
    繞過資料庫的判斷,進而得到資料庫權限或資料。
    攻擊:
    ' OR 1 = 1 --
    預防:
    ● 使用 WPScan 或是 Sucuri 掃描確認
    ● 定期備份資料庫
    ● 更新PHP、SQL版本。
    9

    View Slide

  10. Crossing Site Scripting(XSS)
    定義:
    前端輸入被記錄在網站上,
    瀏覽此網站者會被執行惡意JavaScript。
    攻擊:
    ' alert( 'xss' )
    預防:
    ● 確保使用者輸入有進行字串判斷
    ● X-XSS-Protection
    10

    View Slide

  11. DDOS
    定義:
    大量的伺服器向網站發出前端請求,
    造成網站流量無法負荷。
    攻擊:
    XMLRPC Pingback 攻擊
    預防:
    ● 黑名單
    ● Cloudflare (CDN)
    ● 關閉 Pingback
    11

    View Slide

  12. 網站基本掃描
    2

    View Slide

  13. Sucuri
    SiteCheck
    13

    View Slide


  14. Sucuri SiteCheck
    https://sitecheck.sucuri.net/
    14

    View Slide


  15. Sucuri SiteCheck
    https://sitecheck.sucuri.net/
    15

    View Slide

  16. WPSec
    16

    View Slide


  17. WPSec
    https://wpsec.com
    17

    View Slide


  18. WPSec
    https://wpsec.com
    18

    View Slide

  19. WPScan
    19

    View Slide


  20. WPScan
    https://wpscan.org/
    20

    View Slide


  21. WPScan
    https://wpscan.org/
    21

    View Slide

  22. WordPress
    版本資訊隱藏
    3

    View Slide

  23. 為什麼要隱藏版本資訊
    23
    ● 避免已知漏洞攻擊
    ● 減少成為攻擊目標的機會
    P.S. 隱藏版本資訊不是必要,
    但若是過時的版本,最好要隱藏。

    View Slide

  24. 24
    隱藏方式
    ● 添加位置
    ○ functions.php
    ○ 程式碼片段(Code Snippets) – 教學文章

    View Slide

  25. 目錄權限設定
    4

    View Slide

  26. 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

    View Slide

  27. 27
    .htaccess
    ● 純文字檔案,Apache 伺服器配置相關的指令
    用途:
    ● 限定網頁讀取 IP
    ● 設定保密資料夾
    ● 自訂錯誤頁面
    ● php.ini 參數值設定
    ● 重新導向頁面

    View Slide

  28. 28
    .htaccess
    使用方式:
    ● 創建一個 .htaccess 文件
    ● 需要修改 httpd.conf,啟用 AllowOverride (通
    常預設開啟)

    View Slide

  29. 29
    禁止目錄瀏覽
    Options -Indexes

    View Slide

  30. 30
    wp-config.php 安全性

    order allow,deny
    deny from all

    View Slide

  31. 31
    .htaccess 安全性

    order allow,deny
    deny from all
    satisfy all

    View Slide

  32. 32
    wp-includes 安全性
    # Block the include-only files.

    RewriteEngine On
    RewriteBase /
    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]

    View Slide

  33. 33
    限制 IP 存取
    order deny,allow
    allow from [insert your IP address]
    deny from all

    View Slide

  34. Security Header
    檢測與設定
    5

    View Slide

  35. 35
    Security Header 是什麼?
    定義於 Http Header Response
    透過簡單的定義,讓網站更安全

    View Slide

  36. 36

    View Slide

  37. 37
    掃描方式
    ● https://securityheaders.com/

    View Slide

  38. 38
    掃描結果

    View Slide

  39. 39
    設定方式
    ● 加入 .htaccess 或是 apache2.conf
    Header set Strict-Transport-Security: max-age=2592000
    Header set X-Frame-Options: SAMEORIGIN
    Header set Referrer-Policy: no-referrer
    Header set X-XSS-Protection: “1; mode=block”
    Header set X-Content-Type-Options: nosniff

    View Slide

  40. 自動化備份
    6

    View Slide

  41. 為什麼要自動化備份?
    41
    自動備份
    ● 網站的安全性永遠無法預期
    ● 手動備份太麻煩
    ● 指定備份時間

    View Slide

  42. 42
    自動化備份推薦方式
    ● 主機商:
    ○ 注意備份留存時間
    ○ 檔案能不能隨時取得
    ● 外掛:
    ○ UpdraftPlus(教學文章)
    ○ VaultPress
    ● Shell Script:
    ○ 資料夾+資料庫

    View Slide

  43. 43
    備份注意事項
    ● 中文圖片檔名
    ○ 注意編碼方式(UTF-8)壓縮
    ○ 修改檔名(Media File Renamer)
    ○ 上傳自動修改檔名(RY Nice Upload FileName)
    ● 主機資源上限
    ○ 備份時,IO, CPU 會特別高
    ● 避免尖峰時段
    ○ 盡量在半夜進行備份

    View Slide

  44. 網站被駭處理方法
    7

    View Slide

  45. ● Google Search Console
    ● Sucuri Sitecheck
    ● 是否有更新到最新版
    ● 不知名的使用者
    45
    確認問題

    View Slide

  46. ● 比對檔案時間
    ● 特別注意 wp-content, wp-config,
    .htaccess
    ● 確認檔案權限
    ● 資料庫被更改?
    ● 查詢 error.log / access.log
    46
    確認問題

    View Slide

  47. ● 尋求主機商、專業人員
    ● 是否有備份?
    ● 還原是否能解決?
    ● 替換 WordPress 檔案
    47
    解決問題

    View Slide

  48. ● 保持最新版本
    ● 修改密碼 / 二階段驗證
    ● 自動化備份
    ● 回報網站修復完成(Google, Sucuri,
    McAfee)
    48
    後續處理

    View Slide

  49. Q&A
    8

    View Slide

  50. 50
    Thanks!
    You can find me at Johntool-工具王阿璋
    @johntooltw
    fb.com/JohntoolTW
    www.johntool.com

    View Slide