第五周作业

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将失效
  PAM认证过程示例
  1. 使用者执行/usr/bin/passwd 程序,并输入密码
  2. password开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d里的与程序同名的文件
  3. 经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证
  4. 将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)
  PAM配置文件格式说明
#专用配置文件/etc/pam.d/格式
type control module-path arguments
  type:模块类型,即功能
  • auth 账号的认证和授权
  • Account 账户的有效性,与账号管理相关的非认证类功能
  • Password 用户修改密码时密码复杂度检查机制等功能
  • Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等
  • -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
  control:PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关键词实现
  • required:一票否决,表示该模块必须返回成功才能通过,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序,即为必要条件
  • requisite:一票否决,表示该模块必须返回成功才能通过,但是一旦模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序,是一个必要条件
  • sufficient:一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的required和requisite
  • optional:表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略
  • include:调用其他的配置文件中定义的配置信息
  module-path:用来指明本模块对应程序文件的路径名
  • 模块文件所在绝对路径
  • 模块文件所在相对路径:/lib64/security目录下的模块可使用相对路径,如:pam_shells.so、pam_limits.so
  • 有些模块有自己专有配置文件,在/etc/security/*.conf目录下
  arguments:用来传递给该模块的参数

  •  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原理

  1. 用户箱浏览器输入www.a.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器请求
  2. 网站的DNS域名解析器设置了CNAME,指向了www.a.tbcdn.com请求指向了CDN网络中的智能DNS负载均衡系统
  3. 智能负载均衡系统解析域名,把对用户响应速度最快的IP节点返回 给用户
  4. 用户向该IP节点(CDN服务器)发出请求
  5. 由于是第一次访问,CDN服务器会通过Cache 内部专用DNS解析得到此域名的原web站点IP,向原站点服务器发起请求,并在CDN服务器上缓存内容
  6. 请求结果发给用户

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

  在主DNS服务端配置view
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解析流程

  client--》host文件--》client dns service local cache --》DNS server(递归)--》DNS server cache--》DNS iteration(迭代)--》根DNS--》顶级域名DNS--》二级域名DNS

6. iptables 5表5链解释

  五个内置链chain:
  INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
  五个表table:
  • filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表
  • nat:network address translation地址转换规则表
  • mangle:修改数据标记位规则表
  • raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
  • security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现
  优先级由高到低的顺序为:
  security-->raw-->mangle-->nat-->filter

  内核中数据包的传输过程

  • 当一个数据包进入网卡时,数据包首先进入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用户账号

 

posted @ 2023-10-16 16:11  探索提升  阅读(30)  评论(0)    收藏  举报