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)
出现最后这行表示生效。