ServerAvatar 教學 – 如何設定主機、網站層級的 Fail2ban 安全防護

Fail2ban 是以 Python 語言所撰寫的安全防護軟體,透過分析系統紀錄檔的方式找出重複嘗試登入失敗的 IP 位址,並設定規則阻擋觸發過濾條件的非授權連線行為。

善加利用可以運用其彈性的架構,針對需求設計不同的過濾條件來達到伺服器防護的功能。

常見應用有:

  • 阻擋 SSH、FTP 多次嘗試錯誤連線
  • 阻擋特定瀏覽器或網路爬蟲
  • 提供管理者了解異常伺服器服務要求 (如 apache、postfix、vsftpd、proftpd 等)

參考資料:清華大學網路系統組 – Fail2ban 的安裝設定說明

最常使用在 SSH (Secure Shell Protocol) 服務上,當使用者多次嘗試輸入帳號、密碼登入時發生驗證錯誤,可以透過即時分析系統紀錄檔,過濾出有用的資訊協助管理者了解這些行為是否對伺服器有害。

而 ServerAvatar 在主機安裝完成後,會自動預設安裝 Fail2ban 安全防護功能。

在這篇教學文章中,我們教大家如何在 ServerAvatar 伺服器控制面板上完成主機層級、WordPress 網站層級的 Fail2ban 安全防護設定。

主機層級 Fail2ban 設定

在 ServerAvatar 上啟用 Fail2ban 功能相當簡單,首先,從控制面板中的 Servers 選項中進入你想設定的主機。

點擊主機資訊方塊中上方的主機名稱或下方的 Dashboard 皆可。

fail2ban-enter-server

從主機管理頁面的選單中進入 Fail2ban 設定頁面。

server-menu-fail2ban

步驟一:啟用 Fail2Ban 安全防護功能

Fail2ban 設定頁面中,直接切換至啟用狀態就能開啟主機的 Fail2ban 功能。

fail2ban-activated

步驟二:自訂 Fail2Ban 設定

接下來,就是自訂「嘗試登入」的相關限制了。

  • Ban Time
    當單一 IP 地址嘗試登入超過次數限制 (Max Retry) 時,「禁止登入的時間長度」,可以以分鐘或小時進行設定。
  • Find Time
    觀察的時間區間」,在觀察期間之內嘗試登入超過次數限制,這個 IP 地址就會被禁止一段時間 (Ban Time) 無法再次嘗試登入。
  • Max Retry
    單一 IP 地址的「嘗試登入次數」限制。
fail2ban-server-configurations

步驟三:檢視 Ban IP 清單

設定完成之後,等待一段時間就會發現網路世界上心存不良的人真的不少,即使是默默無名的網站都會持續不斷有駭客、機器人嘗試登入。

根據上個步驟中所設定的規則而被禁止登入的 IP 地址可以在 Ban IP 的清單中查看,管理者也可以使用右上角的 + Add 按鈕自行增加禁止 (Ban)、忽略檢查 (Ignore) 的 IP 地址。

fail2ban-ban-ip

就是這麼簡單,主機層級的 Fail2ban 安全防護功能就設定好了。

一般來說,在這個主機中建立的 WordPress 網站的 Fail2ban 功能也會自動生效。

然而,如果是透過 Cloudflare 代管 DNS 並使用其 Proxy 設定,我們需要完成以下章節中的設定,才能在網站層級正常使用 Fail2ban 功能。

網站層級 Fail2ban 設定

這部分的設定主要是要在 Fail2ban 設定檔中讓系統知道管理者的 Cloudflare 金鑰與帳號資訊,才不會誤禁了 Cloudflare 的代理 IP 位址。

步驟一:登入主機

首先,我們需要登入主機才能將 Cloudflare 的金鑰與帳號資訊加到 Fail2ban 的設定檔中。

方法一:Vultr root 登入

最單純的方式就是使用 PuTTY 終端,輸入主機 IP 位址、Port 之後點擊 Open 按鈕。

putty-configuration-session

接著使用主機的 root 使用者帳號、密碼登入。

帳號 (Username)、密碼 (Password) 可以登入 Vultr 帳號之後在主機的 Overview 頁籤中找到:

Vultr-server-user-info

方法二:SSH 金鑰登入

使用 SSH 金鑰登入可以省卻輸入密碼的重複動作,更為方便且安全。

ServerAvatar 在主機建立完成後都會將主機的 IP、資料庫帳密、Redis 密碼、SSH 名稱、Public/Private Key 都寄到管理員的郵箱中。

先到郵箱中找到公開金鑰與私密金鑰並安全、妥善的儲存到你的電腦中。

接下來,我們需要使用 PuTTYgen 將 ServerAvatar 提供的私密金鑰格式從 PEM 轉為 PPK。

首先,開啟 PuTTYgen 程式,點擊 Load 按鈕將私密金鑰載入。

PuTTYgen

接著會跳出這個提示小視窗,說明已成功載入 PEM 格式的私密金鑰。按下確定按鈕。

PuTTYgen-load-pem-format-private-key

私密金鑰載入後,按下 Save private key 就會將私密金鑰轉換為 PuTTY 支援的 PPK 格式。過程中會詢問是否新增登入時需要輸入的密碼片語/註記詞 (passphrase),可以按照你的需求自行決定。

PuTTYgen-convert-to-PPK-format

接下來就能透過 PuTTY 終端,使用私密金鑰直接登入主機囉。

關於使用 PuTTY 終端 SSH 搭配金鑰登入主機,可以參考這篇文章

步驟二:找到 cloudflare.conf 設定檔

從 PuTTY 終端登入主機後,切換路徑到 fail2ban 下的 action.d 資料夾:

cd /etc/fail2ban/action.d

在 action.d 資料夾中找到 cloudflare.conf 檔案之後進入編輯模式:

vi cloudflare.conf

步驟三:加入 Cloudflare 金鑰、帳號資訊

在 cloudflare.conf 檔案尾端的部分,將你的 Cloudflare 的 Global API Key電子郵件加進去。

cftoken = <Your Global API Key>
cfuser = <Your Cloudflare Email ID>

Cloudflare 的 Global API Key 可以從 Cloudflare 帳號 >「我的設定檔」>「API 權杖」中找到。

完成之後儲存檔案、退出編輯模式。(可以關閉 PuTTY 終端)

步驟四:修改 Jail Configuration 設定檔

回到 ServerAvatar,進入網站管理頁面中的 Fail2ban 選項。

serveravatar-application-fail2ban

接著,在 Jail Configuration 設定檔的最尾端加入以下設定:

action = cloudflare
         iptables-allports

application-fail2ban-jail-configurations

完成後按下 Save 按鈕,系統會自動測試,測試成功後就會自動重啟 Fail2ban 服務。

同時也會在下方出現 Ban IP 的資訊區塊囉。

application-fail2ban-ban-ip

結語

這樣我們就完成了 ServerAvatar 上主機與網站層級的 Fail2ban 安全防護設定囉!

設定完成後可以明確感受到主機資源的使用都更為平穩,相較於直接在命令列中操作使用 Fail2ban,ServerAvatar 將 Fail2ban 整合的讓人更容易管理與使用。

熟知網路安全的管理者們也可以更方便的設定、維護其過濾條件 (filter.d)、禁止設定 (jail.d),以及因應措施 (action.d),建立出強大的安全防護規則。

希望透過這個教學文章能讓大家更加瞭解 Fail2ban 安全防護的功能。

如果有什麼心得、想法或建議,也歡迎大家加入社團一起討論唷!

ServerAvatar 伺服器控制面板

LTD終生授權方案最後機會

7日內免費試用,可索取優惠碼

The-Plugin-With-the-Best-Video-Experience-440X231

發佈留言

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