Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

利用 DDNS 避免 fail2ban 禁止 FileZilla 存取

最近因為把公司網站搬到 Linode 上面,
為了擋掉一些壞壞的存取,開了 Fail2ban。
但是在使用 FileZilla 的 SFTP 上傳檔案時,
因為將 Fail2ban 禁止條件設為「10 分鐘內嘗試連接 5 次」,
導致上傳檔案時,如果超過 5 個檔案,就會不小心把自己 ban 掉,
所以需要把自己的 IP 加入允許清單 (whitelist) 中。

但由於自己平常會在不同的網路環境下存取,
因此每次的 IP 並不一致,所以使用了動態 DNS (dynamic DNS) 作為解決方法。

DDNS 原理

一般 DNS 是將域名對應到一組固定 IP 上,
而動態 DNS 則是透過低 TTL 頻繁更新的方式,隨時更新域名與 IP 的對應關係。
因此,使用 DDNS 服務時,通常會搭配各廠商開發的動態更新用戶端 (Dynamic Update Client,簡稱 DUC)。

No-IP 設定

這次使用的是 No-IP 的 DDNS 服務,
最主要是因為免費額度就可以登錄 3 組域名,
符合我自己的需求,因此先嘗試。
其他還有諸如 Dyn 等服務,
未來有機會測試再分享。

在註冊完並驗證 No-IP 的帳號後,可以前往 My No-IP 中的 [Dynamic DNS],
點選 [Create Hostname],建立希望使用的子網域名稱,如 kkkkkkkkkk.ddns.net。
[Record Type] 我使用的是預設的 A Record,讓域名透過 IP 的方式去對應。
這個步驟並不需要手動填寫你現在的 IP,系統會自行去讀取。

接著下載 No-IP 自家的 DUC,安裝後開啟,登入自己的帳號,
勾選自己想要進行動態更新的域名即可。

如果需要讓外部連結到裝置的話(例如 NAS 或自架 FTP),
還需要針對網路的路由器做一些設定,
但這次的目的只是製作一個可以讓遠端驗證的「身份」,
並沒有要讓遠端讀取我的電腦內容,所以這部分就省略。

Fail2ban 設定

進入主機後,使用編輯器編輯防火牆規則:

$ sudo vim /etc/fail2ban/jail.local

找到 ignoreip 的設定,並做以下修改:

#
# JAILS
#
#
# [DEFAULT]
# 將 kkkkkkkkkk.ddns.net 換成自己的名字
ignoreip = 127.0.0.1/8 kkkkkkkkkk.ddns.net

儲存後,重新啟用 fail2ban 服務:

$ sudo service fail2ban restart

之後只要電腦開機時,確定自己的 DUC 是打開的,
就可以不用怕把自己被自己的防火牆擋掉了。

目前測試下來,No-IP 大約需要 5 分鐘的時間去更新 DNS 資訊,
因此在更換 IP 位置後,建議先確定 No-IP 已經將域名指向到自己現在的外部 IP。

Eric Chuang
Eric Chuang

正職是廣告行銷人員,因為 Google Tag Manager 的關係開始踏入網站製作的領域,進一步把 WordPress 當成 PHP + HTML + CSS + JavaScript 的學習教材。此外,因為工作的關係,曾經用 Automattic 的 Underscores (_s) 替客戶與公司官網進行全客製化佈景主題開發。

1 則留言

發佈留言

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

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料