當你的 linux 伺服器暴露在網際網路之中,該伺服器將會遭到網際網路上的掃瞄軟體進行掃瞄,並試圖猜測ssh登入口令。
你會發現,每天會有多條ssh登入失敗紀錄。那些掃瞄工具將對你的伺服器構成威脅,你必須設定複雜登入口令,並將嘗試多次登入失敗的ip給阻止掉,讓其在一段時間內不能訪問該伺服器。
用denyhosts可以阻止試圖猜測ssh登入口令,它會分析/var/log/secure等日誌檔案,當發現同一ip在進行多次ssh密碼嘗試時就會記錄ip到/etc/hosts.deny檔案,從而達到自動遮蔽該ip的目的。
一、yum 安裝 denyhosts
yum search denyhosts(denyhosts.noarch : a script to help thwart ssh server attacks)
yum install denyhosts
二、rpm -ql denyhosts 檢視 denyhosts 安裝路徑
這邊說下幾個比較重要的目錄
該目錄中主要存放計畫任務,日誌壓縮 以及 chkconfig 和 service 啟動的文件
/etc/cron.d/denyhosts
/etc/denyhosts.conf
/etc/logrotate.d/denyhosts
/etc/rc.d/init.d/denyhosts
/etc/sysconfig/denyhosts
該目錄中主要存放 denyhosts 所拒絕及允許的一些主機資訊
/var/lib/denyhosts/allowed-hosts
/var/lib/denyhosts/allowed-warned
-hosts
/var/lib/denyhosts/hosts
/var/lib/denyhosts/hosts-restricted
/var/lib/denyhosts/hosts-root
/var/lib/denyhosts/hosts-valid
/var/lib/denyhosts/offset
/var/lib/denyhosts/suspicious-logins
/var/lib/denyhosts/sync-hosts
/var/lib/denyhosts/users-hosts
/var/lib/denyhosts/users-invalid
/var/lib/denyhosts/users-valid
/var/log/denyhosts
三、來看看 /etc/denyhosts.conf 中的配置引數
[root@denyhosts ~]# egrep -v "(^$|^#)" /etc/denyhosts.conf
############ these settings are required ############
# 系統安全日誌檔案,主要獲取ssh資訊
secure_log = /var/log/secure
# 拒絕寫入ip檔案 hosts.deny
hosts_deny = /etc/hosts.deny
# #過多久後清除已經禁止的,其中w代表周,d代表天,h代表小時,s代表秒,m代表分鐘
purge_deny = 4w
# denyhosts所要阻止的服務名稱
block_service = sshd
# 允許無效使用者登入失敗的次數
deny_threshold_invalid = 3
# 允許普通使用者登入失敗的次數
deny_threshold_valid = 10
# 允許root使用者登入失敗的次數
deny_threshold_root = 6
# 設定 deny host 寫入到該資料夾
deny_threshold_restricted = 1
# 將deny的host或ip紀錄到work_dir中
work_dir = /var/lib/denyhosts
suspicious_login_report_allowed_hosts=yes
# 是否做網域名稱反解
hostname_lookup=yes
# 將denyhots啟動的pid紀錄到lock_file中,已確保服務正確啟動,防止同時啟動多個服務
lock_file = /var/lock/subsys/denyhosts
############ these settings are optional ############
# 管理員mail位址
admin_email = root
smtp_host = localhost
smtp_port = 25
smtp_from = denyhosts smtp_subject = denyhosts report from $[hostname]
# 有效使用者登入失敗計數歸零的時間
age_reset_valid=5d
# root使用者登入失敗計數歸零的時間
age_reset_root=25d
# 使用者的失敗登入計數重置為0的時間(/usr/share/denyhosts/restricted-usernames)
age_reset_restricted=25d
# 無效使用者登入失敗計數歸零的時間
age_reset_invalid=10d
######### these settings are specific to daemon mode ##########
# denyhosts log檔案
daemon_log = /var/log/denyhosts
daemon_sleep = 30s
# 該項與purge_deny 設定成一樣,也是清除hosts.deniedssh 使用者的時間
daemon_purge = 1h
[root@denyhosts ~]#
四、啟動 denyhosts 服務並檢視狀態
五、通過測試 invalid、valid、root 等使用者設定不同的ssh連線失敗次數,來測試 denyhosts ,我這邊只測試使用系統中不存在的使用者進行失敗登入嘗試~
我們允許 invalid 使用者只能失敗4次、root 使用者失敗7次、valid使用者失敗10次
deny_threshold_invalid = 4
deny_threshold_valid = 10
deny_threshold_root = 7
測試:使用乙個沒有建立的使用者失敗登入四次,並檢視 /etc/hosts.deny
echo -n
""> /var/log/secure
tail -f /var/log/secure
tail -f /etc/hosts.deny
/var/log/secure 日誌資訊:
/etc/hosts.deny 資訊:
使用者登入資訊:
六、關於清除及新增可信主機記錄
如果想刪除乙個已經禁止的主機ip,只在 /etc/hosts.deny 刪除是沒用的。需要進入 /var/lib/denyhosts 目錄,進入以下操作:
1、停止denyhosts服務:service denyhosts stop
2、在 /etc/hosts.deny 中刪除你想取消的主機ip
3、編輯 denyhosts 工作目錄的所有檔案 /var/lib/denyhosts,並且刪除已被新增的主機資訊。
/var/lib/denyhosts/hosts
/var/lib/denyhosts/hosts-restricted
/var/lib/denyhosts/hosts-root
/var/lib/denyhosts/hosts-valid
/var/lib/denyhosts/users-hosts
/var/lib/denyhosts/users-invalid
/var/lib/denyhosts/users-valid
4、新增你想允許的主機ip位址到
/var/lib/denyhosts/allowed-hosts
5、啟動denyhosts服務: service denyhosts start
七、通過郵件接收 denyhosts 所傳送的資訊
1、修改 /etc/denyhosts.conf 配置檔,並重啟 denyhosts 服務
admin_email = [email protected]
smtp_host = mail.showjoy.com
smtp_port = 25
smtp_from = denyhosts
2、通過其他客戶端進行多次失敗登入嘗試
3、開啟mail,檢視郵件
Linux DenyHosts阻止SSH暴力攻擊
現在的網際網路非常不安全,很多人沒事就拿一些掃瞄機掃瞄ssh埠,然後試圖連線ssh埠進行暴力破解 窮舉掃瞄 所以建議vps主機的空間,盡量設定複雜的ssh登入密碼,雖然在前段時間曾經介紹過linux 禁止某個ip訪問使用hosts.deny禁止某些ip訪問,但是功能方面欠缺,如 不能自動遮蔽,那麼有...
使用DenyHosts阻止SSH暴力攻擊
概述 現在的網際網路非常不安全,很多人沒事就拿一些掃瞄機掃瞄ssh埠,然後試圖連線ssh埠進 行暴力破解 窮舉掃瞄 所以建議vps主機的空間,盡量設定複雜的ssh登入 密碼,關於如何配置安全的ssh服務,請檢視 在 vps主機配置安全ssh服務這篇文章,那麼有什麼辦法設法阻止這些,就可以使用deny...
通過DenyHosts阻止SSH暴力攻擊教程
denyhosts是乙個linux系統下阻止暴力破解ssh密碼的軟體,它的原理與ddos deflate 類似,可以自動拒絕過多次數嘗試ssh登入的ip位址,防止網際網路上某些機器常年破解密碼的行為,也可以防止黑客對ssh密碼進行窮舉。眾所周知,暴露在網際網路上的計算機是非常危險的。並不要因為 小,...