云计算运维学习day6--Linux的系统管理
目录
一.系统引导
1.1基本概念
1.作用:指Linux系统从电源开启到进入完整系统的全过程。
2.核心:GRUB找到内核,内核挂载根文件系统系统,systemd管理后续的服务启动。
3.五大阶段:BIOS/UEFI 自检 → GRUB 加载内核 → 内核初始化 → systemd 启动服务 → 用户登录
BIOS/UEFI 自检:硬件自检与启动介质定位,确定硬件正常工作,并找到装有引导程序的设备。
GRUB 加载内核:加载内核与初始化内存盘,找到Linux内核和临时文件系统,将他们加载到内核当中,为内核初始化做准备
内核初始化:接管硬件并挂载根文件系统,完成硬件的核心初始化,并且使用临时文件系统的驱动将他们挂载到跟文件系统中
systemd启动服务:系统的第一个进程(PID 1),并行启动所有必要的系统服务(如网络、日志、SSH 等),将系统引导至可用状态
用户登录:用户输入账号密码,登录Linux系统
内核初始化到启动服务的过程:
/sbin/init -> /lib/systemd/systemd -> /usr/lib/systemd/system
系统启动目录:
/boot: Linux 系统的“启动分区”,包含了启动过程中最核心的静态文件
/boot/grub2/grub.cfg: GRUB 2 的配置文件,定义了启动菜单、内核参数和启动项
1.2 GRUB 文件损坏,引起的Linux系统无法启动
1.2.1模拟GRUB文件损坏情况
1.修改grub,conf文件名,模拟文件不存在或损坏情况:
cd /boot/grub2 #cd到启动目录下
ls
mv grub.cfg grub.cfg.back #破坏grub.conf文件

![]()
2.重启虚拟机,Linux系统进入grub模式,出现以下情况,表示启动文件被破坏:
reboot

1.2.2修复步骤
1.手动指定 /boot 分区的位置
set root="hd0,msdos1"

2.手动指定内核文件和根文件系统位置,加载 Linux 内核并传递启动参数
linux16 /vmlinux-3.10.0-1160.e17.x86_64 root=/dev/mapper/centos-root
![]()
3.初始内存文件系统
initrd16 /initramfs-3.10.0-1160.el7.x86_64.img
![]()
4. 重启Linux系统,即可正常进入
reboot


1.3 /boot目录损坏,Linux无法启动
1.3.1 模拟/boot目录损坏情况
1.删除/boot目录
rm -rf /boot/~

2.重启系统,会进入救援模式
reboot


1.3.2修复步骤
1.点击虚拟机的发送键,接着快速点入虚拟机,按 fn + f12,进入BIOS配置界面


2.移动光标到Boot选项,选定CD光盘驱动,按住 shift 和 “+”键调到最上面,用光盘驱动来引导系统驱动,注意:虚拟机上须有光盘.iso文件

3.移动到Exit选项,保存设置并退出界面


4.进入故障排除菜单,接着进入救援模式


5.输入1,继续启动

6.按回车键,进入精简shell环境


7.重启环境配置,进入到系统的root根目录下
chroot /mnt/sysimg

8.开启网络服务
nmcli c up ens32 #这里注意你的网络类型
vim /etc/resolv.conf #编辑DNS配置界面
#添加以下内容
nameserver 192.168.7.2 #你当前虚拟机所在网路的网关
ip a #观察是否成功启动网络
![]()


9.重装Linux内核,将GRUB,系统引导文件安装到/dev/sda硬盘下
yum reinstall -y kernel #重装Linux内核
grub2-install /dev/sda #将GRUB安装到硬盘MBR
ls /boot/grub2 #查看GRUB是否安装成功


10.输入两次exit退出
exit
exit

11.重新进入BOOT配置界面,将光盘驱动调到硬盘下面,接着保存退出,即可修复


二、系统管理器(systemd)
2.1基本概念
1.作用:一个初始化系统,用于引导用户空间并管理用户进程
2.特点:
1. 具备并行化能力
2.按需启动守护进程
3.使用Linux控制组跟踪进程
4.维护和自动挂载点
5.实现基于依赖的服务控制关系
6.在调程序时,每个切片都获得相同的CPU时间
2.2管理systemctl单元(systemctl)
1.查询所有单元的状态,验证系统启动情况
systemctl [--all]

2.仅查询服务单元状态
systemctl --type=service

3.查询服务的启用状态和开机自启状态
systemctl is-active 服务名 #检查这个服务是否启用
systemctl is-enabled 服务名 #检查这个服务是否开机自启

4.查看所有单元的启用和禁用设置
systemctl list-unit-files [--type=service] #没有选服务,即查询所有服务

2.3查看服务状态
作用:查看服务的状态和日志
systemctl status 服务名
loaded: 单元配置文件已处理
active (running): 运行一个或多个持续进程
active (exited): 成功完成一次性配置
active (waiting): 正在运行但等待某个事件
inactive: 未运行
enabled: 将在开机时启动
disabled: 不会在开机时启动

2.4启用和关闭服务
作用:打开,关闭或者重启服务
systemctl start 服务名 #开启服务
systemctl stop 服务名 #关闭服务
systemctl restart 服务名 #重启服务
systemctl reload 服务名 #重载服务,不必关闭服务就可修改服务配置

2.5开机自启服务
systemctl enable [--now] 服务名 #启动开机自启服务,加now表示立即启用服务
systemctl disable [--now] 服务名 #关闭开机自启服务

2.6屏蔽服务
作用:屏蔽一些可能存在冲突的服务,确保服务正常运行。
屏蔽服务与禁用服务的区别
屏蔽服务:既不能手动启动也不能自动启动。
禁用服务:不会在启动时或由其他单元文件自动启动,但可以手动启动。
systemctl mask 服务名
systemctl unmask 服务名 #关闭屏蔽设置

2.7单元文件
维护者文件:/usr/lib/systemd/system/
管理员文件:/etc/systemd/system/
非持久化日志保存地址:/run/systemd/
优先级:
/etc 下的单元文件将优先于 /usr 下的单元文件。
三.防火墙
3.1 基本概念
1.作用:负责监控和控制进出网络,阻止外部网络,访问系统,保护系统
2.分类:iptables 和 firewalld
iptables:底层、直接、静态的内核包过滤工具,直接操作内核的 Netfilter 框架。
firewalld:是 iptables 的上层、动态、服务化的工具,便于配对防火墙
相同:本质上都是对系统内核"netfilter"进行操作,他才是防火墙的核心,iptables和firewalld都是它的客户端代理
不同:
iptables 在 /etc/sysconfig/iptables 中储存配置(底层,操作繁琐)
firewalld 将配置储存在 /usr/lib/firewalld/ 和/etc/firewalld/ 中的各种 XML 文件里(上游,操作简单)
3.客户端到服务端系统的过程:
clicent ->iptables -> tcpwarap ->server ->filesystem ->selinux
3.2iptables防火墙
3.2.1基本原理
1.作用:通过iptables提供管理、修改、删除或者插入规则;用户和内核交互的工具就是iptables。它只是一个客户端代理,核心是对netfilter进行操作
2.工作原理分类(raw mangle nat filter 四个表)
主机防火墙:主要是用来防范单台主机的进出报文;-----filter表 INPUT链网络防火墙: 能够实现对进出本网络的所有主机报文加以防护----nat表raw表:用于对数据包进行连接跟踪前的处理。mangle表:用于修改数据包的IP头或其他信息。(不用)nat表:用于网络地址转换,如源地址转换和目标地址转换。filter表:用于执行包过滤,是最常用的表,决定数据包是否被接受、丢弃或拒绝。
3.iptables的缺点:
(1)防火墙虽然可以过滤互联网的数据包,但却无法过滤内部网络的数据包。因此若有人从内部网络攻击时, 防火墙没有作用。(2)电脑本身的操作系统亦可能因一些系统漏洞,使入侵者可以利用这些漏洞绕过防火墙过滤,从而入侵电 脑。(3)防火墙无法有效阻挡病毒攻击,尤其是隐藏在数据中的病毒。
4.iptables的工作流程
1. 防火墙是一层层过滤的。按照配置规则的顺序从上到下,从前到后进行过滤的。此时,第一条规则匹配成功。则不会继续匹配。
2. 如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。匹配到即停止继续匹配。
3. 如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
4. 防火墙的默认规则是对应链的所有的规则执行完以后才会执行的(。
3.2.2基本概念
(1)四个阶段:
1.iptables:Linux 内核中处理数据包过滤的网络框架,是整个防火墙的“地基”。
2.tables:按照不同的功能(如过滤、NAT、修改数据包)进行划分的规则集容器。
3.chains:在数据包处理流程中,不同阶段的钩子点,用于挂载具体的规则。
4.policy:实际执行的匹配条件和动作,是防火墙的最小执行单元。
如下比喻:
| iptables | tables | chains | policy |
| 小区 | 小区里的房子 | 房子里的衣柜 | 衣柜里衣服的拜访规则 |
(2)四个表:
1.raw表:设置数据包的连接跟踪标志,通常用于在连接跟踪生效前对数据包进行处理。
2.manager表:修改数据包的某些字段或标记数据包。
3.nat表:用于修改数据包的网络地址(源地址和目标地址)。
4.filter表:用来判断一个数据包是否可以通过,(常用)
5.顺序:raw ---> mangle --->nat --->filter
(3)五条链:
1.input链:处理进入本机的流量,决定了哪些数据包可以进入本机,哪些应该被拒绝或丢弃
2.output链:处理从本机发出的流量,控制本机如何向外部网络发送流量
3.forward链:处理经过本机转发的流量,控制流量是否可以从一个接口转发到另一个接口
4.prerouting链:处理进入本机的数据包,将外部的请求转发到内网的某个特定设备
5.postrouting链:处理从本机发出的数据包,将内网设备的源IP 地址修改为路由器的公共IP 地址
6.工作顺序:
1.PREROUTING:首先处理进入本机的数据包,用于目标地址转换(DNAT)。
2.INPUT:如果数据包的目标是本机,数据包会进入INPUT 链,决定是否允许本机接受该数据包。
3.FORWARD:如果数据包不属于本机(即目标是其他网络),数据包会进入FORWARD 链,决定是否允许转发。
4.POSTROUTING:在数据包离开本机之前,源地址转换(SNAT)会在此链中进行。
5.OUTPUT:如果数据包是从本机发出的,数据包会经过OUTPUT 链,决定是否允许本机向外发送该数据包。
(4)四表五链
在这四个表中,分别存放着不同数量的链
1.raw表:PREROUTING、OUTPUT,用于数据包跟踪,内核模块iptables_raw
2.managle表:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING,
用于路由标记。内核模块 iptables_mangle3.nat表:PREROUTING、INPUTOUTPUT、POSTROUTING,用于转换地址,保护内网,内核模块叫iptable_nat
4.filter表:INPUT、FORWARD、OUTPUT,用于根据规则来处理数据包,内核模块iptable_filter

3.2.3iptables使用前提
安装iptabales,并禁用防火墙和selinux,查看规则配置文件
yum install -y iptables-service #安装服务
systemctl disable --now firewalld #关闭firewalld服务,与iptables不兼容
setenforce 0 #关闭selinux
systemctl start iptables #启动服务
systemctl status iptables #查看服务状态
rpm -ql iptables | grep iptables #记录规则配置文件(/usr/sbin/iptables)
![]()



3.2.4iptables 格式及参数
iptables 动作 -[参数]
参数:
-L : 列出一个链或所有链中的规则信息
-n: 以数字形式显示地址、端口等信息
-v: 以更详细的方式显示规则信息
--line-numbers: 查看规则时,显示规则的序号(通过需要删除规则-D INPUT 1)
-F: 清空所有的规则(-X是清理自定义的链,用的少;-Z清零规则序号)
-D (指定序号): 删除链内指定序号(或内容)的一条规则
-P: 为指定的链设置默认规则
-A: 在链的末尾追加一条规则
-I (指定序号): 在链的开头(或指定序号)插入一条规则
-t: 指定表名,默认为filter表
-j:控制类型, 通过前面匹配到之后是丢弃还是保留数据包的处理方式: ACCEPT允许,REJECT拒绝,DROP丢弃:不会给用户返回任何的拒绝消息,不推荐使用。
动作:添规则还是删除规则
-p:匹配条件:数据包特征ip,端口等如果不写-t 默认使用filter表
3.2.5查看和清空规则
1.列出指定表名的规则
iptables -t 指定表名 -L #查看指定表名的规

2.列出所有链中的规则
iptables -L

3.以数字形式显示所有链中的ip,端口和控制类型
iptables -nL

3.2.6 添加和删除规则
1.最后一行添加规则
iptables -t 表名 -A 链名 -p 协议 -j 类型
![]()
2.指定表名链里的第几行添加规则默认为第一行
iptables -I 链名 (数字) -p 协议 -j 类型 -t 表名
![]()

3.删除指定表名的指定链表里的第几行规则
iptables -t 表名 -D 链名 数字

3.2.7保存规则和刷新规则
1.保存规则,将临时规则写进防火墙文件
iptables-save > etc/sysconfig/iptables
2.刷新规则,清空当前iptables设置的所有规则
iptables -F

3.2.7通用匹配规则
通用:可以独立使用Iptables,只能匹配四层及四层一下的协议
-p 协议:
tcp ---用的最多
udp
icmp ---ping的时候用的协议
1.禁止所有主机ping自己,(自己也不行)
iptables -A INPUT -p icmp -j REJECT


2.丢弃所有主机发来的包
iptables -I INPUT -p icmp -j DROP


3.2.8端口规则匹配
禁止主机通过指定端口号访问
端口:
--sport --源端口
--dport --目标端口
拒绝192 .168 .246 .201这台机器通过22端口到80端口的访问,包括22和80端口在内
iptables -I INPUT -s 192.168.7.135 -p tcp --dport 22:80(外机端口) -j REJECT


3.2.9IP规则匹配
禁止源192 .168 .246 .201主机ping进来
iptables -I INPUT -s 192.168.7.135(外机IP) -p icmp -j REJEC


3.2.10修改规则
允许外机使用原先禁止的80端口访问主机
iptables -R INPUT 1 -s 192.168.7.135(外机IP) -p tcp --dport 80(外机端口) -j ACCEPT


3.2.11扩展端口规则
显示匹配:如端口匹配,IP范围,MAC 地址,等特殊匹配
指定ip范围:
语法:
-m iprange --src-range
指定多端口范围:一次拒绝多个指定端口
语法:
-m multiport --sports #源端口
-m multiport --dports #目的端口
1.拒绝指定范围的主机IP访问
iptables -I INPUT -p tcp --dport 80 -m iprange --src-range 192.168.7.199-192.168.7.206 -j REJECT

2.指定多端口范围:一次拒绝多个指定端口
iptables -A INPUT -p tcp -m multiport --dports 22,80 -s 192.168.7.135 -j REJECT


3.拒绝指定网卡的访问,这个指令会断掉SSH,远程连接
iptables -I INPUT -i ens32(指定网卡) -j DROP


3.3firewalld防火墙
3.3.1基本概念
1.作用:提供了一个动态管理的防火墙, 用以支持网络 “ zones” , 以分配对一个网络及其相关链接和界面一定程度的信任。
2.区域划分:
Firewalld将网卡对应到不同的区域(zone)
通过不同的zone定义了不同的安全等级:
trusted :允许所有流量通过
home/internal:仅允许ssh数据通过
work:仅允许ssh , ipp-client dhcpv6-client 数据通过
public:默认区域,仅允许ssh , dhcpv6-client数据通过
external:仅允许ssh数据通过,通过该区域的数据将会伪装(SNAT / DNAT)
dmz:仅允许ssh数据通过
block:任何传入的网络数据包都将被阻止。拒绝所有流量
drop:丢弃所有流量,没有返回回应消息
3.3.2firewalld格式与参数
firewall-cmd -[参数]
参数:
--permanent :永久生效的配置参数、资源、端口以及服务等信息
1.域zone相关的命令
--get-default-zone :查询默认的区域名称--set-default-zone=<区域名称> :设置默认的区域--get-active-zones :显示当前正在使用的区域与网卡名称--get-zones :显示总共可用的区域2.services管理的命令--add-service=<服务名> --zone=<区域> :设置指定区域允许该服务的流量--remove-service=<服务名> --zone=<区域> :设置指定区域不再允许该服务的流量3.Port相关命令--add-port=<端口号/协议> --zone=<区域> : 设置指定区域允许该端口的流量--remove-port=<端口号/协议> --zone=<区域> :设置指定区域不再允许该端口的流量4.查看所有规则的命令--list-all --zone=<区域>: 显示指定区域的网卡配置参数、资源、端口以及服务等信息--reload :让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
3.3.3前提条件
关闭iptables服务,开启firewalld服务
systemctl stop iptables
systemctl start firewalld
3.3.4firewalld的具体使用
1.查看和设定指定区域
firewall-cmd --get-default-zone #查看当前的防火墙区域
firewall-cmd --set-default-zone=区域 #设定成指定区域


2.向指定区域添加或删除服务
firewall-cmd --permanent --add-service=服务名 --zone=区域 #向指定区域添加指定服务,重载
firewall-cmd --permanent --zone=区域 --remove-service=服务名 #移除指定区域内的服务
向public区域添加http服务


从public区域移除http服务

![]()
3.向pubic 区域添加服务,以添加端口的方式
firewall-cmd --permanent --add-port=端口号/网络协议 --zone=区域 #向区域添加指定服务
firewall-cmd --permanent --remove-port=端口号/网络协议 --zone=区域 #向区域移除指定服务
向public区域添加80端口:


移除public区域80端口:


四.APACHE服务
4.1基本概念
1.作用:Apache软件基金会的一个开放源码的网页服务器,快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
2.端口号:80(默认,可修改)
3.默认发布页:/var/www/html,在浏览器中输入本机IP可以看到默认发布文件内容
4.2安装并启用
1.安装软件
yum install httpd httpd-manual -y
2.启用并设置开机自启
systemctl enable --now httpd
#以下是加入防火墙的步骤,,也可以直接禁用防火墙
#firewall-cmd --permanent --add-service=http
#firewall-cmd --reload
4.3服务主配置文件
1.文件路径:/etc/httpd/conf/httpd.conf
2.文件内容:



4.4主机访问控制
1.作用:
2.编辑 /etc/httpd/conf/httpd.conf,重启服务
vim /etc/httpd/conf/htppd.conf #添加以下内容
systemctl restart httpd
![]()

![]()
2.创建用户密码文件,用于用户认证
htpasswd -cm /etc/httpd/conf/htpasswd admin
-c:创建一个加密文件;
-m:默认采用MD5算法对密码进行加密;
-D:删除指定的用户 如果密码文件已经存在,不要加-c参数,不然会覆盖源文件

3.编辑配置文件,配置用户认证
vim /etc/httpd/conf/httpd #编辑文件,修改之前的主机配置,添加以下信息
systemctl restart httpd

![]()
4.测试:这里的hello是/var/www/html目录下的index.html内容
echo hello > /var/www/html/index.html
curl http://192.168.7.135/admin/ -u admin:123456 #-u:用户:密码

4.5Apache虚拟主机
4.5.1基本概念
1.作用:在一个Apache服务器上可以配置多个虚拟主机,实现一个服务器提供多站点服务,访问同一个服务器上的不同目录。
2.共有三种配置方法:基于IP配置,基于域名配置,基于端口配置
4.5.2实现步骤
1.定义一个默认发布点的虚拟机,防止/var/www/html目录下的网页失效(可选)
vim /etc/httpd/conf.d/default.conf #后面的文件名可以自拟,格式为:文件名.conf
添加以下内容:

2.创建一个新的虚拟机:在当前目录下创建一个.conf文件,添加虚拟主机的配置信息,目录为本机下的/www/www.linux.org
vim /etc/httpd/conf.d/vhost.conf #同上,文件名可以自拟
添加以下内容:

3.创建用户认证,并修改文件上的需求用户(require user),修改成你创建的用户名
htpasswd -cm /etc/httpd/conf/htpasswd admin #最后面一句表示你要创建的用户名,接着回车输入你的密码
vim /etc/httpd/conf.d/vhost.conf #编辑这个文件,将你的用户名添加或更改上去
systemctl restart htppd #重启服务

4.创建用户目录,以你添加的虚拟主机定义的目录为准,也可以修改虚拟主机上的目录
mkdir -p /www/www.linux.org
touch /www/www.linux.org/index.html #在该目录下创建一个index.html文件,用于测试
echo www.linux.org > /www/www.linux.org/index.html #加一段文字,用于测试
![]()

5.编辑客户端的域名解析文件,将www.linux.org域名加入到服务端的IP解析后面
vim /etc/hosts
![]()

6.在客户端上访问服务端的www.linux.org目录,观察是否有信息输出
curl http://www.linux.org/ -u admin:123456 #-u后面改成之前你定义的用户和密码
![]()
五.增强型Linux(SELinux)
5.1基本概念
1.作用:控制服务安全,是在进行程序、文件等细部权限设置依据的一个核心模块,最大限度地减小系统中服务进程可访问的资源。
2.DAC与MAC
DAC:自主访问控制,它的主体是用户,在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。而root 用户不受任何管制,系统上任何资源都可以无限制地访问。
MAC:强制访问控制,它的主体是进程,在使用了 SELinux 的操作系统中,决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。即使是以 root 身份运行的服务进程,一般也只能访问到它所需要的资源
5.2SELinux的操作指令
1.查看当前系统的selinux状态
getenforece #查看当前的selinux状态
selinux的三种启动状态:
Enforcing(强制模式):SELinux 完全启用,所有违反策略的操作都会被阻止,并记录日志
Permissive(宽容模式):SELinux 启用但不阻止违规操作,只记录警告日志
Disable(禁用模式):SELinux 完全关闭,不执行任何安全策略

2.更改当前系统的selinux状态(注意这里无法调整成禁用模式):
setenforce 1 # 切换到强制模式
setenforce 0 # 切换到宽容模式
3.设置linux系统开机时selinux的状态
vim /etc/sysconfig/selinux #编辑selinux的系统文件
reboot #设置完成后,必须重启系统才能生效
![]()



5.3管理SELinux Context
1.查看当前文件的安全上下文
ls -Z 文件名
注意:执行此命令时SElinux必须打开,如果是disabled,则会看到问号
SELinux 的访问控制规则:
本质上是定义 “某个域(domain)” 对 “某个类型(type)” 是否拥有 “某种权限(如读、写、执行)”。
安全上下文主要分为三个字段: Identify : role : type 身份识别 : 角色 : 类型
身份识别(Identify):主要的身份识别常见有下面几种常见的类型:
unconfined_u: 不受限的用户,该文件来自于不受限的程序所产生的。基本是bash环境自己的文件。
system_u: 系统用户,大部分就是系统自己产生的文件。
角色:了解这个数据是属于程序、文件资源还是代表使用者。
object_r:代表的是文件或目录等文件资源
system_r:代表的是程序,不过一般使用者也会被指定成为system_r。
类型(Type): 一个主体程序能不能读取到这个文件资源,与类型字段有关。
主体(进程) 有一个 域(Domain)(进程的类型)。
客体(文件、目录、端口、网络接口等) 有一个 类型(Type)。

解释:system_u:object_r:admin_home_t:s0,其中system_u表示系统用户,object_r 表示文件客体,admin_home_t表示该文件属于管理员家目录类型,s0是默认的 MLS 安全级别。
2.查看所有系统文件和服务的安全上下文
semanage fcontext -l

3.永久更改
semanage fcontext -a -t selinux的安全上下文类型 "文件名(绝对路径)" #为指定文件添加一条新的规则
restorecon -vvFR 文件名 #刷新上下文
将/root/1.txt的SELinux类型从admin_home_t修改为http_sys_content_t :

更多推荐





所有评论(0)