2.总结sudo配置文件格式,总结相关示例?
答:sudo默认的配置文件是/etc/sudoers,sudo的授权规则格式如下:
user host=(runas) command
其中,user==》运行命令的用户身份;host==》通过哪些主机;(runas)==》以哪个用户的身份;
command==》运行哪些命令;
范例==》student ALL=(root) /sbin/pidof, /sbin/ifconfig
即 student用户以root的身份在所有主机上运行后面的这2个命令;
9.总结DNS服务器类型,解析答案,正反解析域,资源记录定义?
答:DNS服务器类型==》主DNS服务器,从DNS服务器和缓存DNS服务器;
解析答案:
肯定答案:存在对应的查询结果;
否定答案:请求的条目不存在等原因导致无法返回结果;
权威答案:直接由存有此查询结果的DNS服务器(权威服务器)返回的答案;
非权威答案:由其他非权威DNS服务器返回的查询答案;
正向解析域:负责本地域名的正向解析库,即FQDN------------>IP;
反向解析域:负责本地域名的反向解析库,即IP------------>FQDN;
各种资源记录:
SOA记录==》name:当前区域的名字,例如“magedu.org”;
value:有多部分组成;
(1)当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字,只是注释功能,可以不需要配置对应的NS记录和A记录;
(2).当前区域管理员的邮箱地址,但地址中不能使用@符号,一般使用.替换,例如:admin.magedu.org;
(3).主从服务区域传输相关定义以及否定的答案的统一的TTL;
NS记录==》name:当前区域的名字;
value:当前区域的某DNS服务器的名字,例如:ns.magedu.org
MX记录==》name:当前区域的名字;
value:当前区域的某邮件服务器(SMTP服务器)的主机名;
A记录==》name:某主机的FQDN;
value:域名对应的主机IP地址;
避免用户写错名称时给错误答案,可以通过泛域名解析进行解析至某特定地址;
如果有和DNS的IP相同的多个同名的A记录,优先返回DNS的本机IP;
AAAA记录==》name:某主机的FQDN;
value:域名对应的主机的IPV6地址;
PTR记录==》name:IP,有特定格式,把IP地址反过来写,例如 1.2.3.4要写成4.3.2.1;原本有特定后缀:in-addr.arpa., 所以完整写法为4.3.2.1.in-addr.arpa.
value:FQDN;
CNAME别名记录==》name:别名的FQDN;
value:真正名字的FQDN;
7.总结DNS服务工作原理,涉及递归和迭代查询原理?
答:递归查询==》是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果;如果直接收到用户请求的DNS服务器,其本地没有存储与之对应的信息,则该服务器需要询问其他DNS服务器,并将返回的查询结果提交给用户;
一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,如果DNS服务器本身不能解析,则其会向另外的DNS服务器发出查询请求,得到最终的肯定或者否定的结果后,转交给客户机;此查询过程中源和目标保持不变,为了查询结果只需要发起一次查询即可。
递归算法过程:客户机向本地DNS发起域名查询==》本地DNS不知道域名对应的IP==》但它知道其他DNS服务器知道这个记录==》它代替客户机去查找==》最后返回查询结果。
迭代查询==》是指DNS服务器收到用户发起的请求时,并不直接回复查询结果,而是告诉另外一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回最终的查询结果;
一般情况下,本地的DNS服务器向其他DNS服务器的查询属于迭代查询,如果对方不能返回权威的结果,则它会向下一个DNS服务器(依据前一个DNS服务器返回的查询结果)再一次发起进行查询,以此类推,直到返回查询结果为止;此查询过程中,源不变,但是查询的目标不断变化,为查询结果一般需要发起多次查询。
迭代算法过程:客户机向本地DNS发起域名查询==》本地DNS不知道域名对应的IP==》但它知道其他DNS服务器知道这个记录,并让客户机自己去找对应的DNS服务器==》客户机根据这个反馈情况自己去找,直到真正找到。
10.实现DNS主从同步?
主服务器的配置:
主服务器系统是rocky8.8, 最小化安装;
用命令yum -y install bind bind-utils 安装bind的服务器和客户端;
主服务器的bind版本:
主服务器bind配置文件的修改==》在/etc/named.conf文件修改:
主服务器的数据文件的修改==》1.在/etc/named.rfc1912.zones文件中的修改:
在/var/named/magedu.org.zone中修改数据文件:
可以利用上面截图中的命令对配置文件的修改和数据解析文件的修改做检查;
如果没有问题,用命令systemctl reload named重新加载bind服务;
从服务器的系统是centos7.9, 最小化安装;
从服务器的bind版本:
从服务器不需要配置数据解析文件,因为这个是从主服务器被动推送或者主动拉取的;
只许修改配置文件即可。
从服务器修改的/etc/named.conf配置文件:
从服务器修改的/var/named/magedu.org.zone文件:
验证主从同步:
(1)主服务器 主动向从服务器推送数据:
主服务器修改前的数据解析文件:
修改前的从服务器数据解析文件的修改时间记录:
修改数据解析文件之前,客户端用dig命令测试dns解析的情况:
主服务器修改完后,重新加载服务。
从服务器同步后的时间更新,证明从服务器已同步到了数据:
将主服务器的bind服务暂停,再用客户端进行测试:
上面截图证明==》客户端是从 从服务器10.0.0.88上进行域名解析的!
验证从服务器 主动从 主服务器拉取数据:
从服务器暂停bind服务:
暂停后,从服务器的dns数据解析文件的修改时间:
主服务器再次修改dns数据解析文件并重启服务:
主服务器修改数据解析文件的时间:
主服务器修改之后,重启服务,从服务器也重启服务,发现从服务器并没有在经过3分钟左右的时间主动拉取数据文件进行同步,经过好几次的启停主服务器的服务后,发现最终从服务器同步了数据:
此时,再把主服务器的bind停止,利用客户端的dig命令进行测试:
经过上图验证,证明从服务器主动拉取了数据,但是中间已经过了同步的时间间隔,而没有同步数据,这个情况没搞明白!!
11.实现dns子域授权?
将主服务器的dns数据解析文件修改为如下:
修改子域dns服务器的/etc/named.rfc1912.zones这个文件如下:
修改子域dns服务器的数据库解析文件如下:
修改完成之后,分别重新加载主服务器和子域dns服务器的bind服务;
在客户端用dig命令测试子域访问正常,如下图所示:
修改该主机的/etc/named.conf文件如下:
在/etc/named.conf文件中添加view, 将acl规则和2个区域dns解析数据库文件映射起来:
13.总结防火墙分类?
答:按保护范围划分:
(1).主机防火墙:服务范围为当前一台主机;
(2).网络防火墙:服务范围为防火墙一侧的局域网;
按实现方式划分:
(1).硬件防火墙:在专用硬件级别实现部分功能的防火墙;
(2).软件防火墙:运行于通用硬件平台之上的防火墙应用软件;
按网路协议划分:
(1).网络层防火墙:OSI模型中的下四层,又称为包过滤防火墙;
(2).应用层防火墙:proxy代理网关,OSI模型中的第七层;
14.总结iptables 5表5链,基本使用,扩展模块?
答:iptables的五个表:filter, nat, mangle, raw, security;
filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,这是iptables的默认表;
nat:即network address translation地址转换规则表;
mangle:修改数据标记位规则表;
raw:关闭启用的连接跟踪机制,加快封包穿越防火墙的速度;
security:用于强制访问控制(MAC)网络规则,由linux安全模块Selinux实现;
这5个表的优先级由高到低的顺序依次是:
security==>raw==>mangle==>nat==>filter
五个内置链:
INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTIN
iptables 命令格式详解:
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型及动作]
(1) -t 表名:指定表==》raw, mangle, nat, [filter]默认;
(2)管理选项之链管理类:
-N:new,自定义一条新的规则链;
-E:重命名自定义链,引用计数不为0的自定义链不能被重命名,也不能被删除;
-X:delete,删除自定义的空的规则链;
-P:Policy,设置默认策略,对filter表中的链而言,其默认策略有:ACCEPT, DROP;
查看类:
-L:list,列出指定链上的所有规则,本选项必须置后;
-n:numberic,以数字格式显示地址和端口号;
-v:verbose,详细信息;
-vv:更详细的信息;
--line-numbers:显示规则的序号;
-S:selected,以iptables-save命令格式显示链上的规则;
规则管理类:
-A:append,追加;
-I:insert,插入,要指明插入到的规则编号,默认为第一条;
-D:delete,删除
1 指明规则序号;
2 指明规则本身;
-R:replace,替换指定链上的指定规则编号;
-F:flush,清空指定的规则链;
链名:PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING;
匹配条件:
基本:通用的;
扩展:需要加载模块;
处理动作:
ACCEPT:允许数据包通过;
DROP:直接丢弃数据包,不给出任何回应信息;
REJECT:拒绝数据包通过,会给数据发送端一个响应信息;
基本匹配条件:无需加载模块,由iptables/netfilter自行提供;
[!] -s, --source address:源IP地址或者不连续的IP地址;
[!] -d, --destination address: 目标IP地址或者不连续的IP地址;
[!] -p, --protocol protocol:指定的协议;
[!] -i,--in-intetrface name:报文流入的接口,只能应用于数据报文流入的环节,只应用于INPUT,
FORWARD, PREROUTING链;
[!] -o,--out-intetrface name:报文流出的接口,只能应用于数据报文流出的环节,只应用于FORWRD, OUTPUT, POSTROUTING链;
扩展匹配条件:需要加载扩展模块(/usr/lib64/xtables/*.so),方可生效;
扩展匹配的条件==》隐式扩展和显式扩展;
隐式扩展:iptables在使用-p选项指明特定的协议时,无需再用-m选项指明扩展模块的扩展机制,不需要手动加载扩展模块;
tcp协议的扩展选项:
[!] --source-port, --sport port:匹配报文源端口,可为连续端口范围;
[!] --destination-port, --dport port:匹配报文目标端口,可为连续端口范围;
[!] --tcp-flags mask comp:
mask:需要检查的标志位列表,用,分割, 例如 SYN, ACK, FIN, RST
comp:在mask列表中必须为1的标志位列表,无指定则必须为0,用,分割tcp协议的扩展选项;
范例:
--tcp-flags SYN, ACK, FIN, RST SYN 表示要检查的标志位为SYN, ACK, FIN, RST 四个,其中SYN必须为1,余下的必须为0,第一次握手;
--tcp-flags SYN, ACK, FIN, RST SYN, ACK 第二次握手;
icmp协议的扩展选项:
[!] --icmp-type echo-request:icmp请求;
[!] --icmp-type echo-reply:icmp应答;
显式扩展:
显式扩展即必须使用 -m选项指明要调用的扩展模块名称,需要手动加载模块;
multiport扩展:
以离散方式定义多端口匹配,最多指定15个端口;
[!] --source-ports, --sports port:指定多个源端口;
[!] --destination-ports, --dports port:指定多个目标端口;
iprange扩展:
指明连续的IP地址范围:
[!] --src-range from [-to]:源IP地址范围;
[!] --dst-range from [-to]:目标IP地址范围;
mac扩展:
mac模块可以指明源MAC地址,适用于PREROUTING, FORWARD, INPUT链;
[!] --mac-source XX:XX:XX:XX:XX:XX
string扩展:
对报文中的应用层数据做字符串模式匹配检测:
--from offset 开始偏移;
--to offset 结束偏移;
[!] --string pattern:要检测的字符串模式;
[!] --hex-string pattern:要检测的字符串模式,16进制格式;
connlimit扩展:
根据客户端IP地址做并发连接数量匹配,可防止Denial of Service拒绝服务攻击;
--connlimit-upto N:连接的数量小于等于N时匹配;
--connlimit-above N:连接的数量大于N时匹配;
limit扩展:
基于收发报文的速率做匹配,令牌桶过滤器;
--limit-burst number :前多少个包不限制;
state扩展:
state扩展模块,可以根据连接追踪机制去检查连接的状态;
conntrack机制:追踪本机上的请求和响应之间的关系;
状态类型:
NEW:新发出请求,连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求;
ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态;
RELATED:新发起的但与已有连接相关联的连接;
INVALID:无效的连接,例如flag标记不正确;
UNTRACKED:未进行追踪的连接,例如 raw表中关闭追踪;
15.总结iptables规则优化实践,规则保存和恢复?
答:
iptables的规则优化实践:
(1).安全放行所有入站和出站的状态为ESTABLISHED的状态连接,建议放在第一条,效率更高;
(2).谨慎放行入站的新请求;
(3).有特殊目的限制访问功能,要在放行规则之前加以拒绝;
(4).同类规则,比如访问同一应用,匹配范围小的放在前面,用于特殊处理;
(5).不同类的规则,比如访问不同的应用,一个是http,另外一个是mysql,匹配范围大的放在前面,效率更高;
(6).应该将那些可由一条规则能够描述的多个规则合并为一条,减少规则数量,提高检查效率;
(7).设置默认策略,建议白名单(只放行特定连接):
iptables -P,这个不建议,容易出现自杀现象;
规则的最后定义规则作为默认策略,推荐使用,放在最后一条。
iptables的规则保存:使用iptables命令定义的规则,手动删除之前,其生效期限为内核的存活期限;
持久保存规则:
在Centos7和8中==》iptables-save > 要保存的路径文件;
在Centos6中==》将规则覆盖保存到 /etc/sysconfig/iptables文件中;然后再用命令service iptables save;
iptables的恢复规则:
在Centos7和8中,重新载入预存规则文件的规则:
iptables-restore < 保存iptables规则的文件
在Centos6中==》会自动从/etc/sysconfig/iptables文件中重新载入规则==》service iptables restart;
开机自动重载规则:
(1).用脚本保存各个iptables命令,让此脚本开机后自动运行:
在/etc/rc.d/rc.local文件中添加脚本路径
(2).用规则文件保存各个iptables命令规则,开机时自动载入此规则文件中的规则:
在/etc/rc.d/rc.local文件中添加==》iptables-restore < 存放iptables规则的文件
16.总结NAT转换原理,DNAT/SNAT原理,并自行设计架构实现DNAT/SNAT?
答:
NAT:即network address translation,支持POSTROUTING,INPUT,PREROUTING,OUTPUT四个链;
请求报文:修改源/目标IP,由定义如何修改;
响应报文:修改源/目标IP,根据跟踪机制实现;
SNAT:source NAT,支持POSTROUTING,INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP;
DNAT:destination NAT,支持PREROUTING,OUTPUT,让本地网络中的主机上的某服务开放给外部网络访问,但隐藏真实IP,请求报文:修改目标IP;
SNAT的实现:
centos7.9 主机当作内网客户端,ip地址设置为10.0.0.88/24;
rocky8主机当作防火墙, 其上添加2块网卡,eth0设置成NAT模式,IP地址为10.0.0.66/24;
eth1设置成仅主机模式,IP地址为192.168.66.11/24;
ubuntu2004主机当作外部因特网服务器,其eth0设置成仅主机模式,IP地址为192.168.66.36/24;
17.使用REDIRECT将90端口重定向到80,并可以访问到80端口的服务?
18.firewalld常见区域总结?
答:
trusted:允许所有流量;
home:拒绝除和传出流量相关的,以及ssh, mdsn, ipp-client, samba-client, dhcpv6-client预定义服务之外的其它所有传入流量;
internal:和home相同;
work:拒绝除和传出流量相关的,以及ssh, ipp-client, dhcpv6-client预定义服务之外的其它所有传入流量;
public:拒绝除和传出流量相关的,以及ssh, dhcpv6-client预定义服务之外的其它所有传入流量;
新加的网卡默认属于public zone;
external:拒绝除和传出流量相关的,以及ssh预定义服务之外的其它所有传入流量;属于external zone的传出ipv4流量的源地址将被伪装为传出网卡的地址;
dmz:拒绝除和传出流量相关的,以及ssh预定义服务之外的其它所有传入流量;
block:拒绝除和传出流量相关的所有传入流量;
drop:拒绝除和传出流量相关的所有传入流量(甚至不以ICMP错误进行回应);
20.总结关系型数据库相关概念,关系,行,列,主键,唯一键,域?
答:
关系:关系就是二维表,其中,表中的行,列次序并不重要;
行row:表中的每一行,又称为一条记录record;
列column:表中的每一列,称为属性,字段,域字段;
主键Primary key:PK,一个或者多个字段的组合,用于唯一确定一个记录的字段,一张表只有一个主键,主键字段不能为空NULL;
唯一键Unique key:一个或者多个字段的组合,用于唯一确定一个记录的字段,一张表可以有多个UK,而且UK字段可以为NULL;
域domain:属性的取值范围,例如:性别只能是‘男’和‘女’这两个值,人类的年龄只能是0~~150之间;
21.总结关联类型,1对1,1对多,多对多关系?
答:
1对1联系(1:1):在表A或者表B中创建一个字段,存储另外一个表的主键,例如:学生表中有个字段叫班级号,表示这个学生属于哪一个班级的;而班级表中的字段--班级号就是该表的主键,一个学生只能对应一个班级,不能对应多个班级;
1对多联系(1:n):例如 部门表和员工表,一个部门对应多个员工;
多对多联系(m:n):例如 学生表和课程表,一个学生可以有多个课程,而一个课程也可以对应多个学生;
22.总结mysql设计范式?
答:
第一范式==>1NF:要求表中的每一列都是不可分割的基本数据项,不能重复,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,确保每一列的原子性;
第二范式==>2NF:第二范式必须先满足第一范式,属性完全依赖于主键,要求表中的每个行必须可以被唯一确认,通常为表加上每行的唯一标识主键PK,非PK的字段需要与整个PK有直接相关性,即非PK的字段不能依赖于部分主键;
第三范式==>3NF:满足第三范式必须先满足第二范式属性,非主键属性不依赖于其他非主键属性,第三范式要求一个数据表中不包含已在其他表中已包含的非主关键字信息,非PK的字段间不能有从属关系。