折腾

everything about EP (Engineering Productivity)
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

记录一下,便于以后查询

1、A机器ssh到B机器失败,打印出错误“connection timed out during banner exchange”

2、然后尝试加了ssh的选项 -o ConnetTimeout=30,仍然ssh失败,打印错误“ssh_exchange_identification: Connection closed by remote host”

3、到B机器上查看/var/log/secure日志,发现“refused connect from xx.xx.xx.xx(A机器的ip)”

4、查看/etc/hosts.allow, 空的

5、查看/etc/hosts.deny,发现里面有“sshd:A机器的ip” ,说明了A机器ip会连接B机器的sshd服务时,会被拒绝,于是从hosts.deny中去掉这条内容

6、重启sshd服务,/etc/init.d/sshd restart

7、再次尝试A机器ssh到B机器失败,检查/etc/hosts.deny,发现A机器的ip又被添加进去了,前面还有一条注释,类似如下内容:

"# DenyHosts: Mon Jun 21 xx:xx:xx 2012 | sshd: xx.xx.xx.xx"

8、经过查询发现是denyhosts工具会自动分析secure日志,添加一些认为需要拒绝的ip到hosts.deny中,例如多次ssh连接但输入错误密码的情况就又可能拒绝,具体的规则可以看/etc/denyhosts.conf或者denyhosts.cfg文件中的配置

9、为了让A机器始终可以访问B机器,不打算修改denyhosts的规则,而是直接添加“sshd:A机器ip”到hosts.allow文件中,重启sshd,问题解决

 

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

可以参考百度百科的介绍:http://baike.baidu.com/view/5328090.htm