版权声明:欢迎转载与交流。https://blog.csdn.net/one2more/article/details/90368464
今天来探索分享一下如何提升sshd服务的安全性,重点探索一下开启秘钥认证
从而有效防止暴力破解
上次分享了的是:《实验探索openssh(二):远程连接的使用方法及配置文件常用项解析》有需要的可以点击绿色字体部分的标题进去看一看。
一、如何提升sshd服务的安全性
1、密码足够复杂。
长度一定要大于8位,最好大于20位。密码要尽可能的使用数字、字母大小写、特殊符号等混合组成。定期修改。(复杂度高往往不容易记住,可借助第三方的密码生成及记录工具来进行管理)
2、修改默认的端口号
sshd服务默认的端口号是22
,可通过配置文件/etc/ssh/sshd_config
中的第17行
#Port 22
选项来指定(取消注释后,把22改为指定端口号即可)。
3、登录时打印提示信息(主要用来警示内部人员防止误操作)
sshd服务开启登录时打印提示信息,需要通过配置文件第105行
#PrintMotd yes来开启该功能(默认就是开启的
)。同事通过/etc/motd
文件来自定义,没有该文件时请手工建立。
4、每次登录时留意最后一次登录信息,发现默认来源IP时提高警惕
5、不允许root账户直接登录(请一定分清root账号
和root身份
)
系统中可以禁止root账号登录,往往也会禁止root账号登录,但是一定不能禁止root身份登录。因为一些服务或程序往往需要root身份才能够运行和配置,因此一定不能禁止root身份登录。我们可以通过配置文件
中第38行
#PermitRootLogin yes选项,把yes
改为no
,同时把一个普通账号,通过修改用户ID的方式授予其root身份,毕竟系统是通过用户ID是否为0
来区分用户身份等级的。
6、条件允许的话可以使用堡垒机或跳板机
7、使用pam模块验证登录
Linux系统自带的pam认证模块也可以进行登录认证,但是防护相对较弱,且还有一个致命的弱点:其针对的是用户,当遭遇暴力破解的时候,往往会造成自己的账号被锁死无法使用。一旦锁定要想解锁需要手动操作。
[root@localhost ~]# vim /etc/pam.d/sshd #编辑配置文件,在第1行后加入如下一条规则
1 #%PAM-1.0
2 auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200
##认证 要求 调用这个模块 允许错误次数 锁定时间 甚至root用户 root用户锁定时间
查看
某一用户错误登录次数(语法:pam tally --user 用户名
)
[root@localhost ~]# pam_tally –-user test
清空
某一用户错误登录次数(语法:pam tally --user 用户名 --reset
)
[root@localhost ~]# pam_tally –-user test --reset
8、禁止密码登录,只允许通过秘钥认证登录
二、禁止密码登录,只允许通过秘钥认证登录
禁用密码登录后,即使被别人拿到账号密码也无法使用账号密码去登录,从而有效提升系统安全。但是在操作前请确保已经做好秘钥认证的相关配置
,不然很可能造成机器失联的尴尬状况(本地服务器无所谓,远程服务器就尴尬了)。
1、在客户端上生成秘钥对
[root@testhost01 ~]# ssh-keygen #使用`ssh-keygen`命令生成密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #提示默认秘钥文件的保存路径,可自行指定,一般保持默认即可
Enter passphrase (empty for no passphrase): #提示输入秘钥文件的保护密码,可以留空
Enter same passphrase again: #提示再次输入秘钥文件的保护密码
Your identification has been saved in /root/.ssh/id_rsa. #私钥保存路径
Your public key has been saved in /root/.ssh/id_rsa.pub. #公钥保存路径
The key fingerprint is: #秘钥指纹信息
SHA256:jkVxg1fdfZZTI/hLXSA5LUiahKAneZmzm52Gpru62c root@testhost01
The key's randomart image is:
+---[RSA 2048]----+
| +. .oo+o+=.+=|
| + = +. .o..+|
| o S . . |
| = . . |
| o=oo+. |
+----[SHA256]-----+
[root@testhost01 ~]# ll /root/.ssh/
总用量 12
-rw------- 1 root root 1675 5月 20 17:52 id_rsa
-rw-r--r-- 1 root root 397 5月 20 17:52 id_rsa.pub
### 注意私钥不要泄露,权限也一定要注意600或700,权限一定要注意,权限不当造成的事故,只能自己背锅 ####
2、上传公钥到服务器
[root@testhost01 ~]# ssh-copy-id -i root@192.168.0.111 #使用`ssh-copy-id`命令上传公钥到服务器
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.0.111's password: #此处需要输入服务器的root密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.0.111'"
and check to make sure that only the key(s) you wanted were added.
实际上我们上传的步骤就是在服务器端的/root/.ssh/authorized-keys
文件中把公钥文件内的信息copy到该文件中,当然我们也可以使用复制,粘贴的方式配置该文件。authorized-keys
文件的权限
也必须为600
或700
3、关闭密码验证登录
编辑配置文件第65
行 PasswordAuthentication yes
把yes
改为no
4、重启sshd服务
[root@localhost ~]# systemctl restart sshd
测试:使用测试机进行登录,发现可以直接进行登录
[root@testhost01 ~]# ssh root@192.168.0.111
Last login: Mon May 20 16:10:44 2019 from 192.168.0.201
[root@localhost ~]#
三、Windows端使用Xshell生成秘钥,实现秘钥认证登录
1、点击“工具
”选项卡>>>
选择“用户密码管理者
”
2、点击选择“秘钥类型
”和“秘钥长度
”>>>
点击“下一步
”
3、点击“下一步
”
4、根据需要修改“秘钥名称
”和填入“秘钥保护密码
”(可以不写密码) >>>
点击“下一步
”
5、提示密码为空,点击“是
”
6、点击“保存为文件
”,保存到本地以备后期使用
7、复制“秘钥
”到剪贴板后,点击“完成
”
8、把“秘钥”加入到服务器端的“/root/.ssh/authorized_keys”文件中
相关阅读:
《实验探索openssh(一):服务安装搭建》
《实验探索openssh(二):远程连接的使用方法及配置文件常用项解析》
《实验探索openssh(四):通过第三方防护应用fail2ban来防止ssh暴力破解》
《实验探索openssh(五):通过第三方防护应用denyhosts来防止ssh暴力破解》