第五周作业
1. SUDO,PAM配置规范说明
SUDO配置说明
配置文件:/etc/sudo.conf
授权规则配置文件:/etc/sudoers /etc/sudoers.d
配置文件中支持使用通配符 glob
? 任意单一字符
* 匹配任意长度字符
[wxc] 匹配其中一个字符
[!wxc] 除了这三个字符的其它字符
\x 转义
[[alpha]] 字母
sudoers授权规则格式:
用户 登入主机=(代表用户) 命令
user host=(runas) command
root ALL=(ALL) ALL
sudoers 别名
user和runas: username #uid %group_name %#gid host: ip或hostname network host_alias command: command name directory sudoedit Cmnd_Alias
别名的四种类型:
- User_Alias
- Runas_Alias
- Host_Alias
- Cmnd_Alias
安全编辑授权规则文件和语法检查工具
/usr/bin/visudo
visudo -c #检查语法
visudo -f /etc/sudoers.d/test #检查指定文件的语法
实战案例
User_Alias NETADMIN=netuser1,netuser2 Cmnd_Alias NETCMD=/usr/sbin/ip,/usr/sbin/ifconfig NETADMIN ALL=(root) NETCMD
PAM配置说明
- 包名:pam
- 模块文件目录:/lib64/security/*.so
- 特定模块相关的设置文件:/etc/security/
- 应用程序调用PAM模块的配置文件
- 主配置文件:/etc/pam.conf,默认不存在,一般不使用主配置
- 为每种应用模块提供一个专用的配置文件:/etc/pam.d/app_name
- 注意:如果/etc/pam.d存在,则/etc/pam.con将失效
- 使用者执行/usr/bin/passwd 程序,并输入密码
- password开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d里的与程序同名的文件
- 经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证
- 将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)
#专用配置文件/etc/pam.d/格式
type control module-path arguments
- auth 账号的认证和授权
- Account 账户的有效性,与账号管理相关的非认证类功能
- Password 用户修改密码时密码复杂度检查机制等功能
- Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等
- -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
- required:一票否决,表示该模块必须返回成功才能通过,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序,即为必要条件
- requisite:一票否决,表示该模块必须返回成功才能通过,但是一旦模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序,是一个必要条件
- sufficient:一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的required和requisite
- optional:表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略
- include:调用其他的配置文件中定义的配置信息
- 模块文件所在绝对路径
- 模块文件所在相对路径:/lib64/security目录下的模块可使用相对路径,如:pam_shells.so、pam_limits.so
- 有些模块有自己专有配置文件,在/etc/security/*.conf目录下
- debug:该模块应当用syslog()将调试信息写入到系统日志文件中
- no_warn:表明该模块不应把警告信息发送给应用程序
- use_first_pass:该模块不能提示用户输入密码,只能从前一个模块得到输入密码
- try_first_pass:该模块首先用前一个模块从用户得到密码,如果该密码验证不通过,再提示用户输入新密码
- use_mapped_pass:该模块不能提示用户输入密码,而使用映射过的密码
- expose_account:允许该模块显示用户的账号名等信息,一般只在安全的环境下使用,因为泄露用户名会对安全造成一定程度的威胁
注意:修改PAM配置文件将马上生效
建议:编辑PAM文件时,保持至少打开一个root会话,以防止root身份验证错误
常用的PAM模块
pam_nologin.so模块:如果/etc/nologin文件存在,将导致非root用户不能登录,当该用户登录时,会显示/etc/nologin文件内容,并拒绝登录
pam_limits.so模块:在用户级别实现对其可使用资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间
pam_google_authenticator模块:实现SSH登录的两次身份验证,先验证APP的数字码,再验证root用户密码,都通过才可以登录
2. chrony搭建私有ntp服务
服务器配置
[13:39:32 root@rocky8 data]#cat chrony.sh #!/bin/bash install_chrony(){ rpm -qa |grep chrony if [ $? eq 0];then printf “chrony已安装,请启动服务“ else yum install chrony -y fi #修改配置文件chrony.conf sed -i '/pool/c\server ntp.aliyun.com' /etc/chrony.conf sed -i '/#allow/a\allow 0.0.0.0/0' /etc/chrony.conf sed -i 's/#local/local/' /etc/chrony.conf systemctl restart chronyd } install_chrony
客户端配置
vim /etc/chrony.conf server 192.168.180.128 iburst systemctl restart chronyd chronyc sources -v .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current best, '+' = combined, '-' = not combined, | / 'x' = may be in error, '~' = too variable, '?' = unusable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 192.168.180.128 3 6 377 39 -207us[ -319us] +/- 24ms
3. 说明CDN原理
- 用户箱浏览器输入www.a.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器请求
- 网站的DNS域名解析器设置了CNAME,指向了www.a.tbcdn.com请求指向了CDN网络中的智能DNS负载均衡系统
- 智能负载均衡系统解析域名,把对用户响应速度最快的IP节点返回 给用户
- 用户向该IP节点(CDN服务器)发出请求
- 由于是第一次访问,CDN服务器会通过Cache 内部专用DNS解析得到此域名的原web站点IP,向原站点服务器发起请求,并在CDN服务器上缓存内容
- 请求结果发给用户
4. 搭建智能DNS,实现不同地域客户端解析到不同主机
利用三台主机,分别配置两块网卡
DNS主服务器和web服务器1:192.168.180.0/24 192.168.0.0/24
web服务器2,dns客户端:192.168.180.130
web服务器3:192.168.180.129,192.168.0.59
vim /etc/named.conf
acl beijingnet {
192.168.180.0/24;
};
acl shanghainet {
192.168.0.0/24;
};
acl othernet {
any;
};
#创建view
view beijingview {
match-clients {beijingnet;};
include "/etc/named.rfc1912.zones.bj";
};
view shanghaiview {
match-clients {shanghainet;};
include "/etc/named.rfc1912.zones.sh";
};
view otherview {
match-clients {othernet;};
include "/etc/named.rfc1912.zones.other";
};
include "/etc/named.root.key";
实现区域配置文件
vim /etc/named.rfc1912.zones.bj
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.bj";
};
vim named.rfc1912.zones.sh
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.sh";
};
vim named.rfc1912.zones.other
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.other";
};
chgrp named /etc/magedu.org.zone.*
创建区域数据库文件
vim /var/named/magedu.org.zone.bj
$TTL 1D
@ IN SOA master admin.magedu.org. (
100 ; serial
1H ; refresh
5M ; retry
1W ; expire
1D ) ; minimum
NS master
master A 192.168.180.128
websrv A 192.168.180.130
www CNAME websrv
vim magedu.org.zone.sh
$TTL 1D
@ IN SOA master admin.magedu.org. (
100 ; serial
1H ; refresh
5M ; retry
1W ; expire
1D ) ; minimum
NS master
master A 192.168.180.128
websrv A 192.168.0.59
www CNAME websrv
vim magedu.org.zone.other
$TTL 1D
@ IN SOA master admin.magedu.org. (
100 ; serial
1H ; refresh
5M ; retry
1W ; expire
1D ) ; minimum
NS master
master A 192.168.180.128
websrv A 127.0.0.1
www CNAME websrv
rndc reload
实现位于不同区域的三个web服务器
#在web1,192.168.0.226上实现other区域,配置dns指向是127.0.0.1 echo www.magedu.org in other > /var/www/html/index.html #在web2,192.168.180.130上实现beijing区域,配置dns指向是192.168.180.128 echo www.magedu.org in beijing > /var/www/html/index.html #在web3,192.168.0.59上实现shanghai区域,配置dns指向是192.168.0.226 echo www.magedu.org in shanghai> /var/www/html/index.html



5. 解释DNS解析流程
6. iptables 5表5链解释
- filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表
- nat:network address translation地址转换规则表
- mangle:修改数据标记位规则表
- raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
- security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现
内核中数据包的传输过程
- 当一个数据包进入网卡时,数据包首先进入PREOUTING链,内核根据数据包目的IP判断是否需要转送出去
- 如果数据包是进入本机的,数据包会沿着图向下移动,到达INPUT链,数据包到达INPUT链后,如何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后到达POSTROUTING链输出
- 如果数据包是要转出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出
7. iptables/firewalld/nftable 实现主机防火墙。5000-6000端口仅192.168.0.0/24网段内的主机访问

防火墙:192.168.180.128 192.168.0.226

防火墙规则:
vim /etc/sysctl.conf #添加转发
net.ipv4.ip_forward=1
sysctl -p
添加防火墙配置
iptables -A FORWARD -j REJECT
iptables -IFORWARD -s 192.168.0.0/24 -p tcp --dport 5000:6000 -j ACCEPT
iptables -IFORWARD -d 192.168.0.0/24 -p tcp --sport 5000:6000 -j ACCEPT
iptables -vnL --line-numbers

主机: 192.168.180.130 192.168.64.128

主机:192.168.0.59

验证ssh 5222端口

8. mysql的各发行版有哪些 ?
mysql :5.1-->5.5-->5.6-->5.7-->8.0
MariaDB:5.1-->5.5-->10.0-->10.1-->10.2-->10.3-->10.4-->10.5
9. mysql索引的作用
索引:是排序的快速查找的特殊数据结构,定义作为查找条件的字段上,又称为键key,索引通过存储引擎实现
优点:
- 索引可以降低服务需要扫描的数据量,减少了IO次数
- 索引可以帮助服务器避免排序和使用临时表
- 索引可以帮助将随机I/O转为排序I/O
缺点:占用额外空间,影响插入速度
10.mysql btree索引的原理

B+Tree索引:按顺序存储,每一个叶子节点到根节点的距离相同,左前缀索引,适合查询范围类的数据。
一颗B+树高度为2,那么这棵B+树存放总行记录数=根节点指针数*单个叶子记录的行数。先计算叶子节点,B+树中的单个叶子节点大小为16K,假设每一条目为1k,那么记录数即为16,然后计算非叶子节点中存放多少个指针,假设主键ID 为bigint 类型占用8个字节,指针大小在innodb中设置为6个字节,那么页大小(索引主键+指针大小),即16384/14=1170个指针,所以一棵高度为2的B+树能存放16*1170=18720条记录。根据这个原理可以算出高度为3的B+树可以存放16*1170“1170=21902400条记录
11. mysql安全加固?
- 设置数据库管理员root口令
- 禁止root远程登录
- 删除anonymous用户账号

浙公网安备 33010602011771号