1. 总结rocky 系统的启动流程,grub工作流程
加电自检(post)--->MBR引导--->GURB--->加载内核
1)加电自检(post):是BIOS功能的一个主要部分,负责完成对CPU、主板、内存等硬件系统的检测
2)加载启动加载器(bootloader):bootloader是引导加载程序,负责加载内核文件到内存中,并传递一些参数给内核
3)加载内核:探测可识别到的所有硬件设备--->加载硬件驱动程序--->以只读方式挂载根文件系统--->运行用户空间的第一个应用程序:/sbin/init
4)init初始化:执行 init 程序,并获取默认的运行信息---> init 程序执行 /etc/rc.d/rc.sysinit 文件,重新挂载根文件系统--->init 执行运行的各个批处理文件 (scripts)---> init 执行 /etc/rc.d/rc.local
5)执行 /bin/login 程序,等待用户登录
6)登录之后开始以 Shell 控制主机
grub工作流程:
grub1 阶段:存储在0磁道0扇区的前446字节空间内
grub1.5 阶段:1扇区到2047扇区,存储2阶段的文件系统驱动,保证2nd中的文件可读
grub2 阶段:解析/boot/grub.conf文件内容,加载内核文件和伪根文件系统驱动到内存
2. 总结awk工作原理,awk命令,选项,示例。
awk工作原理:awk是一个文本处理工具之一,以空格或tab键为默认分隔符,它和sed一样都是将文本逐行处理将最终得到的结果进行输出,唯一不同的是sed偏向于整行数据处理,而awk可以对整行,也可以将一行分成多个字段分别处理。
awk命令:
动作print:打印字符串
用于计算:
-F:指明输入时用到的字段分隔符,默认的分隔符是若干个连续空白符
例如:以:为分隔符,打印/etc/passwd第一行
变量:
-v:自定义变量
-FS 分别代表“列,分隔符”
-O:输出
例如:以“:”为分隔符,输出用户id。用户和用户id之间以“;”为分割。
BEGIN模式:仅在开始处理文件中的文本之前执行一次
RS:定义分隔符
以“;”为分隔符,输出文本
NF:字段数量
取磁盘占用情况最后一列
取磁盘占用情况倒数第二列
NR:记录行号
例:输出大于等于6,小于等于3的数
取奇、偶数行
打印/etc/passwd的b开头到s开头的行
3. 打印/etc/passwd的奇数行
4. 打印Linux系统的"IP地址,系统版本,CPU核心,内存大小"
5. 在文本的所有行前加序号
6. 统计某个文件夹下的文件占用的字节数。
wc -m即可统计
7. 总结内核设计流派及特点。
宏内核(monolithic kernel):又称单内核和强内核,Unix,Linux
把所有系统服务都放到内核里,所有功能集成于同一个程序,分层实现不同功能,系统庞大复杂,Linux其实在单内核内核实现了模块化,也就相当于吸收了微内核的优点
微内核(micro kernel):Windows,Solaris,HarmonyOS
简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护,每种功能使用一个单独子系统实现,将内核功能移到用户空间,性能差
8. 总结systemd服务配置文件
Systemd服务配置文件包括[Unit]、[Service]和[install]三个部分。
Unit 定义服务的描述和依赖关系。
[Service] 定义如何启动、重启服务的行为, 只有Service类型的Unit才有这个区块。
[install] 用于描述服务的安装信息,包括服务的启动级别、启动顺序等。
9. 总结system启动流程
1、BIOS/UEFI 引导:
计算机启动时,BIOS/UEFI 执行硬件自检,然后加载引导加载程序(如 GRUB)。
2、内核加载:
引导加载程序加载 Linux 内核到内存。
3、初始化 RAM 磁盘 (initrd):
如果需要,内核加载 initrd,它包含一些临时文件系统和驱动程序。
4、内核初始化:
内核进行初始化,包括设置硬件、内存管理、启动内核线程等。
5、用户空间初始化:
内核启动 systemd 作为第一个用户空间进程(PID 1)。
6、systemd 启动:
systemd 读取 /etc/systemd/system 和 /lib/systemd/system 目录下的配置文件。
systemd 开始执行 /etc/systemd/system/.wants/ 和 /lib/systemd/system/.wants/ 目录中列出的服务。
7、目标(Target)单元:
systemd 根据配置启动目标单元,例如 multi-user.target 或 graphical.target。
这些目标单元定义了一组服务和资源,它们共同定义了系统的运行级别。
8、服务启动:
systemd 根据依赖关系和服务单元文件启动必要的服务。
服务可以是简单的后台程序、网络服务、硬件驱动等。
9、套件初始化:
systemd 启动套件初始化服务,如 NetworkManager、sshd 等。
10、用户登录:
systemd 启动显示管理器(如果配置了图形目标)或终端服务(如果配置了多用户目标)。
用户可以登录系统。
11、启动完成:
所有必要的服务都已启动,系统完全运行。
10. 总结DNS域名三级结构
根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本
一级域名:Top Level Domain: tld
三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域 :com, edu, mil, gov, net, org, int,arpa
二级域名:wang.org
三级域名:study.wang.org
最多可达到127级域名
11. 总结DNS服务工作原理,涉及递归和迭代查询原理
当用户在浏览器中输入一个域名时,浏览器会向本地 DNS 服务器发送一个 DNS 查询请求。本地 DNS 服务器如果不知道该域名对应的 IP 地址,会向其他 DNS 服务器发送查询请求,直到找到该域名对应的 IP 地址为止。
比如:
1、当客户端主机决定访问 https://www.baidu.com 这个域名时,首先会查询本机缓存;
2、如果本机缓存没有解析记录,则会向其配置的DNS服务器发起解析请求;
3、DNS代理解析服务器会先查询其缓存是否有这条解析记录,如果有,则直接返回,如果没有,则继续向上解析;
4、DNS代理解析服务器会向根域名服务器发起解析请求,根域名服务器返回com域名的DNS地址;
5、DNS代理解析服务器继续向com域名服务器发起解析请求,com域名服务器返回 baidu.com 域名服务器的DNS地址;
6、DNS代理解析服务器继续向baidu.com域名服务器发起解析请求,baidu.com域名服务器返回 www.baidu.com 域名服务器的DNS地址;
7、DNS代理解析服务器继续向www.baidu.com的IP地址存入本机缓存,再读取缓存,将IP地址发送给客户端主机;
8、客户端主机通过IP地址顺利访问 https://www.baidu.com。
递归查询:当用户在浏览器中输入一个域名时,本地DNS会对此域名进行解析,如果有结果就直接返回用户,没有结果,本地DNS会向根域发起询问(每台计算机默认嵌入根域),根域返回相应结果,本地DNS拿到结果后,继续向下一个服务器发起查询请求,直到拿到用户输入的域名所对应的IP后才将最终结果返回给用户。
递归查询一般存在于用户和本地DNS服务器之间,用户输入域名后,本地DNS服务器会代表用户向其他DNS服务器发起递归查询,直到拿到最终结果才会返回给用户。
迭代查询:用户在浏览器输入域名,本地DNS查不到结果,询问根域,根域返回一个结果,本地DNS拿着这个结果去询问下一个DNS服务器,这种服务器之间结果的回应就是迭代查询;
迭代查询存在于DNS服务器之间,当一个DNS服务器收到查询请求时,它会返回下一个应该查询的DNS服务器的信息,这样发起查询的DNS服务器(或支持迭代查询的客户端)会不停地向下访问,直到拿到最终结果。
12. 实现私有DNS, 供本地网络主机作DNS递归查询。
DNS服务端:10.0.0.8 ---为客户端主机提供DNS解析服务
DNS客户端:10.0.0.7 ---客户端主机将DNS指向DNS服务端10.0.0.8
WEB服务器:10.0.0.158 ---提供web网站
一、DNS服务端配置:
1)bind安装及服务启动
#服务端安装bind
yum install bind bind-utils -y
#启动bind服务
systemctl enable --now named
#检查bind服务开启状态
systemctl status named
2)bind配置更改:
更改bind配置,使服务器本机dns解析服务能够对外提供
3)dns服务端网卡配置更改:
/etc/resolv.conf中查看DNS指向:
在/etc/sysconfig/network-scripts/ifcfg-eth0更改网卡中DNS配置,使DNS指向本机:
#重启服务,使服务生效
nmcli connection reload
#连接网卡
nmcli connection up eth0
查看配置是否生效
查看dns是否指向本地机
4)验证
查看端口监听是否在服务器的ip端口
dns是否指向dns服务器
二、客户端配置及验证
1)使客户端dns指向服务器:
重启网卡,查看dns指向:
验证:
13. 总结DNS服务器类型,解析答案,正反解析域,资源记录定义
(1)服务器类型
主域名服务器:负责维护一个区域的域名信息,是该区域的权威服务器,主要负责对顶级域名(诸如.com、.org 等)信息的管理。
权威域名服务器:用于存储和管理特定域名下全部主机记录。
本地域名服务器:这是组织内部用于解析内部域名的 DNS 服务器。
缓存域名服务器:其核心作用在于提升 DNS 查询效率,通过缓存已查询过的域名及其相应的 IP 地址来加快查询速度。
转发域名服务器:它会把用户的查询请求转发至其他 DNS 服务器,并将结果反馈给用户。
反向 DNS 服务器:用于将 IP 地址解析为域名,通常和正向 DNS 服务器配合使用,以确保网络通信的可靠性与安全性。
(2)解析答案
当用户浏览器访问一个域名的时候,本地dns服务器会首先查询本地是否有与此域名对应的ip以及此ip的缓存,如果有对应ip或缓存则返回相应ip给用户,如果没有则去请求根域服务器,根域服务器告知本地dns服务器相关顶级域,本地dns服务器再去访问顶级域服务器,这样层层递归访问直至拿到用户输入访问的域名对应的ip,将此ip返回给用户为止。
用户与本地dns服务器的交互为递归,本地dns对其他dns服务器的请求为迭代查询,当用户访问域名的时候,由本地dns迭代访问其他服务器,用户只需要等待最终结果即可。
(3)正反解析
正向解析:将域名解析成对应的ip地址
反向解析:将ip地址转换成与之相对应的域名
(4)资源记录
DNS 服务器使用资源记录(Resource Record,RR)来存储域名信息。
A 记录:将域名映射到 IPv4 地址。
AAAA 记录:将域名映射到 IPv6 地址。
CNAME 记录:将一个域名别名映射到另一个域名。
NS 记录:指定区域的名称服务器。
MX(Mail eXchange)资源交换记录:指向一个邮件服务器,在电子邮件系统发送邮件时,可依据收信人的地址后缀来定位邮件服务器
14. 实现DNS主从同步,实现DNS子域授权
DNS主服务器:10.0.0.8 ---------为客户端主机提供DNS解析
web服务器:10.0.0.158 ---------------提供web网站
DNS子域服务器:10.0.0.28 -------------DNS委派
DNS从服务器:10.0.0.9 --------------实现DNS服务冗余
客户端:10.0.0.10 --------------验证主从同步,子域授权
主服务器配置:
在/etc/name.conf文件中注释可知,该文件包含数据库文件
在文件中添加域名和数据库关系配置
vim /var/named/liudaya.org.zone #目录下写区域数据库文件(文件名需和named.rfc1912.zones保持一致)
$TTL 86400
@ IN SOA dns.liudaya.org. 2820301194@qq.com. ( 20250109 3H 10M 1D 1W )
NS DNS1
bj A bjdns ###子域委派---子域授权方法1
dns1 A 10.0.0.8 ####主DNS
www A 10.0.0.158 ####web
www.sh A 1.1.1.1 ####子域------子域授权方法2
##20250109---序列号
##3H---刷新时间
##10M---重试时间
##1D---过期时间
##1w--否定答案的TTL值
#保存退出文件后查看named文件下其他同类型文件情况,使新建的数据库文件与其他数据库文件权限,所属组/主保持一致
[root@rocky named]# ll
total 20
drwxrwx--- 2 named named 23 Jan 7 15:07 data
drwxrwx--- 2 named named 60 Jan 8 23:12 dynamic
-rw-r----- 1 root named 176 Jan 9 00:15 liudaya.org.zone
-rw-r----- 1 root named 2253 Apr 13 2022 named.ca
-rw-r----- 1 root named 152 Apr 13 2022 named.empty
-rw-r----- 1 root named 152 Apr 13 2022 named.localhost
-rw-r----- 1 root named 168 Apr 13 2022 named.loopback
drwxrwx--- 2 named named 6 Apr 13 2022 slaves
chown --reference=named.ca liudaya.org.zone #参考named.ca的文件属性情况,copy到新建文件中
二、从DNS服务器配置:
bind安装及配置
yum install bind -y #安装bind
#修改bind配置,使能够对外提供服务,注释掉监听53端口和允许查询配置即可
vim /etc/named.rfc1912.zones #添加域名和关系库配置:
#启动named服务:
systemctl enable --now named
验证关系库文件是否同步到指定路径
三、web服务器搭建:
apt install nginx -y #安装nginx
vim /var/www/html/index.html #编辑网站内容
<h1>happy NewYear </h1>
验证
四:客户端验证:
客户端dns指向配置:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.10
PREFIX=24
GATEWAY=10.0.0.2
DNS1=10.0.0.8 #DNS指向主DNS
DNS2=10.0.0.9 #DNS指向从DNS
ONBOOT=yes
##重新连接网卡使刚刚的配置生效
[root@slave network-scripts]# nmcli connection reload
[root@slave network-scripts]# nmcli connection up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
验证指定从服务器是否能解析dns
停掉主DNS,验证从DNS是否能解析
验证从DNS是否能解析:
子域委派DNS服务配置(步骤上述过程搭建主DNS时以配置,可参考。故本条不再展示过程):
---需安装bind和相关解析服务配置以及dns数据库配置
域名为bj.liudaya.org
客户端验证:
15. 总结openssh服务安全加固和总结openssh免密认证原理,及免认证实现过程。
1)安全加固
禁止root用户直接登陆
修改ssh登陆端口号
采用黑白名单限制特定的用户登陆
采用秘钥取代密码登陆
(2)免密认证原理
客户端生成公私钥,ssh-keygen命令生成ssh-copy-id命令或手动将客户端的公钥复制到服务器上的指定位置(通常是用户家目录下的.ssh/authorized_keys文件)。
(3)实现过程
客户端尝试通过SSH连接到服务器,并发送其用户名和公钥
服务器接收到客户端的连接请求后,在其~/.ssh/authorized_keys文件中查找与客户端发送的公钥相匹配的条目。如果找到匹配的公钥,服务器将继续下一步;否则,连接将被拒绝。
如果找到匹配的公钥,服务器会生成一个随机的字符串(通常称为“挑战”),并使用客户端提供的公钥进行加密后发送给客户端。
客户端接收到挑战后,使用其私钥对挑战进行解密。并将解密后的字符串(通常称为“响应”)发送回服务器。
服务器将收到的响应与之前的挑战进行对比,如果一致,则允许客户端免密码登录。
16. 总结对称加密和非对称加密的概念和常见的加密算法
对称加密:加密和解密使用同一个密钥
特性:
1. 加密、解密使用同一个密钥,效率高
2.将原始数据分割成固定大小的块,逐个进行加密
缺陷:
1.密钥过多
2.密钥分发
3.数据来源无法确认
常见对称加密算法:
DES: Data Encryption Standard, 56bits
3DES:
AES: Advanced (128,192,256bits)
Blowfish, Twofish
IDEA,RC6,CAST5
非对称加密:密钥是成对出现
公钥:publickey,公开给所有人,主要给别人加密使用
私钥:secret key,private key 自己留存,必须保证其私密性,用于自己加密签名·特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然功能
数据加密:适合加密较小数据,比如: 加密对称密钥
数字签名:主要在于让接收方确认发送方身份
缺点:
密钥长,算法复杂
加密解密效率低下
常见算法:
RSA:由 RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,可实现加密和数字签名
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准)
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学,比RSA加密算法使用更小的密钥提供相当的或更高等级的安全