DenyHosts防ssh暴力破解

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

如果你在SSH下看到好多SSH进程,说明有人破解SSH,那么可以用这个阻止

 

 

 

========================yum 安装
1、下载和安装EPEL RPM

cd /tmp
wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
rpm -Uhv epel-release-5-3.noarch.rpm

2、使用yum命令安装denyhosts

yum install denyhosts
主要配置文件/etc/denyhosts.conf ,您可以看看,确保配置合适你的环境
3、添加系统启动自动运行
chkconfig –add denyhosts
chkconfig denyhosts on
4启动
service denyhosts start

============================================源码安装 :测试成功

我的服务器每天都会有无数的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配置文件:

vim /usr/share/denyhosts/denyhosts.cfg

           

            SECURE_LOG = /var/log/secure 
            #ssh 日志文件,它是根据这个文件来判断的。

            
            HOSTS_DENY = /etc/hosts.deny 
            #控制用户登陆的文件

            PURGE_DENY = 1d

            #过多久后清除已经禁止的 

            'm' = minutes
            'h' = hours
            'd' = days
            'w' = weeks
            'y' = years

            

            BLOCK_SERVICE  = sshd
            #禁止的服务名

 

            DENY_THRESHOLD_INVALID = 100
            #允许无效(非法)用户失败的次数
/usr/share/denyhosts/data/users-invalid

显示test:18:Wed Apr 13 14:49:57 2011  表示用户test非法登录了18次


            DENY_THRESHOLD_VALID = 100
            #允许普通(合法)用户登陆失败的次数
/usr/share/denyhosts/data/users-valid

/usr/share/denyhosts/data/hosts-valid

 

            DENY_THRESHOLD_ROOT = 100

            #允许root登陆失败的次数

 

           DENY_THRESHOLD_RESTRICTED = 100
            这个选项用来确定受限用户登陆次数限制

 

          WORK_DIR = /usr/share/denyhosts/data

           这个选项用来确定数据存储文件夹,DenyHosts会定期检查该文件下数据,分析非法数据并定期加入host.deny。

 

          LOCK_FILE = /var/lock/subsys/denyhosts

          这个选项用来确定防止系统运行多个检测程序。

 

         AGE_RESET_VALID=5d

         AGE_RESET_ROOT=25d

         AGE_RESET_RESTRICTED=25d

         AGE_RESET_INVALID=10d

         以上这四条选项可以用来配置屏蔽的时间长短,‘d’表示天数,对于非法用户可以相对设置时间长一些


          HOSTNAME_LOOKUP=NO
          #是否做域名反解


          ADMIN_EMAIL = [email protected]
          #管理员邮件地址,它会给管理员发邮件,若不需要邮件通知,请把smtp注释掉

          DAEMON_LOG = /var/log/denyhosts
          #自己的日志文件

然后就可以启动了:

/usr/share/denyhosts/daemon-control start


可以看看/etc/hosts.deny内是否有禁止的IP,有的话说明已经成功了。

 

 

 如果有被禁止的ip连接,会提示

 server responded "connection close by remote host"

 

 

 

 

安装注意:

首先要看系统 /var/log 下有那种可供读取的日志     193 #
    194 # Redhat/Fedora:
    195 LOCK_FILE = /var/lock/subsys/denyhosts
    196 #
    197 # Debian
    198 #LOCK_FILE = /var/run/denyhosts.pid
    199 #
    200 # Misc
    201 #LOCK_FILE = /tmp/denyhosts.lock

其次   还要选择操作系统

 

 

 

 

 



====================================


Denyhost安装

Linux 2010-05-02 19:44:38 阅读48 评论0   字号:大中小 订阅
1、检查安装环境
检查Sshd是否支持Tcpwrap
ldd /usr/sbin/sshd |grep wrap
2、检查python版本
python –V
3、安装Denyhost
官方地址:http://denyhost.sourceforge.net
python setup.py install
   程序脚本自动安装到联盟/usr/share/denyhostsEqRLinux
   库文件自动安装到联盟/usr/lib/python2.3/site-packages/DenyHostsEqRLinux
   denyhosts.py自动安装到/usr/bin
设置启动脚本
联盟SECURE_LOG = /var/log/secure EqRLinux
#RedHat/Fedora Core分析该日志文件EqRLinux联盟
#其它版本linux根据denyhosts.cfg-dist内提示选择。EqRLinux联盟联盟联盟
EqRLinux
PURGE_DENY = 30mEqRLinux
#过多久后清除EqRLinux联盟联盟联盟
EqRLinux
DENY_THRESHOLD_INVALID = 1EqRLinux
#允许无效用户(/etc/passwd未列出)登录失败的次数EqRLinux联盟联盟联盟
EqRLinux
DENY_THRESHOLD_VALID = 5EqRLinux
#允许有效(普通)用户登录失败的次数EqRLinux联盟联盟联盟
EqRLinux
DENY_THRESHOLD_ROOT = 3EqRLinux
#允许root登录失败的次数EqRLinux联盟联盟联盟
EqRLinux
HOSTNAME_LOOKUP=NOEqRLinux
#是否做域名反解EqRLinux联盟

把Denyhost加入到开机启动中
echo '/usr/share/denyhosts/daemon-control start'>>/etc/rc.d/rc.local
启动Denyhost的进程
/usr/share/denyhosts/daemon-control start
可以查看到Denyhost在运行中
ps -ef | grep deny
Ssh连接记录的日志文件
tail /var/log/secure –f
Denyhost日志文件
tail /var/log/denyhosts –f
Denyhost将恶意连接的IP记录到Hosts.deny文件中,过一定时间后再从该文件中清除(Denyhost.cfg中设定的时间)
vi /etc/hosts.deny



============================

我的Nagios外网监控服务器,刚开始测试时取的密码是redhat,放进公网一天就被人改了,郁闷死了;
后来环境部署成熟以后发现仍然有不少外网ip在扫描和试探,看来不用点工具不行啊;
呵呵,我尝试使用大家都推荐使用的DenyHosts,它是用Python2.3写的一个程序,
它会分析/var/log/secure等日志文件,当发现同一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
3、已安装Python2.3以上版本的情况可以直接安装DenyHosts

# cd /usr/local/src
# wget http://jaist.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

②设置启动脚本

# 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随系统重启而自动启动,还需做如下设置:

# vi /etc/rc.local
加入下面这条命令

/usr/share/denyhosts/daemon-control start
③启动

# /usr/share/denyhosts/daemon-control start
如果要使DenyHosts每次重起后自动启动还需做如下设置:

# cd /etc/init.d
# ln -s /usr/share/denyhosts/daemon-control denyhosts
# chkconfig --add denyhosts
# chkconfig --level 345 denyhosts on
然后就可以启动了:

service denyhosts 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#是否做域名反解
DAEMON_LOG = /var/log/denyhosts#自己的日志文件
ADMIN_EMAIL = [email protected]#管理员邮件地址,它会给管理员发邮件
下面这个是全自动下载安装的小脚本(推荐),当然安装后还得手动调整配置文件。install_denyhosts.sh脚本内容如下:

#!/bin/bash
cd /usr/local/src
wget http://jaist.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
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
echo "/usr/share/denyhosts/daemon-control start" >>/etc/rc.local
cd /etc/init.d
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig --add denyhosts
chkconfig --level 345 denyhosts on
service denyhosts start
下面是hostsdeny的示例:

Connection to 192.168.0.154 closed.
[root@autolemp ~]# ssh 192.168.0.154
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied (publickey,gssapi-with-mic,password)
出现最后这行表示生效。

你可能感兴趣的:(linux,redhat,python,ssh,配置管理)