DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的***时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。---百度说的。

当你的linux服务器暴露在互联网之中,该服务器将会遭到互联网上的扫描软件进行扫描,并试图猜测SSH登录口令。

 
  你会发现,每天会有多条SSH登录失败纪录。那些扫描工具将对你的服务器构成威胁,你必须设置复杂登录口令,并将尝试多次登录失败的IP给阻止掉,让其在一段时间内不能访问该服务器。 ---百度说的。
 
  用 DenyHosts 可以阻止试图猜测SSH登录口令,它会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。 ---百度说的。

官方网:http://denyhosts.sourceforge.net/

个人觉得如果系统使用SSH RSA 公钥的话denyhosts可以不使用了。

安装十分简单,看一下README文件一下子就明白了。如下:

 
  
  1. wget http://nchc.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz 
  2. tar zxf DenyHosts-2.6.tar.gz 
  3. cd DenyHosts-2.6 
  4. python setup.py install 

应用配置:

 

 
  
  1. cd /usr/share/denyhosts/ 
  2. grep -v "^#" denyhosts.cfg-dist > denyhosts.cfg 
  3.  
  4. cat denyhosts.cfg 
  5.        ############ THESE SETTINGS ARE REQUIRED ############ 
  6.  
  7. SECURE_LOG = /var/log/secure  #系统安装日志的绝对路径
  8.  
  9. HOSTS_DENY = /etc/hosts.deny  #记录拒绝访问的IP文件
  10.  
  11.  
  12. PURGE_DENY = 1d #过多久后清除已经禁止的,其中w代表周,d代表天,h代表小时,s代表秒,m代表分钟
  13.  
  14. BLOCK_SERVICE  = sshd 
  15.  
  16. DENY_THRESHOLD_INVALID = 3 #允许无效用户失败的次数
  17.  
  18. DENY_THRESHOLD_VALID = 3 #允许普通用户登陆失败的次数
  19.  
  20. DENY_THRESHOLD_ROOT = 3 #允许root登陆失败的次数
  21.  
  22. DENY_THRESHOLD_RESTRICTED = 1 
  23.  
  24.  
  25. WORK_DIR = /usr/share/denyhosts/data 
  26.  
  27. SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES 
  28.  
  29. HOSTNAME_LOOKUP=YES 
  30.  
  31.  
  32. LOCK_FILE = /var/lock/subsys/denyhosts 
  33.  
  34.  
  35.        ############ THESE SETTINGS ARE OPTIONAL ############ 
  36.  
  37. ADMIN_EMAIL =  #接收邮件的邮件地址
  38.  
  39. SMTP_HOST = localhost 
  40. SMTP_PORT = 25 
  41.  
  42.  
  43. SMTP_FROM = DenyHosts <nobody@localhost> 
  44.  
  45. SMTP_SUBJECT = DenyHosts Report 
  46.  
  47. AGE_RESET_VALID=5d #有效用户登录失败计数归零的时间
  48.  
  49. AGE_RESET_ROOT=25d #root用户登录失败计数归零的时间
  50.  
  51. AGE_RESET_RESTRICTED=25d 
  52.  
  53. AGE_RESET_INVALID=10d #无效用户登录失败计数归零的时间
  54.    ######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE  ########## 
  55. DAEMON_LOG = /var/log/denyhosts 
  56. DAEMON_SLEEP = 30s 
  57. DAEMON_PURGE = 1h 
  58.    #########   THESE SETTINGS ARE SPECIFIC TO     ########## 
  59.    #########       DAEMON SYNCHRONIZATION         ########## 

 

启动:

 
  
  1. cp daemon-control-dist daemon-control 
  2. chmod 700 daemon-control 
  3. ./daemon-control start 
  4. ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts 
  5. chkconfig --add denyhosts 
  6. chkconfig --list denyhosts 

如想让某IP不受denyhosts禁止,可以在/etc/hosts.allow里面添加。如:

vi /etc/hosts.allow   

sshd 192.168.30.2 #允许192.168.30.2访问该主机的ssh服务