[Cloudflare]使用Cloudflare的規則設定達成網站的安全防護

Cloudflare對於架設網站的人來講,還真是擁有不少功能
從DNS的操作、CDN、防火牆安全防護、郵件路由、發行SSL…等眾多功能
我在這裡要介紹的是如何不安裝安全防護的Plugin
單純使用Cloudflare的一些規則就可以達成安全防護Plugin的防火牆功能

其實這樣做有一個最大的好處就是不用安裝其他外掛,而且設定良好的話也不會影響本身網頁主機
可以說是分攤網站主機的負擔,執行速度上也能夠稍微輕快些

以下我以幾個觀念分別做設定

設定白名單IP

對於後台的部分,我們想當然爾一定是自己或是允許的人才能進入,所以這時候需特定對象才能進來

可參考之前的文章

[網站防護]在Cloudflare中設定白名單

白名單設定好之後,我們將以幾個方面設定來提升安全防護

※在DNS的設定中,主機的A位置必須設定為「通過 Proxy 處理」狀態,否則以下的規則都會無法正常動作

一定要讓主機的IP變成「通過Proxy處理」(Proxied)狀態才可使用
一定要讓主機的IP變成「通過Proxy處理」(Proxied)狀態才可使用

阻斷登入、管理者頁面的攻擊

登入、管理者頁面這種地方,說真的就是不應該有其他人員進去,所以才會要設定白名單(非管理人員有什麼理由要去後台看呢?)
接下來的設定請按照下面的文章圖片做設定

從「網路安全」→「WAF」的順序進入,並按下「建立規則」的按鈕
從「網路安全」→「WAF」的順序進入,並按下「建立規則」的按鈕
出現填入規則的欄位
出現填入規則的欄位
規則名稱隨意,我這裡填「阻斷後台的未知登入」其他的部分參考圖片做設定
規則名稱隨意,我這裡填「阻斷後台的未知登入」其他的部分參考圖片做設定

需要強調的部分為中間IP畫框框的地方,因為條件設定後,代表除了指定的IP部份以外不可以訪問
這裡用IP的表現方式為
單一IP:使用「不等於」
IP區段:使用「不在於」
之前曾經提過的IP清單:使用「不在清單內」

當然如果說之前白名單有先設定好的話,IP的條件式就不需要再填入就是
當然如果說之前白名單有先設定好的話,IP的條件式就不需要再填入就是
其實這裡也可以按下「編輯運算式」來編輯
其實這裡也可以按下「編輯運算式」來編輯
這時候本來用幾乎都是按鈕的條件式,全部都變成文字描述
這時候本來用幾乎都是按鈕的條件式,全部都變成文字描述

如果說我們很清楚我們要的東西是什麼,其實複製好直接貼上,然後按下「部署」按鈕就可以
下面的部分則是我這裡的運算式寫法,你可以直接複製拿去用,就不需要一一輸入(但是記得白名單要先處理好喔)

(http.request.uri.path contains "/wp-admin" and not http.request.uri.path contains "/wp-admin/admin-ajax.php" and not http.request.uri.path contains "/wp-admin/theme-editor.php") or (http.request.uri.path contains "/wp-login.php")

阻斷不良的網路爬蟲

對已知的網路爬蟲以及自己信任的放行
對已知的網路爬蟲以及自己信任的放行

先解決了未知的連線要進到後台後,接下來就是要防止一些莫名其妙的網路爬蟲進來騷擾

因為網路爬蟲會針對幾個特性做耙梳的動作,因此設定成Cloudflare認知的網路爬蟲,以及自己認為優良的網路爬蟲可以通過
並且「要跳過的 WAF 元件」如下
・所有剩餘的自訂規則
・所有限速規則
・所有受控規則
・所有超級機器人對抗模式規則

這裡的運算式寫法如下

(cf.client.bot) or (http.user_agent contains "Metorik API Client") or (http.user_agent contains "Wordfence Central API") or (http.request.uri.query contains "wc-api=wc_shipstation") or (http.user_agent eq "Better Uptime Bot") or (http.user_agent eq "ShortPixel") or (http.user_agent contains "umbrella bot")

阻斷不當存取特定路徑或檔案

這算是比較進階的部分,撇除了上述網路爬蟲外到不希望去的地方騷擾外,甚至會對一些特定路徑或檔案騷擾,這裡則是針對特定路徑和檔案不讓其騷擾

這裡列出了不希望外部接觸的路徑以及檔案
這裡列出了不希望外部接觸的路徑以及檔案

以上列出的為我個人認為重要的路徑以及檔案不該被外部存取,供參考

以下為這裡的運算式寫法

(http.request.uri.path contains "/.env") or (http.request.uri.path contains "wp-config.php") or (http.request.uri.path contains "/xmlrpc.php") or (http.request.uri.path contains "/.htaccess") or (http.request.uri.path contains "/wp-content/debug.log") or (http.request.uri.path contains "/wp-settings.php") or (http.request.uri.path contains "^/wp-includes/ .*\\\\.php$" and http.referer eq "*cyrians.com*")

阻斷垃圾留言和發信訊息

其實我個人這時候比較偏好外掛,這裡我推薦Simple Cloudflare Turnstile – CAPTCHA Alternative,因為這裡他們採用了Cloudflare Turnstile的技術,可以替代Google CAPTCHA那種要不斷刷圖說這是啥啥啥的蠢方案

但如果真的非常在意,就請參考下面設定

這是阻斷垃圾留言的設定
這是阻斷垃圾留言的設定

下面為參考用的運算式寫法(記得域名要改喔)

(http.request.uri.path eq "/wp-comments-post.php" and http.request.method eq "POST" and not http.referer contains "cyrians.com")

如果設定都沒問題的話,不妨嘗試用白名單外的IP來嘗試(例如用手機網路)

你會發現被阻擋無法瀏覽了(或者是瀏覽狀況異常)
你會發現被阻擋無法瀏覽了(或者是瀏覽狀況異常)

但必須要講一點的是,以上方式只能防君子無法防小人,特別是你把奇怪的東西往網站裡面塞(如安裝來源不明的外掛),那東西就會像是木馬一樣,這點就算是Cloudflare也救不了的

以上為[網站防護]使用Cloudflare的規則設定達成網站的安全防護,希望能夠幫助你

參考資料

How to protect your WP site with FREE Cloudflare
Stop HACKERS and BOTS from reaching your website server – Cloudflare
Block Your Website Admin Area with Cloudflare Firewall Rules
Boost Your WordPress Security with Cloudflare Firewall WAF & AI-Generated Rules
如果這篇文章有幫助到您,請幫我點擊拍手按鈕 5 下鼓勵我
只要花 30 秒登入 FB 或 Google,不用花任何錢就能支持我
您的支持將會是我創作的最大動力!
Cyrians
Cyrians

一名邁入不惑之年的大叔。
曾經幻想過自己是遊戲中主角,不過隨著年齡以及經歷,已經脫離幻想的年代。(但還是希望能夠有時間繼續耍廢)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *