DenyHosts 阻止SSH暴力***

首先sshd服务可以说是linux服务器一个至关重要的服务,如果被暴力破解成功,就直接可以拿到服务器的控制权了,在这里有两种解决方案,第一种是直接生成秘钥然后配置ssh服务无密码登录,然后在配置文件中禁用用户使用密码登录,这种方案相对来说比较安全,但配置有点麻烦啊......

第二种方案就是服务器端安装DenyHosts工具,DenyHosts通过采集ssh身份验证的日志中失败的记录,从而屏蔽掉这些***者的ip地址~

怎么简单怎么来,我们就开始安装Denyhosts吧:

Denyhosts 官网地址:sourceforge.net/project

Denyhosts github.com/denyhosts/de

1 . 下载Denyhosts

wget http://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz  # 下载Denyhosts


DenyHosts 阻止SSH暴力***

tar -zxvf DenyHosts-2.6.tar.gz # 解压缩文件

DenyHosts 阻止SSH暴力***

2. 安装 Denyhosts

python setup.pyinstall # 安装Denyhosts

DenyHosts 阻止SSH暴力***

cd /usr/share/denyhosts/ # 进入安装目录

cp denyhosts.cfg-dist denyhosts.cfg # 创建配置文件

cp daemon-control-dist daemon-control # 启动文件副本

DenyHosts 阻止SSH暴力***

ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts # 创建软连接

DenyHosts 阻止SSH暴力***

设置Denyhosts为开机自动启动~

chkconfig --add denyhosts # 添加denyhosts服务

chkconfig denyhosts on # 设置denyhosts在各等级为开启状态

DenyHosts 阻止SSH暴力***

chkconfig --list denyhosts # 查询是否设置成功

DenyHosts 阻止SSH暴力***

3. 启动denyhosts服务

systemctl start denyhosts # 启动denyhosts服务

systemctl status denyhosts # 查询denyhosts服务状态

DenyHosts 阻止SSH暴力***

三、来看看 /etc/denyhosts.conf 中的配置参数

[root@denyhosts ~]# egrep -v "(^$|^#)" /usr/share/denyhosts/denyhosts.cfg

############ THESE SETTINGS ARE REQUIRED ############

# 系统安全日志文件,主要获取ssh信息

SECURE_LOG = /var/log/secure

# 拒绝写入IP文件 hosts.deny

HOSTS_DENY = /etc/hosts.deny

# #过多久后清除已经禁止的,其中w代表周,d代表天,h代表小时,s代表秒,m代表分钟

PURGE_DENY = 4w

# denyhosts所要阻止的服务名称

BLOCK_SERVICE  = sshd

# 允许无效用户登录失败的次数

DENY_THRESHOLD_INVALID = 3

# 允许普通用户登录失败的次数

DENY_THRESHOLD_VALID = 10

# 允许ROOT用户登录失败的次数

DENY_THRESHOLD_ROOT = 6

# 设定 deny host 写入到该资料夹

DENY_THRESHOLD_RESTRICTED = 1

# 将deny的host或ip纪录到Work_dir中 

WORK_DIR = /var/lib/denyhosts

SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES

# 是否做域名反解

HOSTNAME_LOOKUP=YES

# 将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务

LOCK_FILE = /var/lock/subsys/denyhosts

############ THESE SETTINGS ARE OPTIONAL ############

# 管理员Mail地址

ADMIN_EMAIL = root

SMTP_HOST = localhost

SMTP_PORT = 25

SMTP_FROM = DenyHosts <nobody@localhost>

SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]

# 有效用户登录失败计数归零的时间

AGE_RESET_VALID=5d

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

AGE_RESET_ROOT=25d

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

AGE_RESET_RESTRICTED=25d

# 无效用户登录失败计数归零的时间

AGE_RESET_INVALID=10d

######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE  ##########

# denyhosts log文件

DAEMON_LOG = /var/log/denyhosts

DAEMON_SLEEP = 30s

# 该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间

DAEMON_PURGE = 1h

四、启动 denyhosts 服务并查看状态

DenyHosts 阻止SSH暴力***

五、通过测试 invalid、valid、root 等用户设置不同的ssh连接失败次数,来测试 denyhosts ,我这边只测试使用系统中不存在的用户进行失败登录尝试~

我们允许 invalid 用户只能失败4次、ROOT 用户失败7次、valid用户失败10次

DENY_THRESHOLD_INVALID = 4

DENY_THRESHOLD_VALID = 10

DENY_THRESHOLD_ROOT = 7

测试:使用一个没有创建的用户失败登录四次,并查看 /etc/hosts.deny

echo -n ""  > /var/log/secure

tail -f /var/log/secure

tail -f /etc/hosts.deny

/var/log/secure 日志信息:

DenyHosts 阻止SSH暴力***

/etc/hosts.deny 信息:

DenyHosts 阻止SSH暴力***

用户登录信息:

DenyHosts 阻止SSH暴力***

六、关于清除及添加可信主机记录

如果想删除一个已经禁止的主机IP,只在 /etc/hosts.deny 删除是没用的。需要进入 /var/lib/denyhosts 目录,进入以下操作:

1、停止DenyHosts服务:service denyhosts stop

2、在 /etc/hosts.deny(黑名单列表) 中删除你想取消的主机IP

3、添加你想允许的主机IP地址到/etc/hosts.allow(白名单列表)

4、启动DenyHosts服务:service denyhosts start

七、通过邮件接收 denyhosts 所发送的信息

1、修改 /etc/denyhosts.conf 配置档,并重启 denyhosts 服务

ADMIN_EMAIL = hongxue@showjoy.com

SMTP_HOST = mail.showjoy.com

SMTP_PORT = 25

SMTP_FROM = DenyHosts <nobody@localhost>

2、通过其他客户端进行多次失败登录尝试

3、打开mail,查看邮件

DenyHosts 阻止SSH暴力***


上一篇:DenyHosts阻止SSH暴力***


下一篇:gcc之-Wl,--wrap,xxx包装函数用法