用 fail2ban 保護你部 Linux 伺服器免受暴力破解攻擊

# 用 fail2ban 保護你部 Linux 伺服器免受暴力破解攻擊 如果你有部 Linux 伺服器放咗上網,好快就會發現 SSH port 日日都俾人「撞門」。啲自動化 bot 會不停用唔同嘅 username 同密碼嘗試登入,呢個就係所謂嘅**暴力破解攻擊(brute force)**。今次同大家介紹一個免費又好用嘅工具 —— **fail2ban**,佢可以自動偵測呢啲攻擊,仲會即時 ba...

用 fail2ban 保護你部 Linux 伺服器免受暴力破解攻擊 - 文章重點速覽 infographic

# 用 fail2ban 保護你部 Linux 伺服器免受暴力破解攻擊

如果你有部 Linux 伺服器放咗上網,好快就會發現 SSH port 日日都俾人「撞門」。啲自動化 bot 會不停用唔同嘅 username 同密碼嘗試登入,呢個就係所謂嘅**暴力破解攻擊(brute force)**。今次同大家介紹一個免費又好用嘅工具 —— **fail2ban**,佢可以自動偵測呢啲攻擊,仲會即時 ban 咗個 IP。

## 咩係 fail2ban?

**fail2ban** 係一個開源嘅入侵防護軟件,佢會監察你部機嘅 log(例如 SSH、HTTP、FTP),當發現某個 IP 短時間內連續登入失敗太多次,就會自動用防火牆規則(通常係 iptables 或 nftables)封鎖佢一段時間。簡單講,就係幫你「自動鎖門」。

## 點樣安裝 fail2ban

首先用 SSH 登入你部伺服器,然後用套件管理員安裝。以下用 Ubuntu/Debian 做例子:

sudo apt update
sudo apt install fail2ban -y

裝完之後,**fail2ban** 會自動啟動。你可以確認下佢個狀態:

sudo systemctl status fail2ban

見到 `active (running)` 就代表搞掂。

## 設定 fail2ban 保護 SSH

**fail2ban** 嘅預設設定已經有一個 SSH 保護規則(叫做 `sshd` jail),但係建議大家自訂一份設定檔,等升級嗰陣唔會俾系統覆蓋。

首先複製預設設定:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

然後編輯 `jail.local`,搵到 `[sshd]` 呢一段,設定你想要嘅參數:

sudo nano /etc/fail2ban/jail.local

喺 `[sshd]` 段落入面,可以咁樣設定:

[sshd]
enabled = true
port = ssh
maxretry = 5
bantime = 3600
findtime = 600

上面嘅意思係:喺 **10 分鐘**(findtime = 600 秒)入面,如果有 IP 登入失敗 **5 次**(maxretry),就會被 **ban 一個鐘**(bantime = 3600 秒)。

儲存之後,重新載入設定:

sudo systemctl restart fail2ban

## 檢查 fail2ban 有冇正常運作

你可以用 `fail2ban-client` 命令睇下個狀態:

sudo fail2ban-client status
sudo fail2ban-client status sshd

第二條命令會顯示 `sshd` jail 嘅狀態,包括目前已經 ban 咗幾多個 IP:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 42
|  `- File list: /var/log/auth.log
`- Actions
   |- Currently banned: 3
   |- Total banned: 3
   `- Banned IP list: 203.0.113.5 198.51.100.7 192.0.2.10

見到 `Banned IP list` 有嘢,就代表 **fail2ban** 真係做緊嘢,幫你擋走晒啲攻擊者。

## 想手動解 ban 點算?

如果唔小心 ban 咗自己或者同事嘅 IP,可以用呢條命令解 ban:

sudo fail2ban-client unban 203.0.113.5

想睇下有咩 IP 被 ban,直接用:

sudo fail2ban-client banned

## 小貼士:配合強密碼 + SSH Key

**fail2ban** 只係第一道防線,最好仲要配合以下措施:

1. **停用密碼登入,改用 SSH Key**:喺 `/etc/ssh/sshd_config` 設定 `PasswordAuthentication no`
2. **改用非標準 SSH port**:例如將 port 22 改成 2222
3. **用強密碼**:避免用 `admin`、`123456` 呢類易估嘅密碼

## 總結

**fail2ban** 係一個安裝簡單、效果顯著嘅安全工具,尤其適合中小型企業同個人用戶。佢可以自動幫你擋走大部分嘅暴力破解攻擊,令你部伺服器安全好多。如果你部 Linux 機仲未裝,真係建議你即刻裝返個,幾分鐘就搞掂,何樂而不為呢?

🔗 參考資料:NVD NIST 漏洞資料庫

下次我會再同大家分享更多伺服器安全嘅實用技巧,記得留意返我哋嘅 blog!