這是一篇收集在日志里的文檔,當初查看服務器sshd日志發現很多不明IP嘗試登陸,因此想用什么辦法阻止這樣的事情發生。網上找了下用denyhosts可以解決這樣的問題,因而也就將其收集在日志里了。由於時間較久遠,找不到原文的出處,如果你知道原文出處,可以聯系我加上。好了,入正題。
Denyhosts 是一個以Python2.3編寫的程序,它主要根據系統日志文件/var/log/secure文件分析,當發現同一IP在進行多次SSH密碼嘗試時就會記錄IP到/etc/hosts.deny文件,從而達到自動屏蔽該IP的目的。
一、檢查安裝環境:
1) 判斷系統安裝的sshd是否支持tcp_wrappers(默認都支持),命令如下:
ldd /usr/sbin/sshd |grep libwrap.so.0
如果有輸出:libwrap.so.0 => /lib64/libwrap.so.0 則為支持
2)判斷是否有python(centos默認都有):
python -V
只要系統Python版本不小於2.3版本即可(本機版本為Python 2.6.5)。
二、安裝DenyHosts
1、下載DenyHosts-2.6.tar.gz並上傳到服務器,可以在http://denyhosts.sourceforge.net/上下載最新的程序。
2、安裝
1)、解壓
tar -zxvf DenyHosts-2.6.tar.gz
2)、安裝
cd DenyHosts-2.6 python setup.py install
程序腳本自動安裝在:/usr/share/denyhosts目錄
庫文件安裝在:/usr/lib/python2.6/site-packages/DenyHosts目錄下
denyhosts.py默認安裝在:/usr/bin/目錄下
3、設置啟動腳本
cd /usr/share/denyhosts/ cp daemon-control-dist daemon-control chown root daemon-control chmod 700 daemon-control
##將denyhosts.cfg-dist中不是以"#"開頭的行,寫入denyhosts.cfg文件
grep -v "^#" denyhosts.cfg-dist > denyhosts.cfg
編輯denyhosts.cfg
vi denyhosts.cfg
具體配置項可參考以下的配置:
############ THESE SETTINGS ARE REQUIRED ############ ##分析源文件 SECURE_LOG = /var/log/secure ##禁止sshd登陸的IP存放文件 HOSTS_DENY = /etc/hosts.deny ##過多久后清除已經禁止的IP PURGE_DENY = 1d ##監控的服務名 BLOCK_SERVICE = sshd ##表示允許無效用戶登錄失敗的次數 DENY_THRESHOLD_INVALID = 3 ##表示允許普通用戶登錄失敗的次數 DENY_THRESHOLD_VALID = 3 ##表示允許root用戶登錄失敗的次數 DENY_THRESHOLD_ROOT = 3 DENY_THRESHOLD_RESTRICTED = 1 WORK_DIR = /usr/share/denyhosts/data SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES ##是否做域名反解 HOSTNAME_LOOKUP=NO LOCK_FILE = /var/lock/subsys/denyhosts
4、將denyhosts添加到系統服務並自動啟動
1)、自啟動
vi /etc/rc.local
在末尾添加以下行
/usr/share/denyhosts/daemon-control start
2)、添加至系統服務
ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts chkconfig --add denyhosts chkconfig --level 345 denyhosts on
5、啟動denyhosts
service denyhosts start
6、查看denyhosts是否運行成功
service denyhosts status
顯示:DenyHosts is running with pid = XXXX,即運行成功。
7、至此,denyhosts也就配置完成了;此外將sshd的默認端口修改掉,再結合denyhosts可以防止大部分sshd的暴力破解了。