企业中sshd服务的原理及应用

1.什么是服务
定义:系统中运行的对于系统本身没有意义,但对客户主机有重大意义的程序叫做服务性软件简称服务
服务器 :安装了某个软件的主机叫XX服务器

cs模型
 client:现实中用到的都是client    
 server:企业中提供服务用的是server
提供server :对自己没有意义,对别人有意义  

2.用什么控制服务
系统初始化进程可以对服务进行相应的控制
3.系统初始化进程
systemd 系统初始化软件
pstree 显示系统中的进程树

4.进程控制命令
ssh------>sshd
client —> server
systemctl 服务控制命令
(1)systemctl status sshd 查看服务状态 inactive不可用,active可用
(2)systemctl start sshd 开启服务
(3)systemctl stop sshd 关闭服务
(4)systemctl restart sshd 重启服务
例:
<1>先重启服务,再查看状态
在这里插入图片描述
<2>关闭服务,再次查看状态,用真机连接这台虚拟机被拒绝
在这里插入图片描述
在这里插入图片描述
<3>再打开服务并查看状态,服务的pid变了,这是跟之前不同的服务,再次用真机连接可以连上
在这里插入图片描述
在这里插入图片描述
(5)systemctl reload sshd 重新加载服务配置
注:不是所有的服务都支持reload
reload在进程不关闭的情况下重新加载服务配置
(6)systemctl disable sshd 设定服务开机不启动

注:设定后系统会提示sshd.service文件被删除,再次查看服务状态仍然是运行着,但后面会提示disabled 即再次开机不会启动
在这里插入图片描述
这时reboot重启虚拟机,重启后再次连接会被拒绝
在这里插入图片描述
(7)systemctl enable sshd 设定服务开机启动

注:执行命令后系统会提示sshd.service文件被添加,设定后查看服务状态,仍然是关闭状态不可用,但后边有enabled表示再次开机会自启动
在这里插入图片描述
reboot重启,重启后真机再次连接可以连上
在这里插入图片描述
在这里插入图片描述
(8)systemctl list-units 列出已经开启服务当前状态
在这里插入图片描述
(9)systemctl list-unit-files 列出所有服务开机启动状态 disable(开机不启动),enable(开机启动),static(静止),masked(被锁定)
在这里插入图片描述
(10)systemctl list-denpendencies 列出服务的倚赖

(11)systemctl set-default multi-user.target 设定系统启动级别为多用户模式
例:
<1>执行该命令系统会出现提示,执行完之后reboot重启
在这里插入图片描述
<2>重启后出现以下界面,没有图形,文本界面输入用户名和密码登录(密码没有回显)
在这里插入图片描述
(12)systemctl set-default grphical.target 设定系统启动级别为图形模式
例:
登录后执行以上命令,并再次重启
在这里插入图片描述
重启后出现图形,选择超级用户登录
在这里插入图片描述
在这里插入图片描述
(13)systemctl mask sshd 锁定服务(服务关闭时锁定服务再次打开打不开)
例:
<1>先关闭服务,并查看服务状态
注:服务开始时锁定服务,再关闭服务是可以关闭的(这样做没有意义)
在这里插入图片描述
<2>锁定服务,再次打开服务系统会提示服务已被锁定
在这里插入图片描述
(14)systemctl unmask sshd 解锁服务
如图:解锁服务后打开服务,打开成功系统没有报错,再次查看服务状态,服务正常运行
在这里插入图片描述

5.sshd简介
sshd服务:可以通过网络在主机中开机shell的服务

客户端软件 sshd
连接方式 ssh username@ip
如:ssh [email protected]
在这里插入图片描述

注:  
   第一次连接陌生主机是需要建立认证文件
   所以会询问是否建立,需要输入yes
   再次连接这台主机是因为已经生成/.ssh/know_hosts文件所以不需要再次输入yes
   认证的作用,确认之前连接的和现在的是否为同一主机

ssh -X username@ip(可以使用连接对象的图形)
如: ssh -X [email protected]

如图,连接虚拟机后执行cheese命令可以打开该虚拟机的摄像头,但是虚拟机没有摄像头,系统就会出现警告,如果连接的是真机便可以打开摄像头
在这里插入图片描述
如图系统提示找不到设备
在这里插入图片描述

##############################################################
注:在进行下一实验时先准备好两台虚拟机
两台虚拟机分别设置ip,客户机的ip是真机的+100,服务机的是真机+200
分别新建用户并设定密码
<1>客户机打开网络配置工具,配置网络
在这里插入图片描述
<2>为了方便区别两台虚拟机,我们给客户机的shell改变颜色
单击edit,选择第三个进入后选择colors,单击取消use前边方框里的对勾,设置后退出即可
在这里插入图片描述在这里插入图片描述
<3>ifconfig eth0 查看当前网络信息
在这里插入图片描述
<4>hostnamectl set-hostname client_ssh.westos.com 客户机
更改当前客户机的主机名,打开另一个shell即可看到更改后的效果
在这里插入图片描述
<5>在另一虚拟机做同样的设置,网络配置为172.25.254.227
ifconfig eth0查看网络
在这里插入图片描述
<6>hostnamectl set-hostname server_sshd.westos.com 服务机
更改服务机的主机名
在这里插入图片描述
<7>两台虚拟机都rm -fr /root/.ssh删除/root/.ssh文件
允许的优先级高于拒绝
6.在文件中设置允许或禁止某个用户访问
(1)vim /etc/hosts.deny设置禁止谁访问
(2)vim /etc/hosts.allow设置允许谁访问
写法:sshd:ALL EXCEPT 172.25.254.127
例:
<1>客户机编辑系统中的配置文件
在这里插入图片描述
写法:sshd:ALL EXCEPT 172.25.254.227
表示:禁止所有人访问除了IP为172.25.254.227的主机(即服务机)

在这里插入图片描述
<2>验证上一步的设置
真机连接客户机,系统提示ssh身份认证已被更改,连接被阻止
在这里插入图片描述
服务机连接客户机,连接成功
在这里插入图片描述
7.ssh的key认证
ssh的key认证采用的是非对称加密
认证:证明的过程就叫认证
注:默认的认证机制是不安全的(如:配置文件中设置),需要告诉别人超级用户的密码
########### 建立key认证的过程 ###################
<1>服务端和客户端都删除/root/.ssh 的所有文件 rm -fr /root/.ssh/
在这里插入图片描述
<2>服务端设置公钥 生成锁
ssh-keygen -f /root/.ssh/id_rsa -N ’ ’
注:-f 后表示设置的公钥在什么目录下,-N 后的单引号中没有内容,表示公钥的密码为空
也可以在其中加入想要的密码,这样是为了方便操作,也可以一步一步按流程操作设置公钥
在这里插入图片描述
<3>服务端上传公钥 ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected],系统会询问是否要上传,输入yes,输入超级用户的登陆密码
在这里插入图片描述
<4>服务端查看/root/.ssh/下的文件,切换到该目录下,分别查看id_rsa.pub(公钥)和authorized_keys(锁)两个文件,对比二者的内容,是完全相同的
在这里插入图片描述
切换目录,查看对比内容
在这里插入图片描述
<5>服务端vim /etc/ssh/sshd_config ,打开这个文件,设置使用密码不能登陆
将yes改为no
在这里插入图片描述
将密码认证改为no,否则别的主机还可以通过用户密码来登录
在这里插入图片描述
在这里插入图片描述
设置完之后退出保存,重新加载或重启sshd.service服务
在这里插入图片描述
<6>客户端连接服务端测试 ssh [email protected]
系统会提示没有权限
在这里插入图片描述
<7>分发钥匙:服务端将私钥发送给客户端的/root/.ssh/目录下
scp /root/.ssh/id_rsa(私钥) [email protected]:/root/.ssh/
发送时系统会提示让输入客户端超级用户的密码
在这里插入图片描述
客户端查看/root/.ssh文件,文件中有私钥
在这里插入图片描述
<8>客户端连接服务端检验是否成功
这次连接是不需要密码的,连接成功
在这里插入图片描述
<9>服务端删除/root/.ssh/authorized_keys文件并查看/root/.ssh/目录

在这里插入图片描述
客户端退出并再次连接ssh [email protected],连接失败,系统提示没有权限
在这里插入图片描述

<10>服务端将/root/.ssh/id_rsa.pub(公钥)复制为/root/.ssh/authorized_keys(锁)
cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
ls 查看/root/.ssh/目录
在这里插入图片描述
客户端再次连接
ssh [email protected]
这次连接依然是免密的
在这里插入图片描述

注:公钥的作用是加密
    私钥的作用是解密
    scp 远程复制

8.sshd中的安全设定
####配置文件 /etc/ssh/sshd_config 可以用vim打开编辑###

(1)PasswordAuthentication yes|no 是否允许用户通过登录系统的密码做为sshd的认证
在这里插入图片描述

在这里插入图片描述
设置完之后退出保存,并重新加载sshd服务
在这里插入图片描述
注:在做下面的实验时必须把这个设置改为yes
(2)PermitRootLogin yes|no 是否允许root用户通过sshd服务的认证
在这里插入图片描述
在这里插入图片描述
将这里的yes改为no
在这里插入图片描述
保存退出后,再次加载服务
在这里插入图片描述
真机连接服务端输入正确密码系统却提示没有权限重输密码,三次之后会出现和输错密码一样的报错,实则是root用户没有访问权限

在这里插入图片描述
(3)AllowUsers redhat student 设定用户白名单,白名单出现默认不再名单中的用户不能使用sshd
例:
<1>新建一个用户redhat并修改他的密码
在这里插入图片描述
<2>vim /etc/ssh/sshd_config编辑配置文件
在这里插入图片描述
<3>写入AllowUsers redhat
表示Redhat用户可以使用sshd连接,并将上一步root用户的设置还原为yes
在这里插入图片描述
退出保存后重新加载sshd服务
<4>在真实主机下ssh [email protected] 连接服务机的redhat用户,输入密码后连接成功
在这里插入图片描述
退出刚刚登陆的用户,连接服务机的超级用户,会出现上次一样的错误,因为root用户不在白名单中没有权限
在这里插入图片描述
<5>再次配置/etc/ssh/sshd_config文件,将root用户加入到白名单中
设置后退出保存
在这里插入图片描述
再次在真机中连接服务端的root用户,连接成功
在这里插入图片描述

(4)DenyUsers redhat 设定用户黑名单,黑名单出现默认不再名单中的用户可以使用sshd
例:
<1>vim /etc/ssh/sshd_config编辑配置文件
删除或注释掉白名单,写入DenyUsers 设置黑名单
在这里插入图片描述
<2>退出保存后同样重启服务
用真机连接服务端的redhat用户出现以下情况
在这里插入图片描述
系统提示没有权限以及密码输错的报错,但真实原因是redhat用户在黑名单中没有使用sshd服务的权限
9.用户的登陆审计
(1)w 查看谁正在使用
在这里插入图片描述
(2)w -f显示使用来源
在这里插入图片描述
(3)w -i 显示ip
在这里插入图片描述
(4)last 查看登陆过的用户
在这里插入图片描述
(5)lastb 查看试图登陆但没有成功的用户
(实验时可以故意将密码输错观察结果)
在这里插入图片描述
如图有三次输错密码的记录,查看时就会有三次没有成功的记录
在这里插入图片描述
##################################################
(1)w w -f w -i查看的是/run/utmp这个文件下的信息
如果将这个文件清空,就什么也查看不到
在这里插入图片描述
(2)last 及lastb查看的是/var/log/btmp文件中的内容,清空该文件再次查看就什么也没有
在这里插入图片描述
在这里插入图片描述
若让一个用户再次登录再查看就会有信息
在这里插入图片描述
w -f查看用户来源
在这里插入图片描述
last查看谁登录过
在这里插入图片描述
10.添加登陆后显示的信息
vim /etc/motd
文件中的信息就是登陆后显示的信息
<1>vim /etc/motd编辑配置文件
在这里插入图片描述
<2>在文件中编辑以下内容
在这里插入图片描述
<3>在真机中连接刚刚更改过配置文件的虚拟机的ip;登陆后出现以下结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44224894/article/details/86500785