一、使用crt实现私\钥证书登陆
1.1 配置思路
crt创建自己的私钥和证书->上传证书文件到目标服务器->配置目标服务器接收证书认证方式登陆->crt连接服务器时使用私钥登陆
1.2 crt生成证书
TOOLs->create public key # 生产证书
配置证书加密算法,RSA就好了
设置私钥的密码和证书的描述,第一次使用私钥连接服务器时需要输入,后续就不会了。
私钥的加密密码的长度位数当然越多约好了
选择生成证书的格式这里咱们连接的是使用openssh的服务器,所以就是用openssh格式,选哪个new的就行,然后给证书命个名
1.3 openssh服务端配置
1. root用户编辑文件 vi /etc/sshd_config,配置完成后重启ssh服务 # service sshd restart
2. 如下几个关键配置,后续会有其它的加固项,这里把这三个前面的注释去掉,no改为yes就行了
RSAAuthentication yes #允许RSA认证
PubkeyAuthentication yes #允许证书认证
AuthorizedKeysFile .ssh/authorized_keys #证书文件的存放位置,这里后续会将上传的证书放在这使也可以这样写“%h/.ssh/authorized_keys”,就是要用户家目录下的.ssh文件夹,没有就创建,权限保证>700,authorized_keys >600。
1.4 上传crt生成的公钥至目标服务器
将crt生成的证书放在.ssh目录下,执行命令cat zwalts_pub_key.pub(自己的证书名) >> authorized_keys,注意下authorized_keys内容的格式,多个公钥证书要换行(很重要),一般每个证书都是以我下图开头的证书和结尾的。目标服务器上有多个用户的话,比如有root,pso,zwalts等等,要在不同的家目录下存入证书至~/.ssh/authorized_keys文件内
1.5 连接效果
目标服务器IP是192.168.150.139,要求输入你的私钥密码,之前生成私钥和证书的时候设置的。
二、openssh客户端实现私钥\证书登陆
2.1 配置思路
openssh客户端创建自己的私钥和证书->上传证书文件到目标服务器->配置目标服务器接收证书认证方式登陆->openssh客户端连接服务器时使用私钥登陆->把私钥路径保存openssh客户端配置文件
2.2 openssh客户端生成证书
在装有openssh的linux机器上执行命令
- ssh-keygen -t rsa #rsa是一种密码算法,还有一种是dsa,证书登录常用的是rsa。假设当前用户是zwalts(这里用户无所谓),执行 ssh-keygen 时,会在zwalts的home目录下的 .ssh/ 产生所需要的两把 Keys ,分别是私钥 (id_rsa) 与公钥 (id_rsa.pub)。第一个是要求输入证书路径和名称保持默认回车就好,第二个就是需要设置私钥的密码了,如果不是测试,不是要求无密码ssh,那么对于passphrase,不建议空密码。我这里之前生成过所以会有提示让我选择是否覆盖旧的。正确生产完后就可以上传至目标服务器了
有一点需要注意,当前用户生成的证书只能给自己用,不能共享root不能给普通用户,普通用户不能给r
2.3 openssh服务端配置
这里跟上面1.3相同,我就继续沿用了。
2.4 连接效果
使用名如下命令
- ssh -i id_rsa zwalts@192.168.150.138 -p 2222 #目标机还是192.168.150.138,连接的目标机的zwalts用户。输入私钥密码之后成功登陆,本机用户是haha
2.5 在openssh客户端配置私钥路径
在日常使用中会有一个问题,每次连接目标服务器还有ssh -i指定私钥位置太麻烦了,为了解决他我们可以在/ets/ssh/ssh_config下,即客户端配置文件内添加私钥位置如下,这里是相对路径,所以只要私钥名一样就可以适用所有用户。对配置文件的编辑需要重启ssh服务
再去练目标服务器192.168.150.138的zwalts用户,这时不用-i指定私钥即可登陆成功
三、登陆加固
3.1 使用普通用户锁定root用户
passwd -l root (passwd -u root解锁)
passwd -S root #查看锁定状态
3.2 禁止root远程登陆
编辑配置文件/etc/ssh/sshd_config,PermitRootLogin yes改为no,去掉前面的注释。对配置文件的编辑需要重启ssh服务
3.3 禁止空密码登陆
编辑配置文件/etc/ssh/sshd_config,PermitEmptyPasswords yes改为no,去掉注释。不出意外的话默认就是no。对配置文件的编辑需要重启ssh服务
3.4 禁止密码认证
![](http://upload-images.jianshu.io/upload_images/6460464-c809fea83aed512b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
3.5 配置sudo的权限
限制完root用户的使用后,普通用户ssh上来,操作会经常权限不足,需要使用sudo命令来使用root的权限作。编辑/etc/sudoers,按照如所示添加用户即可,NOPASSWD表示在使用sudo命令时不用输入当前用户密码(不推荐)。也可以添加用户组,示例文件也指出了,wheel用户组相当于linux的管理员组。后面也会有用到
效果
3.6 配置su的范围
解决普通用户的权限问题,还有就是su 命令,可以直接su到root来切换用户身份。我们这里限制只有wheel用户组的用户才能su
添加管理员用户 usermod -G wheel zwalts
编辑配置文件vi /etc/pam.d/su
- 去掉auth required pam_wheel.so use_uid这行的注释.
编辑配置文件 vi /etc/login.defs
- 在最后加上SU_WHEEL_ONLY yes
对比测试zwalts加入了wheel组pso没有,都是普通用户,使用su ,切换到root用户
zwalts su **gly(这个是root用户的别名)输入正确密码成功,但是pso输入正确的**gly密码也无法登陆,会一直提示密码错误,因为pso不在wheel组内。
3.7 变更root名称
上文看到的root用户的实际用户名是**gly原理很简单,新建个用户,直接修改/etc/passwd的uid和gid的值,它就是root了。这种方式修改的用户,他就是root,在放置证书的时候要把证书放在/root/.ssh下,不是/home/cao需要注意。