Linux

Linux 封鎖、解鎖登入失敗次數過多的帳號 pam_faillock 教學與範例

介紹如何在 Linux 中透過 PAM 的 pam_faillock 模組設定,封鎖登入失敗次數過多的帳號,以及解鎖方法。

faillock.conf 設定

PAM 的 pam_faillock 模組有一個設定檔位於 /etc/security/faillock.conf,在這個設定檔可以設定 pam_faillock 模組的各項參數的預設值,對於在 PAM 設定檔中沒有指定的 pam_faillock 模組參數,就會以這裡的設定為準。

以下是 faillock.conf 設定檔中可用的參數與設定範例:

# 使用者登入失敗記錄的儲存位置
dir = /var/run/faillock

# 若遇到不存在的使用者也納入記錄
audit

# 不要輸出訊息
silent

# 不要透過 syslog 記錄訊息
no_log_info

# 只追蹤本機使用者
local_users_only

# 若 900 秒內連續 3 次登入失敗,則封鎖帳號
deny = 3
fail_interval = 900

# 封鎖帳號後,等 600 秒才再度開放
unlock_time = 600

# 連 root 帳號也納入監控對象
even_deny_root

# root 帳號封鎖後,等 900 秒才再度開放
root_unlock_time = 900

# 管理者群組(成員視同 root 帳號)
admin_group = adm

PAM 設定

再 PAM 的設定檔中,需要在 /etc/pam.d/common-auth/etc/pam.d/common-account 兩個檔案中加入一些設定。以下是 /etc/pam.d/common-auth 設定檔範例:

# faillock 顯示訊息用(可省略)
auth    requisite                       pam_faillock.so preauth

auth    [success=1 default=ignore]      pam_unix.so nullok

# faillock 封鎖登入失敗次數過多的帳號
auth    [default=die]                   pam_faillock.so authfail
auth    sufficient                      pam_faillock.so authsucc

auth    requisite                       pam_deny.so
auth    required                        pam_permit.so
auth    optional                        pam_cap.so

以下是 /etc/pam.d/common-account 設定檔範例:

account [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so
account requisite                       pam_deny.so
account required                        pam_permit.so

# faillock 封鎖登入失敗次數過多的帳號
account required      pam_faillock.so

更改設定檔之後,系統會立即生效。此時若有使用者登入失敗次數過多,就會被自動封鎖,封鎖的記錄可以在 /var/log/auth.log 中查詢。

May 16 10:26:34 imgqc sshd[117651]: pam_faillock(sshd:auth): Consecutive login failures for user test01 account temporarily locked

查詢、解除封鎖帳號

除了 /var/log/auth.log 紀錄檔之外,我們也可以用 faillock 指令來查詢 pam_faillock.so 認證失敗的記錄:

# 查詢認證失敗的記錄
faillock
test01:
When                Type  Source                                           Valid
2022-05-16 11:05:19 RHOST 129.226.225.131                                      V
2022-05-16 11:08:15 RHOST 129.226.225.131                                      V
2022-05-16 10:47:48 RHOST 61.177.173.35                                        I
2022-05-16 10:47:57 RHOST 61.177.173.35                                        I

faillock 指令亦可用來解除封鎖特定的帳號:

# 解除封鎖 test01
faillock --user test01 --reset

參考資料

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago