背景:
- 有時候機器的SSH端口暴露在公網(wǎng)上,也沒做啥安全加固,為了防止暴力破解,我們可以嘗試密碼錯誤超過設(shè)定的次數(shù)后,就會鎖定該賬戶多長時間(自定義),時間過后即可自行解鎖,這樣可以增加攻擊者的成本。
方法:
- linux中可以使用pam的pam_tally2.so模塊來實現(xiàn)。
一、操作前需備份要操作的三個配置文件
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
cp /etc/pam.d/login /etc/pam.d/login.bak
二、確定使用pam_tally2.so模塊還是pam_tally.so模塊來實現(xiàn)
使用下面命令,查看系統(tǒng)是否含有pam_tally2.so模塊,如果沒有就需要使用pam_tally.so模塊,兩個模塊的使用方法不太一樣,需要區(qū)分開來。
# find / -name pam_tally2.so
/usr/lib64/security/pam_tally2.so
三、su 多次切換失敗后鎖定用戶__登錄失敗處理功能策略
編輯系統(tǒng)/etc/pam.d/system-auth 文件,一定要在pam_env.so后面添加如下策略參數(shù):
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
#限制su 多次切換失敗后鎖定用戶
auth required pam_tally2.so onerr=fail deny=3 unlock_time=40 even_deny_root root_unlock_time=40
............................
注意:
添加的位置順序不要錯,在#%PAM-1.0的下面,一定要在pam_env.so(auth required pam_env.so)后面
onerr=fail 表示定義了當(dāng)出現(xiàn)錯誤時的缺省返回值;
even_deny_root 表示也限制root用戶;
deny 表示設(shè)置普通用戶和root用戶連續(xù)錯誤登陸的最大次數(shù),超過最大次數(shù),則鎖定該用戶;
unlock_time 表示設(shè)定普通用戶鎖定后,多少時間后解鎖,單位是秒;
root_unlock_time 表示設(shè)定root用戶鎖定后,多少時間后自動解鎖否則手動,單位是秒;
- 以上策略表示:普通賬戶和root的帳戶登錄連續(xù)3次失敗,普通用戶統(tǒng)一鎖定時間40秒,root用戶鎖定40秒,40秒后可以解鎖。
- 如果不想限制root帳戶,可以把even_deny_root root_unlock_time這兩個參數(shù)去掉,root_unlock_time表示root帳戶的鎖定時間,onerr=fail表示連續(xù)失敗,deny=3,表示超過3次登錄失敗即鎖定。
- 用戶鎖定期間,無論在輸入正確還是錯誤的密碼,都將視為錯誤密碼,并以最后一次登錄為鎖定起始時間,若果用戶解鎖后輸入密碼的第一次依然為錯誤密碼,則再次重新鎖定。
su錯誤示例:
---------------------------------------------------
[test1@localhost ~]$ su - root
密碼:
su: 鑒定故障
[test1@localhost ~]$ su - root
密碼:
su: 鑒定故障
[test1@localhost ~]$ su - root
密碼:
su: 鑒定故障
[test1@localhost ~]$ su - root
因為 4 失敗登錄而鎖定帳戶
su用戶切換鎖定后查看:
# pam_tally2 --user test2
Login Failures Latest failure From
test2 4 06/06/20 02:14:21 pts/0
四、ssh遠(yuǎn)程連接登錄__登錄失敗處理功能策略
上面只是限制了從終端su登陸,如果想限制ssh遠(yuǎn)程的話,要改的是/etc/pam.d/sshd這個文件,添加的內(nèi)容跟上面一樣!
編輯系統(tǒng)/etc/pam.d/sshd文件,注意添加地點在#%PAM-1.0下一行,即第二行添加內(nèi)容
#%PAM-1.0
auth required pam_tally2.so onerr=fail deny=3 unlock_time=600 even_deny_root root_unlock_time=600
......................
ssh鎖定用戶后查看:
# pam_tally2 --user test1
Login Failures Latest failure From
test1 6 06/06/20 02:18:46 192.168.2.2
五、限制用戶從tty登錄__登錄失敗處理功能策略
編輯系統(tǒng) /etc/pam.d/login 文件,注意添加地點在#%PAM-1.0的下面,即第二行,添加內(nèi)容
#%PAM-1.0
auth required pam_tally2.so onerr=fail deny=5 unlock_time=600 even_deny_root root_unlock_time=600
......................
tty登錄鎖定后查看:
# pam_tally2 --user root
Login Failures Latest failure From
root 17 06/06/20 02:10:14 tty1
六、TELNET用戶限制
編輯 /etc/pam.d/remote文件,注意添加地點在pam_env.so后面,參數(shù)和ssh一致
auth required pam_tally2.so onerr=fail deny=5 unlock_time=600 even_deny_root root_unlock_time=600
七、查看用戶失敗次數(shù)
# pam_tally2 #查看所有用戶登錄失敗次數(shù)(有會顯示,沒有鎖定用戶無信息)
# pam_tally2 --user root #查看指定登錄失敗的用戶次數(shù)
八、手動解鎖指定用戶
# pam_tally2 -r -u root #清除失敗登錄記錄,且后面可以輸入正確的賬戶密碼登錄






