應用最小權限原則來提高 WordPress 安全性

已發表: 2021-07-27

當數據洩露、數據丟失和 DoS 攻擊發生時,WordPress 的最小權限原則錯過了頭條新聞。 然而,它是 WordPress 網站最有效但被忽視的安全最佳實踐之一。

在這篇博文中,我們首先定義了最小權限原則,然後檢查它適用於何時何地,不採用它的風險,以及為什麼許多網站開發人員仍未將其構建到他們的 WordPress 網站中。 我們還分享了一些實用的建議,以便您可以立即開始提高 WordPress 網站的安全性。 這篇博文包括一些小型案例研究,以幫助說明其在實際環境中的使用。

目錄

  • 什麼是最小特權原則?
  • 最小特權原則何時何地適用?
  • 如果不應用 PoLP 會有什麼風險?
  • 為什麼許多網站所有者忽略了 WordPress 中的最小權限原則?
  • 如何為 WordPress 應用 PoLP
    • WordPress 數據庫用戶權限
    • WordPress 用戶角色和權限
      • 創建自定義角色
    • 文件和目錄權限
    • WordPress插件配置
    • 第三方承包商的 FTP 訪問
  • 小型案例研究
    • 電子商務網站應用
    • 大學和教育機構
    • 新聞網站和博客
    • 銀行網站
    • 健康和健身追踪器
  • 對 WordPress 及其他應用使用最小權限原則

什麼是最小特權原則?

這個想法很簡單:不要授予用戶帳戶、進程或程序超過其完成指定任務所需的訪問權限。 就帶有博客的典型 WordPress 網站而言,想想你的編輯、作者、貢獻者和訂閱者。 他們每個人都需要訪問或多或少的網站後端。

最小特權原則 (PoLP) 也稱為“最小權限原則”、“最小特權原則”或“最小特權用戶帳戶”(LUA)。

讓我們考慮一些簡單的例子。 您的孩子通常不需要進入廚房。 因此,您在家中的各個位置都安裝了訪問控制設備,例如安全門,以使他們能夠隨意走動——某些房間除外。 在共享的公共聯合辦公空間中,您會在離開吃午飯前註銷您的筆記本電腦。 而且,您高檔餐廳的停車服務員會在將鑰匙交還給您的汽車之前要求您出示身份證件或車票。 訪問控制可防止對您和您用戶的寶貴財產造成損害——無論是實物還是數字抵押品。

最小特權原則何時何地適用?

簡單的答案是它適用於任何地方:從想要爬樓梯的蹣跚學步的孩子到您的 WordPress 網站託管帳戶上的用戶。 需要下載月度發票的財務自由職業者不需要與網站管理員相同級別的訪問權限。 各種特權公司帳戶、文件管理系統、營銷策略文檔或密碼管理器也是如此。

如果不應用 PoLP 會有什麼風險?

控制對某些區域的訪問似乎不費吹灰之力。 否則,您是不是完全按照任何登錄用戶的心血來潮離開網站——包括那些可能犯無辜和無意錯誤的人,甚至可能不知道他們犯了錯誤,也不知道意外結果?

考慮以下可能的用戶:

  • 新用戶開始時對 WordPress 網站上的錯誤的業務影響知之甚少
  • 那些幾乎沒有 WordPress 管理經驗的人
  • 不知道隨意下載新的 WordPress 版本或插件的影響,或者在不先備份的情況下更新它們
  • 那些安全意識有限的人創建新用戶或更改現有用戶的權限
  • 那些不知道如何處理報告的錯誤或其他問題的人
  • 外部博客文章貢獻者,例如合作夥伴、自由職業者和客戶,可能對 WordPress 有一點了解,他們甚至可以“幫助”下載或更新您網站上的插件——無需詢問

這也意味著您的整個 WordPress 後端都面臨著一些未經授權的人的風險,例如具有不適當訪問級別的人,添加新用戶並允許他們訪問可能造成故意傷害的網站區域。

如:

  • 更改主題、定制功能或面向公眾的網站內容
  • 對電子商務商店的庫存、SKU 或產品元數據處理不當
  • 提供未經授權的折扣
  • 訪問、更改、下載或刪除代碼、頁面模板、媒體、配置或員工、客戶和其他類型的文件
  • 訪問公司、客戶、健康或財務數據,例如濫用或出售給其他邪惡方
  • 使網站及其產品或服務脫機

無論您是否使用 WordPress,如果在整個組織中沒有刻意和一致地採用 WordPress 的最小權限原則,就會出現任何或所有這些問題。

提示:使用 WordPress 的活動日誌插件來記錄用戶在您的 WordPress 網站上所做的所有更改。 它有助於用戶問責並簡化故障排除。

為什麼許多網站所有者忽略了 WordPress 中的最小權限原則?

我們概述的風險似乎很有說服力,對吧? 但是在 WordPress 網站審核之後報告的最常見問題之一是 WordPress 用戶在典型環境中的角色仍然配置如下:

  • WordPress 管理員角色分配給每個用戶,即使用戶只需要輸入其他人編寫的內容
  • 這同樣適用於文件和目錄權限,所有這些都配置了限制最少的權限

我們懂了。 在我們職業生涯的某個階段,我們都有過擔任系統和網站管理員的經驗。 與早期的用戶和權限之間的聯絡,檢查用戶需要做什麼,管理員通常更喜歡簡單地為他們分配管理員角色(最初似乎更快)。

這同樣適用於文件和目錄權限。 例如,一些 WordPress 插件將緩存文件或其他數據存儲在文件系統上(即在 WordPress 目錄中)。 在 /wp-content/plugins/ 目錄中簡單地配置 777 權限更容易,因為所有插件都可以工作,並且每次安裝新插件時都無需花費更多時間進行故障排除和調整權限。 但是,在開始時進行一些研究以確定網站應用程序或目錄的特定區域——以防止用戶訪問過多——降低了已經提到的風險。 而且,它還有一個額外的好處,那就是讓每個人都可以訪問他們完成工作所需的內容——而無需管理員的進一步輸入。

網站所有者和管理員提出的問題

便利值得冒安全風險嗎? 你知道我們對這個問題的回答是什麼。 如果您最大的安全風險是您已經用業餘和寬鬆的訪問控制打開了後門,那麼安裝和維護前期和強大的 Web 應用程序安全插件、密碼協議和其他措施(如 2FA)根本沒有意義!

如何對 WordPress 應用最小權限原則

既然您專注於使您的網站應用程序盡可能安全,本節將為您提供一個列表,其中列出了最小權限原則可以在何處以及如何應用於 WordPress 網站或博客。

WordPress 數據庫用戶權限

讓我們從最基本的地方開始——WordPress 用戶數據庫權限或特權。

對於日常的 WordPress 日常操作,例如內容的編寫和發布,WordPress 數據庫用戶只需要以下權限即可管理數據庫內的數據:

  • 選擇
  • 插入
  • 更新
  • 刪除

這些權限不允許 WordPress 數據庫用戶修改數據庫結構。

建議

在理想的環境中,為了加強 WordPress 網站或博客的安全性,您應該配置安全和限制性的 WordPress MySQL 數據庫權限。 僅恢復為需要安裝新插件以在數據庫中創建新表的用戶分配所有權限,或者當 WordPress 已更新並且 WordPress 數據庫架構發生更改時。

另一項建議是避免為相關網站授予對 WordPress 以外的數據庫的訪問權限。

有關 WordPress 數據庫權限的更多信息,您還可以閱讀為什麼最低 MySQL 用戶 WordPress 數據庫權限可以提高安全性,其中解釋了不安全配置的影響。

WordPress 用戶角色和權限

WordPress 用戶會犯錯誤——甚至是管理員。 而且,用戶還喜歡探索設置和配置。 如果您為用戶分配超級管理員或管理員訪問權限,他們中比較好奇的人很可能會安裝隨機插件。 這可能會導致用戶體驗的意外變化,例如網站功能的變化。

WordPress 有許多內置的用戶角色和連接的功能,如下所列(從多到少)。

  • 超級管理員 – 站點網絡管理員
  • 管理員 – 單個站點的站點網絡管理員
  • 編輯器——管理和發布帖子,包括其他用戶的帖子
  • 作者 - 管理和發布自己的帖子
  • 貢獻者 - 編寫和管理自己的帖子,但不發布它們
  • 訂閱者 - 僅管理個人資料

這在實踐中如何運作的一個例子是,雖然貢獻者和作者可能共享一些功能(例如編輯帖子和刪除帖子),但貢獻者無法做作者可以做的所有事情,例如上傳文件或創建可用塊。

創建自定義角色

還有很多插件可用於創建新的和自定義的 WordPress 角色。

以下是一些常見的用例:

  • 在較大的組織中,您可能需要在營銷團隊中指派某人來審核、批准和回複評論。 “適度評論”功能位於編輯角色中,但該角色還分配了許多其他強大的功能。 因此,如果這就是他們需要做的所有事情,那麼使用這個單一權限設置一個自定義角色就足夠了。
  • 如果您的 WordPress 網站包含諸如 WooCommerce 之類的電子商務插件,您將被限制為兩個初始角色:商店經理(允許用戶管理整個商店)和客戶(允許用戶查看他們的帳戶和訂單)。 管理員擁有額外的權限,例如“管理設置”和“查看報告”。 但是,如果您的用戶(例如非管理人員)需要介於兩者之間的功能,例如添加和管理庫存數量或 SKU 的能力,或者只是處理訂單,該怎麼辦?
  • 在我們的網站上,我們為知識庫文章使用插件。 這使我們的支持團隊可以訪問創建和修改知識庫文章,但無法訪問主要網站頁面和博客文章。

建議

對於大多數普通用戶來說,貢獻者角色就足夠了。 對於團隊領導和實踐型經理,建議擔任編輯角色。 但是,您應該將超級管理員和管理員角色限制為真正需要他們的有經驗、負責任的用戶。

有關更多信息,請參閱如何使用 WordPress 用戶角色來提高 WordPress 安全性。

文件和目錄權限

配置文件和目錄權限很容易,網上有大量文檔解釋如何強化 WordPress 安裝的權限。 WordPress 可以在任何運行 PHP 的操作系統上運行,通常是 Linux。 在組方面,Linux 有三個權限組:

  • Owner – 文件/目錄的所有者,其權限既不適用也不影響任何其他用戶
  • 組 – 已被分配訪問文件/目錄的用戶組,其權限既不適用也不影響組外的任何用戶
  • 其他——其他人對同一文件/目錄的權限級別

其中每一個都分配有讀取(查看內容)、寫入(寫入或修改內容)或執行(運行內容,例如腳本)權限。 這些權限存儲為一系列數字,它們允許訪問 PHP 代碼、圖像和其他媒體、HTML 和 javascript 文件以及插件。

將錯誤的權限分配給錯誤的權限組可能意味著惡意黑客可以利用並導致低級別的漏洞演變成不可接受的風險。

建議

安裝 WordPress 時,您還應該使用 PoLP,配置盡可能少的文件和目錄權限以使 WordPress 正常工作。

請記住,通過強化文件和目錄權限,您可能還會限制某些 WordPress 插件的運行。 如前所述,您可能正在安裝需要將數據存儲在其安裝目錄中的插件。 如果是這樣,不要簡單地為插件目錄配置 777 權限(對任何有權控制它的人都具有完全的讀取、寫入和執行權限)。 這是最簡單的出路。 但您也應該避免限制它,以免相關用戶從 Web UI 更新 WordPress、其主題和插件。

有關詳細信息,請參閱 WordPress 文件權限:配置安全網站和 Web 服務器權限的指南。

WordPress插件配置

並非所有管理員都是平等的。 像許多系統和網絡一樣,在一組 WordPress 管理員中擁有一名首席管理員是很常見的。 通常,網站所有者別無選擇,只能分配其他用戶的管理員訪問權限。 請記住,對於 WordPress 安全插件,它們通常可以存儲管理員可以訪問的敏感數據,例如 WordPress 安全審計日誌。

建議

WordPress 安全插件通常允許您限制對其他 WordPress 管理員的訪問。 利用這些功能似乎是一個很小但有時被忽視的控制,它將幫助您更好地控制用戶訪問。

有關單個插件的更多信息,請聯繫插件支持和託管服務提供商。 然後詢問插件需要寫入哪些目錄,以便您可以專門為該目錄配置權限。

第三方承包商的 FTP 訪問

當您聘請設計師或插件支持團隊需要 FTP 訪問您的網站時,您可能會授予他們對您網站根目錄的完全訪問權限,對嗎? 這是不必要的。

建議

對於設計師來說,他們只需要訪問主題的目錄,因此限制對該目錄的訪問。 這同樣適用於插件支持團隊。 如果他們需要訪問以檢查日誌文件,請讓他們通過 FTP 訪問插件目錄或插件存儲日誌文件的位置。 避免依賴外部各方為您進行安全盡職調查。

小型案例研究

讓我們看一些相關示例,說明這在實踐中是如何工作的,以及訪問控制問題和決策如何推動 PoLP 的應用,從而為正確的團隊和個人提供正確的訪問權限。

電子商務網站應用

電子商務網站應用程序,例如消費者購買冰箱冰櫃、真空吸塵器、相機或筆記本電腦等大件商品的應用程序,提供了可以採用 PoLP 的各種示例。

電子商務網站應用程序開發人員的一些訪問控制決策是顯而易見的:

  • 人力資源部門可能不需要訪問客戶數據或存儲插件的文件目錄,但他們需要訪問大部分員工記錄(儘管根據許多數據保護合規立法通常享有特殊地位的健康數據可能更多地限制在需要知道的基礎上)
  • 營銷部門不一定需要訪問 SKU 表或產品代碼。 但是,他們需要訪問產品數據庫中列出產品名稱、規格和描述的表格

有些不太明顯:

  • 消費者是否需要一直訪問他們的所有數據?
  • PCI-DSS 合規官是否需要訪問所有消費者數據?

大學和教育機構

對於 Web 應用程序安全性和 PoLP 最初不太明顯的更傳統和長期存在的機構呢?

大學和學院門戶網站的一些訪問控制決策是顯而易見的:

  • 薪資部門需要訪問網站應用程序中的員工和承包商記錄,以跟踪工作日和付款
  • 各種類型的行政部門可能需要訪問學生記錄、處理身份證、住宿申請、賬單或補助金

有些不太明顯:

  • 哪些第三方供應商(例如構建刷卡提供商)可能需要間歇性訪問某些學生數據表?

新聞網站和博客

網絡上到處都是新聞網站、播客和博客。 許多網站所有者依賴於多個管理員、貢獻者、編輯、校對者和出版商。 此外,還有訂閱者和觀眾需要考慮。

新聞和博客網站應用程序的一些訪問控制決策是顯而易見的:

  • 根據職責的業務領域,編輯可能需要訪問每個人的頁面、文章和博客文章的組合
  • 貢獻者只需要訪問他們自己的博客文章

有些不太明顯:

  • 所有第三方都需要訪問 WordPress 數據庫中的每個表嗎? 這就是自定義控件發揮作用的地方。

銀行網站

我們的最後一個例子是我們許多人每天使用的銀行網站服務。 除了健康信息,個人財務數據自然是最機密的類型之一。

製作網站應用程序的一些訪問控制決策是顯而易見的:

  • 任何銀行服務用戶都不得訪問其他用戶的賬戶,除非得到明確(可能是用戶控制的)同意
  • 員工用戶帳戶應有權訪問許多服務用戶帳戶,但僅限於他們在工作中需要執行的那些任務

有些不太明顯:

  • 技術支持部門應該有多少訪問權限? 如果出現錯誤,他們是否應該能夠查看和修改所有內容?

我們建議您考慮並規劃每個場景的業務用例。 與具有獨特職位描述的用戶組和個人相結合。 先把這些畫出來。 只有這樣,您才能開始檢查 WordPress 網站中可用的訪問控制協議。

健康和健身追踪器

健康或健身追踪器設備及其連接的在線儀表板收集、存儲和共享有關用戶及其健康數據、活動、目標和成就的迷人統計數據。

健康和健身追踪器品牌的一些訪問控制決策是顯而易見的:

  • 組織內的哪些團隊需要訪問哪些數據? 有意義的是,如果一個團隊負責應用程序的睡眠跟踪部分的設計和開發,他們不一定需要訪問鍛煉統計表。
  • 大多數用戶都希望 PoLP(無論他們是否知道)非常嚴格,因此他們的健康信息不會與其他所有用戶共享。 那麼,應該為普通用戶角色授予哪些訪問權限,以及哪些數據將因此在公共個人資料上共享(僅限姓名、個人資料圖片和平均每日步數?)。

有些不太明顯:

  • 其他用戶需要訪問哪些信息以及多少信息才能促進此類工具的常見遊戲化功能?
  • 開發人員應該設置所有訪問權限,還是應該將部分決策權交給用戶?

對 WordPress 及其他應用使用最小權限原則

以上只是一些最常見的場景,其中 WordPress 的最小權限原則經常被忽視,但可以很容易地應用。

為了開始採用 PoLP,首先要考慮您想要對以下項目做什麼:

  • 網絡服務器
  • 數據庫
  • 定制

不要僅僅因為事情沒有馬上解決就迴避應用最小特權原則。 是的,大多數時候您必須花費幾個小時來配置自定義用戶角色和故障排除插件。 在您的腦海中重新包裝它,作為對 WordPress 網站安全性的長期投資。