配置服務器SSH PAM防止暴力破解


正常機器如果開啟ssh可能會被暴力破解用戶密碼,可以配置ssh的pam限制登錄失敗時可以鎖定用戶一段時間,就算密碼輸入正確也無法登錄,等恢復之后才可以再次進入,對於不同的發行版配置可能略有不同,對於redhat/centos/fedora系統是依賴pam_faillock.so模塊來實現,位置在/usr/lib64/security/pam_faillock.so,對於debian/ubuntu則是依賴pam_tally2.so模塊來實現,debian位置可能在/usr/lib/x86_64-linux-gnu/security/pam_tally2.so,而ubuntu可能在:/lib/x86_64-linux-gnu/security/pam_tally2.so,對於centos 7既有pam_faillock.so又有pam_tally2.so都在/usr/lib64/security下,那么下面是分別對於這兩類系統的配置。

1.pam_faillock redhat/centos/fedora

具體的pam配置在/etc/pam.d下,對ssh服務的位置是:/etc/pam.d/sshd,打開第一行就可以發現引入了password-auth:

然后可以直接編輯/etc/pam.d/password-auth,添加3行內容:

注意上面標出的這3行內容添加的位置,順序不能錯,否則將登錄不上去,最好提前開一個會話不要斷開防止登錄失敗,第一行位置在pam_env.so下面,第二行在sufficient下面,第三行在account required pam_unix.so下面,這3行內容文本如下:

auth        required                                     pam_env.so
# 添加的第一行
auth  required  pam_faillock.so preauth silent audit even_deny_root deny=6 unlock_time=180
# ....
auth        sufficient                                   pam_unix.so nullok try_first_pass
# 添加的第二行
auth  [default=die] pam_faillock.so authfail audit even_deny_root deny=6 unlock_time=180
# ...

account     required                                     pam_unix.so
# 添加的第三行
account required pam_faillock.so
# ...

注意啟動even_deny_root表示對root用戶也適用,否則只有普通用戶有限制,修改完成之后保存並重啟ssh服務生效:

systemctl restart sshd

重啟后可以登錄嘗試,按照上面的限制如果超過6次登錄錯誤會限制用戶180秒,也就是3分鍾,超過3分鍾並且有用戶登錄成功錯誤數會被清零重新計數,使用faillock可以查看登錄失敗的統計信息:

# root用戶
faillock --user root

可以看到存在兩次登錄失敗的記錄,如果此時登錄成功,那么記錄會自動清除,管理員也可以手動reset:

faillock --user root --reset
# 再次查看就沒有了
faillock --user root

這樣被禁用的用戶也可以再次登錄了。

2.pam_tally2  debian/ubuntu

查看/etc/pam.d/sshd內容會看到引入了common-auth:

所以編輯對應的配置:/etc/pam.d/common-auth,直接在最頭部添加下面內容:

auth  required  pam_tally2.so  deny=6 unlock_time=300 even_deny_root root_unlock_time=300

同樣even_deny_root表示root用戶也會限制,后面要單獨配置root_unlock_time,這里都是300秒,可以看到這種方式配置比較簡單,現在保存后,重啟sshd服務即可生效:

systemctl restart sshd

查看登錄失敗統計和清除次數同樣使用下面的命令:

pam_tally2 --user root
# 或者簡寫-u
pam_tally2 -u root
# 清除次數
pam_tally2 --user root --reset

上面的用法和faillock基本上一樣。

另外centos 7.x同時支持faillock和pam_tally2的方式配置,正常只配置1種即可,注意配置的位置都是在/etc/pam.d/password-auth,按照pam_tally2方式配置也是在password-auth中配置,但是只在頭部添加上面這1行內容即可,配置比較簡單。

綜上,就是faillock和pam_tally2這兩種方式的配置,總體看pam_tally2這種方式比較簡單好用,faillock比較嚴格一些,比如對於centos 7這兩種方式都支持,那么正常按照pam_tally2配置就可以了,因為比較簡單。
注意上面的配置都是對ssh登錄方式前提下進行限制,如果是本地使用tty登錄不影響,正常使用tty攻擊方式也比較少見,如果配置需要通過/etc/pam.d/login來限制,這里不再詳細敘述。
 
另外ssh還有個通用的配置就是連續嘗試幾次密碼登錄失敗的話,可以直接斷開數據包,這樣也可以防止連接一次后不斷嘗試,編輯配置文件:/etc/ssh/sshd_config,修改下面配置:
MaxAuthTries 3

表示最大重試次數為3,超過就會斷開連接,同樣保存后重啟ssh服務即可生效,再次嘗試超過3次連接就會被斷開了:

以上就是ssh安全防護方面常用到的一些配置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM