文章出處:
說明:
1. 安裝denyhosts-2.6.tar.gz
# wget# tar zxvf denyhosts-2.6.tar.gz
# cd denyhosts-2.6
# yum install python -y //yum安裝python,系統基本都有
# python setup.py install
2. 拷貝預設檔案
# cd /usr/share/denyhosts/# cp denyhosts.cfg-dist denyhosts.cfg
# cp daemon-control-dist daemon-control
3. 編輯配置檔案denyhosts.cfg
# vim denyhosts.cfg //該配置檔案結構比較簡單,簡要說明主要引數如下:purge_deny
:當乙個
ip被阻止以後,過多長時間被自動解禁。可選如
3m(三分鐘)、5h(
5小時)、
2d(兩天)、8w(
8周)、
1y(一年);
purge_threshold
:定義了某一
ip最多被解封多少次。即某一
ip由於暴力破解
ssh密碼被阻止/解封達到了
purge_threshold
次,則會被永久禁止;
block_service
:需要阻止的服務名;
deny_threshold_invalid
:某一無效使用者名稱(不存在的使用者)嘗試多少次登入後被阻止;
deny_threshold_valid
:某一有效使用者名稱嘗試多少次登陸後被阻止(比如賬號正確但密碼錯誤),
root
除外;deny_threshold_root
:root
使用者嘗試登入多少次後被阻止;
hostname_lookup
:是否嘗試解析源
ip的網域名稱;
大家可以根據上面的解釋,瀏覽一遍此配置檔案,然後根據自己的需要稍微修改即可。
4. 啟動denyhosts
# ./daemon-control start
5. 設定自動啟動,讓denyhosts每次重啟後自動啟動。設定自動啟動可以通過兩種方法進行。
第一種是將denyhosts
作為類似
apache
、mysql
一樣的服務,這種方法可以通過
/etc
/init.d
/denyhosts
命令來控制其狀態。方法如下:
# cd /etc/init.d
# ln -s /usr/share/denyhosts/daemon-control denyhosts
# chkconfig --add denyhosts
# chkconfig --level 2345 denyhosts on
第二種是將
denyhosts
直接加入rc.
local
中自動啟動(類似於
windows
中的「啟動資料夾」):
# echo '/usr/share/denyhosts/daemon-control start' >> /etc/rc.local
如果想檢視已經被阻止的ip,開啟/etc/hosts.deny 檔案即可。
附錄:
附錄1.各系統ssh日誌位置
ssh日誌檔案,如果是redhat系列是根據/var/log/secure檔案來判斷的;mandrake、freebsd是根據 /var/log/auth.log來判斷的,而suse則是用/var/log/messages來判斷的。這些在配置檔案裡面都有很詳細的解釋。
附錄2.當我把denyhosts安裝上啟動後,結果/etc/hosts.deny檔案中馬上就有了我自己的ip位址在裡面!暈死,我在安裝後根本就還沒有嘗試登入過啊,又怎麼被限制?
分析:我在rhel6和centos6上分別安裝了denyhosts軟體。結果均出現此情況。我想,既然它是根據/var/log/secure檔案中登入失敗記錄來是判斷是否違規,那麼,會不會是我在安裝denyhosts之前的secure中的失敗登入記錄也被算作違規呢?那麼我刪了應該就不會有問題了吧。
辦法:cat /dev/null > /var/log/secure 即把secure日誌檔案全部清空!要注意的是,清空後要service syslog restart(也有可能是rsyslog) 重啟日誌記數器!因為如果你不重啟服務,你會發現secure日誌檔案會停止記錄一切活動了!那麼denyhosts也就無效了。
結果:如果安裝前就先清空,在安裝denyhosts後,就不會自動出現禁止的ip了。
原理:根據官方faq上關於denyhosts對監控secure日誌檔案更新的原理,可以理解上述問題的原因。官方說明大概是這樣的:denyhosts在/usr/share/denyhosts/data(即work_dir)中的offset檔案中記錄了secure的首行記錄。
如果說offset檔案中的首行記錄和現有secure中的首行記錄相同,則比較現有secure和offset中最後記錄的secure檔案的大小,如果現有secure比記錄中的secure檔案大,則將secure中新增加的部分進行分析,並將新增加的失敗登入行記錄在了denyhosts記數器中。比如原來記錄了root有3次登入失敗,這次新增行中又發現了2次,那麼一共就5次記錄了。當超過deny_threshold_root中設立的值時,便將該ip加入hosts.deny中。如果現有secure檔案和offset中記錄的檔案大小相同,則認為secure日誌未更新。不做任何操作
如果offset檔案中首行記錄和現有secure中的首行記錄不同,那麼則認為secure檔案是全新的。那麼,offset會重新分析secure日誌的所有行。
如果我們剛安裝denyhosts,那麼offset中並不會有secure日誌檔案頭,也不會有secure日誌檔案大小的記錄,那麼denyhosts自然會分析所有的secure日誌行,於是乎,我在安裝denyhost前一周的所有的登入失敗次數被累計起來,如果我在上一周內登入失敗記錄超過限制數,那麼肯定就會在啟動denyhosts後馬上被加入黑名單了!(為什麼是一周之內?因為secure日誌檔案記錄的週期為乙個星期!)
附錄3.在另一台機器上我設定了deny_threshold_root=5 ,安裝後結果我root使用者才輸錯一次密碼就給我**了!按引數意思應該是5次機會啊!不用這麼絕吧!
和第乙個問題是乙個原因。只要先將secure清空再安裝,一切就正常了。原因是,root使用者在安裝前就有了失敗的記錄,影響到denyhosts的次數判斷。如你安裝denyhosts之前root已經錯誤登入4次。那麼你再用root登入1次就會發現登入不了了。我的其實安裝denyhosts前日誌中的記錄就已經有4次了,所以馬上被**了。
附錄4.我設定了purge_deny=3m,即3分鐘清除hosts.deny中新增的記錄。結果我苦等十分鐘還不見/etc/hosts.deny中新增的ip被清除!這不是存心不讓我再次登入了嗎?好在我當前的ssh連線沒斷開。要斷開了豈不沒得連了?
還需要修改/usr/share/denyhosts/denyhosts.cfg中的daemon_purge = 3m,這個引數與purge_deny=3m一樣,感覺都是用於設定當某個ip 3分鐘不再重新ssh登陸,將此ip從/etc/hosts.deny刪除。daemon_purge = 3m可以設定長點,如1h,這裡設定為3m主要是為了測試快。總不能等1小時吧。
附錄5.這個所謂的阻止暴力破解,貌似只對ssh連線有效,我用ftp登入,然後不停的嘗試登入,結果卻沒有被新增進阻止。
這個,我沒有去試!
附錄6.我將hosts.deny檔案中的使用者列表刪除後,不久後竟然又自動給新增進來了!我@#¥¥。。難道硬是不讓我再次登入了?!!
參考了官方文件才發現,原來不能單純的只刪除hosts.deny中的記錄,要想刪乾淨,得先service denyhosts stop .然後再把/usr/share/denyhosts/data目錄下的其它檔案中關於hosts.deny中的ip記錄一併清空。再service denyhosts start即可。但有的時候只清除hosts.deny中的檔案也可以。
附錄7.denyhosts日誌位置
# less /var/log/denyhosts
參考:
看這位仁兄的文章,他當初搞這個,肯定搞得很鬱悶。特此記錄下
denyhost防止SSH暴力破解
參考 denyhost 官網 以下是安裝記錄 以centos 6.5,denyhosts 2.6 為例 預設是安裝到 usr share denyhosts目錄的。2.配置 cd usr share denyhosts cp denyhosts.cfg dist denyhosts.cfg vi d...
Centos伺服器配置DenyHost防暴力破解
背景 只要網際網路上的伺服器就會被惡意掃瞄或者暴力破解密碼,一方面如果密碼設定過於簡單,伺服器就會被入侵,另一方面伺服器的資源開銷也會增加。安裝方法 1 安裝denyhost程式 centos 6 x64 安裝 bash 4.1 wget c bash 4.1 rpm ivh denyhosts 2...
Linux 使用技巧
1.使用虛擬控制台 登入後按alt f2鍵這時又可以看到 login 提示符,這個就是第二個虛擬控 制台.一般新安裝的linux有四個虛擬控制台,可以用alt f1 alt f4來訪問.虛擬 控制台最有用的時候是當乙個程式出錯鎖住輸入時可以切換到其他虛擬控制台登入 進入後殺掉這個出錯的程序.2.拷貝...