一、总结rocky 系统的启动流程,grub工作流程。
rocky 系统的启动流程:
1. 通电 2.加载BIOS的硬件信息,运行POST加电自检 3. 启动引导加载器bootloader,引导程序,引导操作系统启动。 4.启动操作系统,加载kernel ,加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备 5. 核心执行init程序,并获取默认的运行信息 6. init程序执行/etc/rc.d/rc.sysinit文件,重新挂载根文件系统 7. 执启动核心的外挂模块 8. init执行运行的各个批处理文件(scripts) 9. init执行/etc/rc.d/rc.local 10. 执行/bin/login程序,等待用户登录 11. 登录之后开始以Shell控制主机
grub工作流程:
启动引导加载器bootloader,引导程序,引导操作系统启动。
stage1:存储在0磁道0扇区的前446字节空间内
stage1.5:1扇区到2047扇区,存储2阶段的文件系统驱动,保证2nd中 的文件可读
stage2:/boot/grub/grub.conf
二、总结awk工作原理,awk命令,选项,示例。
awk工作原理:
awk,报告生成器,格式化文本输出 1. 执行BEGIN{action;… }语句块中的语句。 2. 从文件或标准输入(stdin)读取一行,然后执行pattern{ action;… }语句块,它逐行扫描文件,从第 一行到最后一行重复这个过程,直到文件全部被读取完毕。 3. 当读至输入流末尾时,执行END{action;…}语句块。
BEGIN{}:仅在开始处理文件中的文本之前执行一次 END{}:仅在文本处理完成之后执行一次
awk -v FS=":" #设置字段分隔符为:,默认为空白字符
awk -v RS=";" '{print $0}' test.txt #用于分割指定文件的行,默认是换行符,设置用于分割指定文件的行为:
awk -v FS=":" '{print NF}' /etc/passwd #一条记录的字段数量,表示每行有几列
awk '{print NR,$0}' /etc/issue #行号
自定义变量:
用 -v 选项定义自定义变量,AWK中的自定义变量命名要区分大小写。
awk -v var1=abc -v VAR1=123 'BEGIN{print var1;print VAR1}'
模式匹配操作
~ #左边是否和右边匹配,包含关系
!~ #是否不匹配
#包含root的行
awk -F: '$0 ~ /root/{print $0}' /etc/passwd
awk '/root/' /etc/passwd
#以root开头的行
awk -F: '$0 ~ "^root"{print $0}' /etc/passwd
awk '/^root/' /etc/passwd
#不包含root的行
awk '$0 !~ /root/' /etc/passwd
#UID为0的行
awk -F: '$3==0' /etc/passwd
模式PATTERN
正则匹配
#非空行,非注释行
awk '!/^$|^#/{print $1}' /etc/fstab
三、打印/etc/passwd的奇数行
awk 'NR%2==1{print NR,$0}' /etc/passwd
四、打印Linux系统的"IP地址,系统版本,CPU核心,内存大小"
打印IP地址:ifconfig eth0 | awk -F" " '/ +inet +[0-9]/{print $2}'
打印系统版本:cat /etc/os-release | awk -v FS="=" '/^PRETTY/{print $2}'
CPU核心:lscpu | grep "^CPU(s):" | awk '{print $2}'
内存大小:free -h | awk '/^Mem/{print $2}'
五、在文本的所有行前加序号
awk '{print NR,$0}' /etc/passwd
六、统计某个文件夹下的文件占用的字节数。
ll | awk 'BEGIN{size=0}{size=size+$5}END{print "total_size="size}'
七、总结内核设计流派及特点。
Linux内核的设计流派分为两种主要类型:
宏内核:宏内核是最常见的内核设计流派,也是Linux内核的设计方式。特点是所有的核心功能和服务都作为一个整体运行在内核空间,高效且性能优越。
微内核:微内核设计流派将核心功能和服务尽量精简,将更多的功能移到用户空间,特点是内核只提供最基本的功能,其他功能如文件系统、设备驱动等都作为用户空间的可插拔模板存在。
八、总结systemd服务配置文件
#每个服务最主要的脚本文件目录,类似于之前的/etc/init.d/
/usr/lib/systemd/system/
#系统执行过程中所产生的服务脚本,比上面目录优先运行
/run/systemd/system/
#管理员建立的执行脚本,类似于/etc/rcN.d/Sxx的功能,比上面目录优先运行
/etc/systemd/system/
九、总结system启动流程
1. UEFi或BIOS初始化,运行POST开机自检 2. 选择启动设备 3. 引导装载程序, centos7是grub2,加载装载程序的配置文件: /etc/grub.d/, /etc/default/grub ,/boot/grub2/grub.cfg 4. 加载initramfs驱动模块(可以实现根文件系统的挂载) 5. 加载虚拟根中的内核 6. 虚拟根的内核初始化,Centos7使用systemd代替init,第一个进程 7. 执行initrd.target 所有单元,包括挂载 /etc/fstab 8. 从initramfs根文件系统切换到磁盘根目录 9. systemd执行默认target配置,配置文件/etc/systemd/system/default.target 10. systemd执行sysinit.target初始化系统及basic.target准备操作系统 11. systemd启动multi-user.target 下的本机与服务器服务 12. systemd执行multi-user.target 下的/etc/rc.d/rc.local 13. Systemd执行multi-user.target下的getty.target及登录服务 14. systemd执行graphical需要的服务
十、总结DNS域名三级结构
域名是分层次的,允许定义子域,子域名与上级域名之间用 . (点号)分隔。级别最低的域名写在最 左边,而级别最高的域名写在最右边。
一级域名:又称顶级域名,可分为三类,一类代表国家和地区(cn,hk,......),一类代表各类组织 (com,edu,......),以及反向域 二级域名:某个具体组织,单位,机构,商业公司或个人使用,需要向域名管理机构申请(付费)才能获得 使用权 二级域名以下的域名,由使用该域名的组织自行分配。
十一、总结DNS服务工作原理,涉及递归和迭代查询原理
1. 当客户端主机决定访问 https://www.magedu.com 这个域名时,首先会查询本机缓存; 2. 如果本机缓存没有解析记录,则会向其配置的DNS服务器发起解析请求; 3. DNS代理解析服务器会先查询其缓存是否有这条解析记录,如果有,则直接返回,如果没有,则继 续向上解析; 4. DNS代理解析服务器会向根域名服务器发起解析请求,根域名服务器返回 com 域名的DNS地址; 5. DNS代理解析服务器继续向 com 域名服务器发起解析请求,com 域名服务器返回 magedu.com 域名服务器DNS地址; 6. DNS代理解析服务器继续向 magedu.com 域名服务器发起解析请求,magedu.com 域名服务器返 回 www.magedu.com 主机的IP; 7. DNS代理解析服务器将 www.magedu.com 的IP地址存入本机缓存,再读取缓存,将 IP地址发送给 客户端主机; 8. 客户端主机通过IP地址顺利访问 https://www.magedu.com。
递归查询:是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地 没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器 本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户 机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。
迭代查询:是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地 址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
十二、实现私有DNS, 供本地网络主机作DNS递归查询。
安装bind软件,bind 是一款实现DNS服务的开放源码软件,目前Internet上半数以上的DNS服务器都是由Bind来实现的。
apt install -y bind9
启动服务:systemctl enable --now named.service
查看端口占用:ss -tunlp | grep named
在网卡中配置DNS服务,netplan apply 生效。查看/etc/resolv.conf,nslookup www.magedu.com;dig www.magedu.com
十三、总结DNS服务器类型,解析答案,正反解析域,资源记录定义。
DNS服务器里面有两个区域,即 正向查找区域 和 反向查找区域
正向解析:将域名解析成IP地址
反向解析:根据IP地址得到该IP地址指向的域名
操作系统规定,在进行DNS请求以前,先检查系统自己的Hosts文件中是否有这个域名和IP的映射关系。 如果有,则直接访问这个IP地址指定的网络位置,如果没有,再向已知的DNS服务器提出域名解析请 求。也就是说Hosts的IP解析优先级比DNS要高。
具体解析规则 /etc/bind/db.* ,该文件定义域名的具体解析规则,该文件有多条资源记录组成,每一行都是一条资源记录,在RFC文档 中,DNS解析记录被称为Resource Recode(资源记录),缩写为 RR
RR格式
NAME TTL CLASS TYPE VALUE
TYPE字段说明:
十四、实现DNS主从同步,实现DNS子域授权
配置DNS主从同步
在配置 DNS MASTER 主机上,vim /etc/bind/db.linux-magedu.com 添加从DNS配置,此配置是保证能推送数据到从节点。重载或者重启服务:rndc reload 或者 systemctl restart named 在配置 DNS SLAVE 主机上, 没有安装bind软件的话,需要先安装,apt update;apt install bind9 在/etc/apparmor.d/usr.sbin.named 文件,第19行后新增如下两行
/etc/bind/slaves/** rwk,
/etc/bind/slaves/ rwk,
重启服务:systemctl restart apparmor.service
在/etc/bind/named.conf.default-zones文件中,新增主从同步配置,然后重启。 验证:解析文件是否己经同步了 ls /etc/bind/slaves/ 验证:host www.linux-magedu.com;dig www.linux-magedu.com 分别关闭DNS MASTER 和 DNS SLAVE上的DNS服务,看另外一个DNS服务是否能正常使用。
主从DNS数据同步测试:
在DNS MASTER 主机上,/etc/bind/db.linux-magedu.com 文件中,增加一条db解析记录 并且把版本号升大,保存,然后重启服务,查看文件修改时间:ll /etc/bind/db.linux-magedu.com 查看 配置DNS SLAVE 的主机上,数据并没有更新:ls -lh //etc/bind/db.linux-magedu.com,如果文件修改时间了,主从DNS数据同步成功。
十五、总结openssh服务安全加固和总结openssh免密认证原理,及免认证实现过程。
openssh服务安全加固:
1、禁用不安全的加密算法:在sshd_config文件中禁用不安全的加密算法,如DES和RC4等,建议只使用AES和ChaCha20等安全加密算法。
2、限制用户登录:可以通过修改sshd_config文件中的AllowUsers或DenyUsers选项来限制哪些用户可以登录,也可以使用PAM模块限制用户登录。
3、使用强密码策略:可以通过修改sshd_config文件中的PasswordAuthentication选项来启用强密码策略,建议设置密码最小长度、密码复杂度等。
4、防止暴力破解:可以通过修改sshd_config文件中的MaxAuthTries选项来限制用户登录失败的次数,也可以使用Fail2ban等软件来防止暴力破解。
5、使用公钥认证:使用公钥认证可以减少密码泄露的风险,建议禁用密码认证并启用公钥认证。
6、修改SSH默认端口:将SSH默认端口修改为非常用端口,可以减少暴力破解的风险。
7、定期更新OpenSSH版本:及时更新OpenSSH版本可以修复安全漏洞和提升安全性能。
8、配置防火墙:使用防火墙可以限制SSH服务的访问范围,只允许必要的IP地址访问SSH服务端口。
openssh免密认证原理,及免认证实现过程:
openssh免密认证的原理是基于公钥交换原理,公钥交换的原理如下:
(1).客户端发起连接请求;
(2).服务端向客户端返回自己的公钥和一个会话ID;
(3).客户端生成自己的公钥和私钥;
(4).客户端用自己的公钥异或会话ID,计算出一个Res值,并用服务端的公钥加密;
(5).客户端发送加密后的值到服务端,服务端用自己的私钥解密,得到Res值;
(6).服务端用解密后的Res值异或会话ID,计算出客户端的公钥;
(7).最终,客户端和服务端各自有3个密钥,分别为自己的一对公私钥,以及对方的公钥,之后所有的通讯都会被加密。
openssh免密认证的实现过程:
(1).客户端生成一对密钥(ssh-keygen);
(2).客户端将生成的公钥通过ssh-copy-id拷贝到服务端;
(3).客户端再次发送一个连接请求(包括IP和用户名);
(4).服务端得到客户端的请求后,回到.ssh目录下的authorized_keys这个文件里查找对应的IP和用户名,如果查到了,就会随机生成一个字符串;
(5).服务端会把这个随机生成的字符串,通过客户端拷贝过来的公钥加密,然后发送给客户端;
(6).客户端收到服务端发送的消息后,利用自己的私钥进行解密,然后将解密后的字符串发送给服务端;
(7).服务端收到后客户端发送来的字符串后,跟之前的字符串进行对比,如果一致,就发送一个允许免密登录的响应给客户端。
十六、总结对称加密和非对称加密的概念和常见的加密算法
常用的加密算法包括:对称加密,非对称加密,单向加密。
对称加密:加密和解密使用同一个密钥
特性:
加密、解密使用同一个密钥,效率高;
将原始数据分割成固定大小的块,逐个进行加密
非对称加密:密钥是成对出现
公钥:public key,公开给所有人,主要给别人加密使用
私钥:secret key,private key 自己留存,必须保证其私密性,用于自已加密签名
特点:
用公钥加密数据,只能使用与之配对的私钥解密;反之亦然