Windows安全加固系列-----应对ssh的暴力破解

2019/6/14 —

此文章是关于有效防范SSH的暴力破解,此处使用DenyHosts和SSH密钥认证的方法进行防范。

DenyHosts

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

实验环境:

kali linux 和 centos 7 两台Linux操作系统的主机。

这里准备了DenyHosts的压缩包。
链接:https://pan.baidu.com/s/1npQYI0l3H9dLt3-lcCZTOQ
提取码:u8p4

在Centos 7 上的操作

下载后,传到centos 7 中
Windows安全加固系列-----应对ssh的暴力破解_第1张图片

解压

tar xzf DenyHosts-2.6.tar.gz		

Windows安全加固系列-----应对ssh的暴力破解_第2张图片
到这个目录下

cd DenyHosts-2.6

在这里插入图片描述
安装

python setup.py install

Windows安全加固系列-----应对ssh的暴力破解_第3张图片
到这个目录下

cd /usr/share/denyhosts

在这里插入图片描述
创建配置文件

cp denyhosts.cfg-dist denyhosts.cfg

在这里插入图片描述
编辑这个文件

vi denyhosts.cfg
主要修改这个几个参数:
	DENY_THRESHOLD_INVALID = 5	---->  DENY_THRESHOLD_INVALID = 2
	无效登录的用户登录2次锁定
	DENY_THRESHOLD_VALID = 10	---->  DENY_THRESHOLD_INVALID = 3
	普通用户登录3次锁定
	DENY_THRESHOLD_ROOT = 1	---->  DENY_THRESHOLD_INVALID = 2
	管理员root用户登录2次锁定

Windows安全加固系列-----应对ssh的暴力破解_第4张图片
创建启动程序

cp daemon-control-dist daemon-control

在这里插入图片描述
改变程序的权限,确保只有管理员可以启动

chown root daemon-control
chmod 700 daemon-control

Windows安全加固系列-----应对ssh的暴力破解_第5张图片
开启服务

./daemon-control start

在这里插入图片描述
查看进程,是否开启DenyHosts

ps -elf | grep Denyhosts

在这里插入图片描述kali linux 上进行ssh暴力破解的攻击

编辑字典密码
Windows安全加固系列-----应对ssh的暴力破解_第6张图片
开始攻击

msfconsole
use auxiliary/scanner/ssh/ssh_login
show options
set PASS_FILE password
set RHOSTS 192.168.136.13
set RPORT 52201
set USERNAME  root
show options

发现没有攻击成功,说明denyhosts 及时锁定了kali linux 的登录测试。
Windows安全加固系列-----应对ssh的暴力破解_第7张图片
在centos 7 上查看记录
Windows安全加固系列-----应对ssh的暴力破解_第8张图片
cat /var/log/secure - - - 查看系统安全日志
Windows安全加固系列-----应对ssh的暴力破解_第9张图片

SSH密钥认证

构建密钥对验证的ssh登录体系

第一种方法

在客户端操作,在客户端创建密钥对,保存私钥,然后将公钥发送给服务端。

第一步:创建密钥对

ssh-keygen     打完命令后,一直回车就可以
如果不想回车,就可以设置一下:
	第一次输入是保存秘钥的文件路径
	第二、三次是输入保护私钥的密码
私钥文件:id_rsa
公钥文件:  id_rsa.pub

第二步:上传公钥文件
方法1:

		目标为要远程的服务器
		使用ssh-copy-id自动完成
		ssh-copy-id -i /root/.ssh/id_rsa.pub   [email protected] -p 52201

方法2:

		在服务器上完成此操作:
		ls -a 		找到.ssh这个目录
		如果没有:可以创建目录:
		mkdir .ssh
		cd .ssh/  			 到这个目录下
		ls					 找到authorized_keys这个文件
		touch authorized_keys		如果没有,创建一个文件
		chmod 600 /root/.ssh/authorized_keys	改变一下权限
		将公钥信息导入公钥数据库
		数据库文件:~/.ssh/authorized_keys
		cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

第四步:重启sshd服务,再次登录时将通过密钥对验证

systemctl restart sshd
ssh -i ./id_rsa [email protected]
./id_rsa   在秘钥位置连接
如果在家目录连接:
ssh -i root/.ssh/id_rsa [email protected]

在这里插入图片描述
报错

/usr/bin/ssh-copy-id: ERROR: ssh_exchange_identification: read: Connection reset by peer

解决方法

echo “sshd: ALL” >> /etc/hosts.allow

第二种方法
有些细节参考上一种方法
在服务器端操作,在服务器上创建密钥对,安装公钥,然后将私钥发送给客户端。

第一步:在服务器上创建密钥对

ssh-keygen

第二步:在服务器上安装公钥

cat id_rsa.pub >> authorized_keys

chmod 600 authorized_keys
chmod 700 ~/.ssh

第三步:把私钥发送给客户端
第四步:重启sshd服务,再次登录时将通过密钥对验证

systemctl restart sshd
ssh -i ./id_rsa [email protected] -p 52201

OK,有什么问题,欢迎评论交流O(∩_∩)O~

你可能感兴趣的:(Windows安全加固系列)