SSH防暴力破解软件 Denyhosts

原理:

DenyHosts 是Python语言写的一个开源程序,它会定期分析sshd服务的登陆日志,当发现某IP进行多次SSH登陆且登陆失败次数超过阈值时,会将IP记录到 /etc/hosts.deny文件,通过tcpwrapper达到自动屏蔽IP的功能。

TCP wrapper:

tcpwrapper 是一个为 Unix 类服务器提供防火墙服务的程序,任何以 Xinetd 管理的服务都可以通过TcpWrapper来设置防火墙,简单的说,就是针对源IP或域进行允许或拒绝访问的设置;

配置文件:

/etc/init.d/hosts.allow  定义在此文件中的IP允许访问

daemon_list:client_list[:option]

例:sshd: 192.168.1    # 允许 192.168.1.0/24 网段所有主机访问

/etc/init.d/hosts.deny  定义在此文件中的IP不允许访问

配置同上

检查顺序:

请求

服务  --->/etc/hosts.allow  --->  匹配成功则放行

/etc/hosts.deny   ---->  匹配成功则拒绝

两个配置文件中没有则允许访问

注:两个配置文件同时匹配,host.allow 优先生效。

判断服务是否支持TcpWrapper管控:

ldd `which 服务名` |grep wrap

libwrap.so.0  TcpWrapper 的开发库,软件调用此库代表受 TcpWrapper 管控。



最新版本为 2.6 最近更新日期为 2008-10-04

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

FAQ:http://denyhosts.sourceforge.net/faq.html

下载地址:http://nbtelecom.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz

安装:

wget http://nbtelecom.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz

tar xvf DenyHosts-2.6.tar.gz

cd DenyHosts-2.6/

python setup.py install

默认会安装在 /usr/share/denyhosts/ 目录

ln -s daemon_control /etc/init.d/denyhosts

# 服务脚本

cp denyhosts.cfg-dist denyhosts.cfg

# 配置文件



配置文件详解:(截取有用部分)

# Redhat or Fedora Core:

#SECURE_LOG = /var/log/secure

# ReadHat 系列登陆日志位置

# Mandrake, FreeBSD or OpenBSD:

SECURE_LOG = /var/log/auth.log

# FreeBSD 系列登陆日志位置

# SuSE:

#SECURE_LOG = /var/log/messages

# SuSE 系列登陆日志位置

HOSTS_DENY = /etc/hosts.deny

# tcpwrapper 配置文件

PURGE_DENY = 5m

# 清除已禁止主机的时间

BLOCK_SERVICE  = sshd

# 匹配成功后禁止的服务名称

DENY_THRESHOLD_INVALID = 5

# 允许无效用户尝试登陆失败的次数(用户名不在 /etc/passwd 文件中)

DENY_THRESHOLD_VALID = 10

# 允许普通用户登陆失败的次数(用户名存在 /etc/passwd 文件中)

DENY_THRESHOLD_ROOT = 1   # 允许 root 用户登陆失败的次数

WORK_DIR = /usr/share/denyhosts/data

# denyhosts 的工作目录,会将 deny 的 hosts 或 IP 记录到 work_dir/ 目录下的文件中

HOSTNAME_LOOKUP=YES

# 是否进行域名反解

LOCK_FILE = /var/run/denyhosts.pid

# pid 文件位置,用来判断 denyhosts 是否在运行状态

ADMIN_EMAIL = [email protected]

# 管理员邮件地址(接收告警邮件)

SMTP_HOST = smtp.mxhichina.com

SMTP_PORT = 25

# SMTP 发件服务器地址及端口号

[email protected]

SMTP_PASSWORD=myispassword

# 发件人帐号及密码

SMTP_FROM = [email protected]

# 发件人地址

SMTP_SUBJECT = DenyHosts Report

# 告警邮件主题

AGE_RESET_VALID=5d

# 普通用户登录失败计数器的归零时间

AGE_RESET_ROOT=25d

# ROOT用户登录失败计数器的归零时间

AGE_RESET_RESTRICTED=25d

# 全局用户失败登录计数重置为 0 的时间 (/usr/share/denyhosts/data/restricted-usernames)

AGE_RESET_INVALID=10d

# 无效用户失败计数会在多久后重置为 0

RESET_ON_SUCCESS = yes

# 如果一个IP成功登录后,失败的登录计数是否重置为0

DAEMON_LOG = /var/log/denyhosts

# Denyhosts 的日志文件位置

DAEMON_SLEEP = 30s

# 当以后台方式运行时,每读一次日志文件的时间间隔

DAEMON_PURGE = 1h

# 多长时间执行一次 预设清理

# 多久清除一次已被禁止的主机,此值应该小于 PURGE_DENY,PURGE_DENY < DAEMON_PURGE

遇到的问题:

1、清除时间到达后无法无法清除被禁止的主机

解决办法:实际清楚时间由 DAEMON_PURGE 决定,将此值设定与PURGE_DENY相等即可。

时间: 2024-10-10 06:56:51

SSH防暴力破解软件 Denyhosts的相关文章

SSH防暴力破解的解决方法

SSH防暴力破解的解决方法: 1.禁止root用户ssh登陆: 1.1.修改PermitRootLogin项: [[email protected] ~]# vi /etc/ssh/sshd_config [[email protected] ~]# grep Root /etc/ssh/sshd_config PermitRootLogin no ### 将默认的 #PermitRootLogin yes 修改成这样的 ### # the setting of "PermitRootLogin

SSH防暴力破解shell脚本

写的一个SSH的防暴力破解脚本. 原理是检测SSH连接日志,过滤登录失败的IP,超过登录次数就将其添加进hosts.deny文件中,限制其登录. 脚本如下: #! /bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.txt DEFINE="10" for i in `cat  /root/bla

ssh防暴力破解

SSH 为 Secure Shell 的缩写, SSH 为建立在应用层和传输层基础上的安全协议. 利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题. 基于口令的安全验证: 所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器.可能会有别的服务器在冒充真正的服务器,也就是受到"中间人"这种方式的攻击. 基于秘钥的安全验证:  客户端在本地生成秘钥对,把公钥传给服务器. 当客户端访问服务器时,服务器会在用户的主目录下寻找公钥,然后跟客户端发来的公钥进行比对

Centos6.4 安装fail2ban防暴力破解

Centos6.4 安装fail2ban防暴力破解 一. 安装 curl -O https://codeload.github.com/fail2ban/fail2ban/tar.gz/0.9.0 mv 0.9.0 0.9.0.tar.gz tar zxvf 0.9.0.tar.gz cd fail2ban-0.9.0/ python setup.py build python setup.py install 二.配置(防ssh暴力) vi /etc/fail2ban/jail.conf [s

开源服务专题之------ssh防止暴力破解及fail2ban的使用方法

15年出现的JAVA反序列化漏洞,另一个是redis配置不当导致机器入侵.只要redis是用root启动的并且未授权的话,就可以通过set方式直接写入一个authorized_keys到系统的/root/.ssh/目录下实现免密码登陆他人的Linux服务器.从而达到入侵成功的效果.fail2ban是一款很棒的开源服务软件,可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好.很实用.很强大!简单来说其功能

防暴力破解一些安全机制

今天一个朋友突然QQ上找我说,网站被攻击了,整个网站内容被替换成违法信息,听到这个消息后着实吓了一跳.于是赶紧去找原因,最后才发现由于对方网站管理密码过于简单,被暴力破解了..在此我把对于防暴力破解预防一些心得分享给朋友们.首先给用户的建议是尽量使用复杂字符组合,例如数字和英文大小写组合等..给开发人员建议第一:建立验证码机制,验证码虽然也能被破掉,但在一定程度上也增加了暴力破解的难度:第二:建立一套完善的防暴力破解安全机制,如连续3次输入错误,锁定账户,24小时内无法再次登录:第三:如果用户绑

YS登录接口防暴力破解设计缺陷

YS使用的防暴力破解机制存在缺陷,该缺陷可被用于暴力破解其它用户密码[高] 问题描述:          YS在用户登录页面设置了验证码机制,当用户输入密码错误次数达到3次时,再次登录需要验证码以防止攻击者进行暴力破解,但在需要验证码的情形下,当用户成功认证登录之后,该验证码机制将失效,此时攻击者可以无数次向服务器重放用于登录认证的http请求. 测试步骤: 1.  安装浏览器拦截代理工具burp,并启动拦截功能. 2.  在用户名和密码栏填入有效的帐户名和无效的密码,登录失败3次直至出现验证码

Linux VPS 安全配置:禁用22端口、root用户以及配置Denyhosts防暴力破解

最近租用了一台Vultr东京机房的VPS,每天都会生成许多异常登录失败的日志,疑似受到扫描软件的暴力破解,遂Google了一下服务器安全防护方面的知识. 废话不多说,下面将操作过程记录下来: 注意:以下操作基于CentOS 7,不同系统下的具体操作可能会有区别 一.修改SSH服务默认端口 SSH服务的默认端口是22,扫描软件首先会通过此端口尝试登录,因此把它改成一个不易猜到的端口(推荐使用10000~65535之间的,复杂度最高也不易和其他进程发生冲突) 1 vim /etc/ssh/sshd_

linux防止ssh远程暴力破解的方法和fail2ban软件的配置应用

一.修改参数来使得暴力破解变得几乎不可能 1.密码设定要足够复杂 密码的设定,尽可能要有大写字母.小写字母.特殊符号和数字,长度至少要大于8,当然越长越好,只要能记住. 2.修改默认端口号 修改sshd服务的默认端口号,可以进一步防止黑客的恶意攻击.首先介绍一个工具:nmap:nmap可以探测某个服务器的远程端口号开放列表; #nmap 192.168.1.163 StartingNmap 5.51 ( http://nmap.org ) at 2015-11-10 14:43 CST Nmap