一、控制服务
1.什么是服务
服务开启对本机无意义,对客户有意义
2.用什么控制服务
系统初始化进程可以对服务进行相应的控制
3.当前系统初始化进程是什么
pstree 显示系统中的进程树
systemd 系统初始化进程
systemctl 服务控制命令
systemctl status sshd 查看服务状态,inactive(不可用),active(可用)
systemctl start sshd 开启服务
systemctl enable sshd 设定服务开机启动 一般下载完服务,开启后,设定开机自启
systemctl stop sshd 关闭服务
systemctl restart sshd 重启服务
systemctl reload sshd 重新加载服务配置
systemctl disable sshd 设定服务开机不启动
systemctl list-units 列出已经开启服务当前状态 sshd有,httpd没有
systemctl list-unit-files 列出所有服务开机启动的状态 disable,enable,static(依赖性程序,在别的程序开启时会自动开启)
systemctl list-dependencies 列出服务的依赖
systemctl list-dependencies sshd 找一个服务查看开机启动状态
systemctl set-default multi-user.target 设定系统启动级别为多用户模式(无图形)
systemctl set-default graphical.target 设定系统启动级别为图形模式
二、sshd服务
关于openssh
SSH的全称是Secure Shell,简单说来ssh是一种安全的外壳协议,用于两个计算机间安全的远程登陆,说它安全,是因为ssh采用公钥加密的机制。
当主机中开启openssh服务,那么就对外开放了远程连接的接口
ssh为openssh服务的客户端
sshd为openssh服务的服务端
远程管理工具ssh具有数据加密传输、网络开销小以及应用平台范围广的特点,是远程管理中最常见的控制工具。
从客户端ssh来看,加密共有两种级别:
第一种级别(基于用户名和口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
第二种级别(基于密匙的安全验证)需要依靠密匙,即你必须为自己创建一对密匙,并把公用密匙即锁放在需要访问的服务器上。
如果你要连接到SSH服务器上,客户端软件A就会向服务器B发出请求,请求用你的密匙进行安全验证。
过程如下:B收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
1、客户端连接
(1)、连接方式:
ssh username@ip 文本模式的链接
ssh -X username@ip 可以在链接成功后开机图形
比如:不加-X时,连接其他主机成功后使用gedit会报错
加-X则可以成功使用gedit命令
IP:为172.25.254.123连接172.25.254.223
注意:
第一次链接陌生主机是要建立认证文件所以会询问是否建立,需要输入yes。
连接后,exit退出。
ifconfig 可以查看自己连接在哪台主机上,以宝万一。
再次链接此台主机时,因为已经生成~/.ssh/know_hosts文件所以不需要再次输入yes
(2)远程复制:
上传
格式: scp file root@ip:dir
下载
格式: scp root@ip:file dir
IP为172.25.254.123的主机
IP为172.25.254.223的主机
2、sshd的key认证
该认证出现的原因:ssh在客户端与服务端连接过程中,输入密码,如果其他任一客户端获取ip和密码,会并且知道它里面的重要文件存放路径,那么就可以拷贝服务端的文件,从而不安全,所以才有免密访问。
实验前提:服务端和客户端要在同一个网段。
步骤如下:
(1)、秘钥生成
在服务端生成公钥私钥: ssh-keygen ##生成密钥的命令
id_rsa是钥匙 id_rsa.pub是锁。
第一次回车是钥匙和密码存放路径(可以直接回车,存放在默认路径下 /root/.ssh/)
第二次回车是密码,这个密码是访问自路径时的密码(可以直接回车,不设置密码)
第三次回车也是密码(可以直接回车,不设置密码)
(2)、公钥生成(即锁的生成)
在服务端输入:ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.123(服务端自己的ip), 先给自己上锁,也就是给服务端上锁.
此时,加密完成。
(3)、分发秘钥
在服务端输入:scp /root/.ssh/id_rsa root@172.25.254.223(客户端的ip):/root/.ssh/ 将钥匙传给客户端,客户端/root/.ssh/的这个文件(目录)必须存在 ,相当于上传此时需要输入客户端的密码.
钥匙上传成功!
(4)、测试:
在客户主机里,执行命令: ssh root@172.25.254.123
此时不用密码认证即可登录。登陆成功,可见,此时的IP为172.25.254.123
3、sshd的安全设定
进行安全设定的原因:进行安全设定是因为服务端的root权限太大,客户端如果使用服务端的root权限极不安全
为了保证ssh服务器的安全性:服务端开放的权限不能太多,一般不太让客户端主机 用服务端主机的超级用户root
步骤如下:
(1)、在服务端 vim /etc/ssh/sshd_config ,修改文件(把PasswordAuthentication yes|no 设置为no),修改完成后,重启服务。systemctl restart sshd。
此时进行ssh连接,deny。
该文件内容以及含义:
78 PasswordAuthentication yes|no ##是否允许用户通过登陆系统的密码做sshd的认证(
最初始的那种远程连接输入密码的方式)是否可以使别人在登陆时没有钥匙时试密码登陆。
48 PermitRootLogin yes|no ##是否允许root用户通过sshd服务的认证,禁止超级用户登
陆 ,限制超级用户使用root身份来登陆ssh,默认为yes。
52 Allowusers student westos ##设定用户白名单,白名单出现默认不在名单中的
用户不能使用sshd
53 Denyusers westos ##设定用户黑名单,黑名单出现默认不在名单中的用户可
以使用sshd
(2)、添加sshd登陆登陆信息,文件内容就是登录后显示的信息。
添加方法:
在服务端的 /etc/motd 文件里面设置服务端自己的一些信息
vim /etc/motd 文件内容就是登陆后显示的信息
在服务端vim /etc/motd编辑该文件,添加信息(不需要重启服务,写了就会生效)
4、用户的登录审计
在服务端里面查看使用服务端的客户端的相关信息:
(1)、 w 查看正在使用当前系统的用户
w -f 查看使用来源
w -i 显示IP
/var/run/utmp
该文件里面存放的是w查出来的信息,但是这个文件不能用cat查看,可以用放file查看
(2)、last 查看使用过并退出的用户信息
/var/log/wtmp,该文件里面存放的是last查出来的信息,但是这个文件不能用cat查看,可以用放file查看
(3)、lastb 试图登陆但没成功的用户
/var/log/btmp,该文件里面存放的是lastb查出来的信息,但是这个文件不能用cat查看,可以用放file查看