Posted on 2007-10-30 10:01 
生活在别处 阅读(682) 
评论(1)  编辑  收藏  所属分类: 
Unix 
			 
			
		 
		    最近发现服务器被人穷举扫描,网上找了办法搞定了
原贴:http://blog.chinaunix.net/u/17030/showart_315674.html
我的服务器每天都会有无数的SSH失败尝试记录,有些无聊的人一直不停的扫描,这些人真够无聊的,没事吃饱了撑着,老找些软件在那里穷举扫描,所以大家第一要记的设置一个好的够复杂的密码。 
怎么样防,如果要一条一条将这些IP阻止显然治标不治本,还好有DenyHosts软件来代替我们手搞定他。 
DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件,当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。 
DenyHosts官方网站为:http://denyhosts.sourceforge.net 
以下是安装记录(以CentOS 4.3, DenyHosts 2.5 为例) 
安装 
    
        
            | # cd /usr/local/src# wget http://mesh.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.5.tar.gz
 # tar -zxvf DenyHosts-2.5.tar.gz
 # cd DenyHosts-2.5
 # python setup.py install
 | 
    
默认是安装到/usr/share/denyhosts目录的。 
配置 
    
        
            | # cd /usr/share/denyhosts/# cp denyhosts.cfg-dist denyhosts.cfg
 # vi denyhosts.cfg
 | 
    
根据自己需要进行相应的配置(解释见下文件的配置文件) 
设置启动脚本 
    
        
            | # cp daemon-control-dist daemon-control# chown root daemon-control
 # chmod 700 daemon-control
 | 
    
完了之后执行daemon-contron start就可以了。 
如果要使DenyHosts每次重起后自动启动还需做如下设置: 
    
        
            | # cd /etc/init.d# ln -s /usr/share/denyhosts/daemon-control denyhosts
 # chkconfig –add denyhosts
 # chkconfig –level 2345 denyhosts on
 | 
    
或者修改/etc/rc.local文件: 
加入下面这条命令 
    
        
            | /usr/share/denyhosts/daemon-control start | 
    
DenyHosts配置文件: 
    
        
            | vi /etc/denyhosts.cfg
 SECURE_LOG = /var/log/secure
 #ssh 日志文件,它是根据这个文件来判断的。
 
 HOSTS_DENY = /etc/hosts.deny
 #控制用户登陆的文件
 
 PURGE_DENY = 5m
 #过多久后清除已经禁止的
 
 BLOCK_SERVICE  = sshd
 #禁止的服务名
 
 DENY_THRESHOLD_INVALID = 1
 #允许无效用户失败的次数
 
 DENY_THRESHOLD_VALID = 10
 #允许普通用户登陆失败的次数
 
 DENY_THRESHOLD_ROOT = 5
 #允许root登陆失败的次数
 
 HOSTNAME_LOOKUP=NO
 #是否做域名反解
 
 ADMIN_EMAIL = iakuf@163.com
 #管理员邮件地址,它会给管理员发邮件
 
 DAEMON_LOG = /var/log/denyhosts
 #自己的日志文件
 | 
    
然后就可以启动了: 
可以看看/etc/hosts.deny内是否有禁止的IP,有的话说明已经成功了。 
=========================================================
原文地址 http://www.taoran.net/tech/denyhosts.html 
DenyHosts是用Python2.3写的一个程序,它会分析/var/log/secure(redhat,Fedora Core)等日志文件,当发现同一IP在进行多次SSH密
码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。
DenyHosts官方网站为:http://denyhosts.sourceforge.net
一、检查安装条件
1、首先判断系统安装的sshd是否支持tcp_wrappers(默认都支持)
# ldd /usr/sbin/sshd
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x0046e000)
2、判断默认安装的Python版本
# python -V
Python 2.3.4
二、已安装Python2.3以上版本的情况(以RedHat AS4为例)
1、安装DenyHosts
# cd /usr/local/src
# wget http://umn.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6.tar.gz
# tar zxf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6
# python setup.py install 
   
   程序脚本自动安装到/usr/share/denyhosts
   库文件自动安装到/usr/lib/python2.3/site-packages/DenyHosts
   denyhosts.py自动安装到/usr/bin
2、设置启动脚本
# cd /usr/share/denyhosts/
# cp daemon-control-dist daemon-control
# chown root daemon-control
# chmod 700 daemon-control
# grep -v "^#" denyhosts.cfg-dist > denyhosts.cfg
# vi denyhosts.cfg
  根据自己需要进行相应的修改
----------------denyhosts.cfg------------------------
SECURE_LOG = /var/log/secure 
#RedHat/Fedora Core分析该日志文件
#其它版本linux根据denyhosts.cfg-dist内提示选择。
PURGE_DENY = 30m
#过多久后清除
DENY_THRESHOLD_INVALID = 1
#允许无效用户(/etc/passwd未列出)登录失败的次数
DENY_THRESHOLD_VALID = 5
#允许有效(普通)用户登录失败的次数
DENY_THRESHOLD_ROOT = 3
#允许root登录失败的次数
HOSTNAME_LOOKUP=NO
#是否做域名反解
----------------denyhosts.cfg------------------------
如果需要DenyHosts随系统重启而自动启动,还需做如下设置:
# vi /etc/rc.local
    加入下面这条命令
/usr/share/denyhosts/daemon-control start
3、启动
# /usr/share/denyhosts/daemon-control start
三、未安装Python2.3以上版本的情况(以RedHat AS3、Python2.2为例)
1、安装Python最新版本的源码包,不必卸载原有低版本Python
# cd /usr/local/src
# wget http://www.python.org/ftp/python/2.5.1/Python-2.5.1.tar.bz2
# tar jxf Python-2.5.1.tar.bz2
# cd Python-2.5.1
# ./configure --prefix=/usr/local/python
# make
# make install
2、安装DenyHosts
# cd /usr/local/src
# wget http://umn.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6.tar.gz
# tar zxf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6
# vi setup.py
  将"/usr/bin/env python"替换为"/usr/local/python/bin/python",在第一行
# vi daemon-control-dist
  将"/usr/bin/env python"替换为"/usr/local/python/bin/python",注意有两处
# /usr/local/python/bin/python setup.py install 
   程序脚本自动安装到/usr/share/denyhosts
   库文件自动安装到/usr/local/python/lib/python2.5/site-packages/DenyHosts
   denyhosts.py自动安装到/usr/local/python/bin
# ln -s /usr/local/python/bin/denyhosts.py /usr/bin