前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DenyHosts 阻止SSH暴力攻击

DenyHosts 阻止SSH暴力攻击

作者头像
胡齐
发布2019-09-23 18:09:25
2K0
发布2019-09-23 18:09:25
举报
文章被收录于专栏:运维猫

首先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

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

2. 安装 Denyhosts

python setup.pyinstall # 安装Denyhosts

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

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

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

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

设置Denyhosts为开机自动启动~

chkconfig --add denyhosts # 添加denyhosts服务

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

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

3. 启动denyhosts服务

systemctl start denyhosts # 启动denyhosts服务

systemctl status denyhosts # 查询denyhosts服务状态

三、来看看 /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 服务并查看状态

五、通过测试 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 日志信息:

/etc/hosts.deny 信息:

用户登录信息:

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

如果想删除一个已经禁止的主机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,查看邮件

关于运维学习、分享、交流,笔者开通了微信公众号【运维猫】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学运维知识。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档