一、Linux服务管理方式
(1)关于Linux服务管理
linux系统从启动到提供服务的过程:先加电,然后通过MBR或者UEFI加载GRUB,在启动内核,内核启动服务,然后开始对外服务。
主要有三种管理方式:SysV init、Upstart、systemd。
(2)SysV init的优缺点 (rhel 6使用systemV 管理服务)
SysV是最早的解决方案,通过脚本控制。
优点:
- 原理简单,易于理解。
- 依靠shell脚本控制,编写服务脚本门槛低。
缺点:
- 服务顺序启动,启动过程慢。
- 不能根据需要启动服务。比如,通常在插入U盘后再启动USB服务会更好的节约资源。
(3)Systemd:尽可能的快速启动服务。
在早期使用Sys V是没有问题的,因为主要用于服务器,很难得会重启一次。
二、守护进程及服务管理
- 在rhel7系统中的系统启动和系统服务都是用systemd管理的。
- 守护进程: 是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。
- systemd服务管理:服务的启动脚本被服务单元(Unit)取代,服务单元以 .sevvice文件拓展名结束,提供了与服务启动脚本一样的功能。
systemctl is-enable httpd #查看服务是否自启
systemctl is-active httpd #查看服务的活跃状态
systemctl enable 服务 #设置服务开机自启
systemctl disable 服务 #开机不自启
systemctl start 服务 #开启服务
systemctl stop 服务 #停止服务
systemctl status 服务 #查看服务状态
systemctl ststus 服务 -l #显示该服务详细的log
systemctl reload 服务 #重新加载服务配置文件。在修改配置文件后尽量别重启服务。使用reload命令。
systemctl restart 服务 #重启服务
systemctl mask 服务 #屏蔽一个服务
- 为什么要屏蔽一个服务:因为在rhel7中有很多冲突的服务,比如network和networkmanager都是管理网络的服务,firewalld和iptabled 、etables等。屏蔽服务就是为了两个具有相同功能的服务同时进行操作造成系统故障。
systemctl umask 服务 #把屏蔽服务开放
systemctl list-units #列出所有服务
systemctl list-unit-files #列出所有服务的自启动状态
systemctl --failed --type=service #查询启动失败的服务
systemctl list-units --type=service #列出所有已经加载并激活的(运行中的)unit,type指定unit的类别。-all列出所有的unit。
- 服务状态说明(systemctl status serviceName)
loaded | 服务单元配置文件已经被处理 |
active(running) | 服务的一个或者多个进程在进行中 |
active(exited) | 某些一次性运行的服务已经成功被执行并退出(一次性服务:服务运行完后相关进程会自动退出) |
active(waiting) | 服务已经运行但在等待某个时间 |
inactive | 服务没有在运行 |
enabled | 服务设定为开机运行 |
disabled | 服务设定为开机不运行 |
static | 服务不能被设定开机启动,但可以由其他服务启动该服务 |
- SSH简介
通过ssh远程访问。openSSH提供一个安全的远程shell,用户可以远程管理Linux系统。
open SSH使用非对称加密的手段加密保护通信数据。
网络设备一般使用telnet管理,但是服务器一定使用ssh管理。
- ssh服务器配置文件/etc/ssh/sshd_config
2. ssh登录的原理:
ssh的安全验证采用的是“非对称密钥系统”,其安全验证分为两种级别。【不了解非对称加密的请查看红帽Linux+虚拟化基础入门(三)安全部分】
(1)基于口令的安全验证
这种方式就是传统的用户名加密码登录,大多数情况都是用这种方式。
1)客户端发起链接请求。
2)远程主机(服务端)收到用户的登录请求,将自己的公钥发给客户端。
3)客户端利用自己收到的服务端公钥加密自己的密码,接着把加密后的密码和自己的公钥发给服务端。
4)服务端收到客户端加密的密码和客户端的公钥,用自己的私钥解密密码。再根据解密出来的密码与本地存储的密码对比,相同则允许登录。
缺陷:采用对称加密的方式看起来很安全,其实存在很多漏洞。只要是密码会在网络中传输,那么这种方式都是不安全的。比如:当你连接服务器时,黑客冒充服务器把他自己的公钥发给你,那么你也会老老实实的把密码用他的公钥加密后发给他。然后黑客就轻而易举的获得了你的密码。
所以,在假定你第一次连接的服务器是正版服务器的前提下,进行上述第三步时服务器会把他的指纹显示出来,让客户端确认是否是正版的服务器。
(2)基于密钥的安全验证
1)首先需要在客户端当前用户的家目录下创建一对密钥。然后把公钥放到服务器上。
2)客户端请求登录的时候会请求密钥安全认证,将自己的公钥发送到服务器上。
3)服务器将收到的公钥与存储的公钥进行对比。对比通过,服务器向客户端发送用该密钥加密的“质询”(一串字符)。
4)客户端收到“质询”后用私钥加密,然后再发回服务器。服务器进行对比,对比通过则连接成功。
优点:全程没有密码传输。只要将公钥放到服务器上就可以免密登录了。
出于安全考虑,服务器上线后,一般会禁止root登录,一周后会禁止密码登录。
(3)基于密钥验证的配置方法
1)客户端生成密钥对
ssh-keygen (操作:一路回车)
2)客户端把公钥发送给服务器
ssh-copy-id -I ~/.ssh/id_rsa.pub 192.168.1.2 #ip为服务器的ip
3)登录
ssh root@192.168.1.2 #同root用户登录
实现免密登录