搬砖头

Knocking on Heaven's Door
posts - 34, comments - 6, trackbacks - 0, articles - 0

用DenyHosts阻止SSH暴力破解

Posted on 2007-10-30 10:01 生活在别处 阅读(650) 评论(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就可以了。

# ./daemon-control 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文件:

# vi /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
#自己的日志文件

然后就可以启动了:

service denyhost start

可以看看/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

Feedback

# re: 用DenyHosts阻止SSH暴力破解[未登录]  回复  更多评论   

2008-01-11 22:03 by coffee
freebsd 安装

cd /usr/ports/security/denyhosts
make install clean