為防止暴力破解攻擊,Linux 可透過 PAM(可插拔認證模組)的 pam_tally2.so 模組,記錄登入失敗次數,超過閾值時自動鎖定帳號,並在設定時間後自動解鎖。本文說明 /etc/pam.d/login 設定範例與參數詳解。
sudo vim /etc/pam.d/login
在 #%PAM-1.0 之後、第一條 auth required 行之前 插入:
auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10
完整檔案範例:
#%PAM-1.0
auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
session required pam_selinux.so close
session optional pam_keyinit.so force revoke
session required pam_loginuid.so
session include system-auth
session optional pam_console.so
session required pam_selinux.so open
| 參數 | 說明 |
|---|---|
deny=N | 連續登入失敗達 N 次即鎖定帳號(含 root,若設 even_deny_root) |
lock_time=S | 一般使用者鎖定後自動解鎖秒數(預設不自動解鎖) |
unlock_time=S | 同 lock_time,部分版本參數名不同 |
root_unlock_time=S | root 帳號鎖定後自動解鎖秒數 |
even_deny_root | 將鎖定規則同樣套用至 root 帳號(預設 root 不受限) |
reset | 登入成功時重置失敗計數器 |
pam_tally2 -u usernamepam_tally2 -u username -rpam_tally2pam_tally2.so 必須放在 pam_unix.so / system-auth 等驗證模組之前,否則使用者輸入正確密碼仍可登入(計數器未遞增)。pam_tally2.so,可改用 pam_tally.so(參數類似,無 lock_time 需手動解鎖)。/etc/pam.d/sshd 套用相同規則。/etc/pam.d/gdm-password 等檔案。
正確配置 pam_tally2 後,系統將自動防禦暴力嘗試,鎖定異常帳號並按時自動解鎖,大幅提升伺服器登入安全性。
CentOS 6.5 安裝 OpenCV 2.3.1 完整實戰:依賴套件、cmake 編譯、環境配置、測試驗證
快速查詢當前 Shell 名稱與版本:$$、$0、--version 參數實戰
Linux 磁碟空間清理實戰指南:find 尋找大檔/空檔/舊檔、rpm 套件管理、inode 監控、du 目錄分析完整工具箱
Fedora 系統安裝 VMware Tools 完整指南:從內核匹配到自動化部署
Ubuntu 系統使用 source 命令讓配置文件立即生效
Linux 安裝 PyCharm 提示 "No JDK found" 完整解決方案