1

SRE-第五周作业

 9 months ago
source link: https://blog.51cto.com/u_15641727/7111261
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

SRE-第五周作业

精选 原创

hchjq 2023-08-16 17:18:43 ©著作权

文章标签 MySQL 域名服务器 配置文件 文章分类 云平台 云计算 阅读数203

一、SUDO,PAM配置规范说明
(一)SUDO配置规范说明

1.1sudo权限的配置

sudo(superuser do)是 Linux 系统中一种很常用的权限管理机制,允许非 root 用户以特定的身份执行特定的命令。sudo 命令通过 /etc/sudoers 配置文件实现。

它允许已验证的用户以其他用户的身份来运行命令。其他用户可以是普通用户或者超级用户。然而,大部分时候我们用它来提权运行命令,以替代直接使用 root 用户的操作。sudo 命令与安全策略配合使用,安全策略可以通过文件 /etc/sudoers 来配置。其安全策略具有高度可拓展性,支持插件扩展。默认情况下 /etc/sudoers 是不能被任何人直接编辑的,因为它的权限是 440,虽然也可以对其赋予写权限后再编辑,可以使用 visudo 命令编辑该文件。

1.2.sudo的工作流程:

  • sudo 会读取和解析 /etc/sudoers 文件,查找调用命令的用户及其权限。
  • 然后提示调用该命令的用户输入密码,
  • 或者也可以通过 NOPASSWD 标志来跳过密码验证。
    之后,sudo 创建一个子进程,调用 setuid() 来切换到目标用户。
    最后,它会在上述子进程中执行参数给定的 shell 或命令。

1.3.理解 sudo 命令授权配置

  • USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDS
  • USER/GROUP: 表示需要被授权的用户或者组;如果是组则需要以 % 开头
  • HOST: 表示允许从哪些主机登录的用户运行 sudo 命令;ALL 表示允许从任何终端、机器访问
  • (USER[:GROUP]): 表示使用 sudo 可切换的用户或者组,组可以不指定;ALL 表示可以切换到系统的所有用户
  • NOPASSWD: 如果指定,则该用户或组使用 sudo 时不必输入密码
  • COMMANDS: 表示运行指定的命令;ALL 表示允许执行所有命令
# 允许 sudo 组执行所有命令
%sudo ALL=(ALL:ALL) ALL
 
# 允许用户执行所有命令,且无需输入密码
escape ALL =(ALL) NOPASSWD: ALL
 
# 仅允许用户执行 echo, ls 命令
escape ALL =(ALL) NOPASSWD: /bin/echo /bin/ls
 
# 运行本机的用户执行关机命令
escape localhost=/sbin/shutdown -h now
 
# 允许 users 用户组中的用户像 root 用户一样使用 mount、unmount、chrom 命令
%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
(二)PAM配置规范说明

1.1PAM模块的含义:
  PAM是一套应用程序接口,提供了一连串的验证机制,只要使用者将验证阶段的需求告知PAM后,
  PAM就能够汇报使用者验证的结果(成功或者失败)

1.2PAM被调用的流程:
  1.使用者执行/usr/bin/passwd时,并输入密码
  2.passwd调用PAM模块进行验证
  3.PAM模块会到/etc/pam.d/中找与程序passwd同名的配置文件
  4.依据/etc/pam.d/passwd内的设置,引用相关的PAM模块逐步进行验证分析
  5.将验证结果回传给passwd这只程序
  6.passwd会根据PAM回传的结果决定下一步操作
1.3常用模块介绍:
/etc/pam.d/login 登陆
/etc/pam.d/system-auth

SRE-第五周作业_MySQL
1. auth 组件:认证接口,要求并验证密码。即使第一个模块失败,用来防止用户知道在哪个过程失败,主要目的是防止攻击。
2. account组件:检测是否允许访问。检测账户是否过期或则在末端时间内能否登陆。
3. password组件:设置并验证密码
4. session组件:配置和管理用户sesison。
5. required:该模块必须success才能进行继续。即使失败用户也不会立刻获知,直到所有相关模块完成。
6. requisite:该模块必须success才能使认证继续进行。
7. suffifient:如果失败则忽略。
8. optinal:忽略结果,不管是否失败。

1.4PAM模块主要配置文件说明:

/etc/pam.d/*:每个程序个别的 PAM 配置文件;
/lib64/security/*:PAM 模块文件的实际放置目录;
/etc/security/*:其他 PAM 环境的配置文件;
/usr/share/doc/pam-*/:详细的 PAM 说明文档.

1.5PAM模块里设定普通用户或组能打开的最多文件数量:

vim limits.conf:

* soft nofile 655350

hard nofile 655350
设置限制
  ulimit -a: 查看所有限制信息
  ulimit -n: 设置最大可以打开的文件数量

1.6PAM日志信息存放位置:

/var/log/secure
/var/log/messages
如果发生登陆错误或者无法预期的错误时,PAM会把信息记录在文件中,可以查看日志。
二、chrony搭建私有ntp服务

1.安装chrony

SRE-第五周作业_域名服务器_02

2.看看包里有哪些重要配置文件,chrony里面一个是/etc/chrony.conf配置文件,还有一个是/usr/bin/chronyc命令文件:

SRE-第五周作业_配置文件_03

3.修改配置文件,将时间改成国内比较稳定的时间如:阿里云时间解析专用服务器

SRE-第五周作业_配置文件_04

4.在客户端配置时间同步

SRE-第五周作业_域名服务器_05

5.用“chronyc sources“命令确认一下 修改后的时间同步设置是否已成功生效

SRE-第五周作业_MySQL_06
三、说明CDN原理
SRE-第五周作业_配置文件_07
CDN原理:

1.用户向浏览器输入www.a.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器请求;

2.网站的DNS域名解析器设置了CNAME,指向了www.a.tbcdn.com,请求指向了CDN网络中的智能DNS负载均衡系统;

3.智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户;

4.用户向该IP节点(CDN服务器)发出请求;

5.由于是第一次访问,CDN服务器会通过Cache内部专用DNS解析得到此域名的原web站点IP,向原站点服务器发起请求,并在CDN服务器上缓存内容;

6.请求结果发给用户。
四、搭建智能DNS,实现不同地域客户端解析到不同主机
  1. 环境配置 :
两台主机分别添加两块网卡:
#第一台主机dns服务器:
eth0:10.0.0.5
eth1:192.168.10.2
#第二台主机为测试服务器:
eth0:10.0.0.11
eth1:192.168.10.5
#1.1.1.1 指的是北京
#2.2.2.2 指的是上海
  1. 服务器安装bind:
yum -y install bind bind-utils
  1. 修改配置文件:
vim /etc/named.rfc1912.zones.bj
SRE-第五周作业_配置文件_08
vim  /etc/named.rfc1912.zones.sh
SRE-第五周作业_MySQL_09
vim /etc/named.conf
SRE-第五周作业_配置文件_10
SRE-第五周作业_域名服务器_11
vim magedu.org.zone.bj
SRE-第五周作业_MySQL_12
vim magedu.org.zone.sh
SRE-第五周作业_域名服务器_13
  1. 启动bind服务:
  systemctl start named
  1. 查看bind服务状态:
systemctl status named
SRE-第五周作业_MySQL_14
  1. 测试服务器测试:

    SRE-第五周作业_域名服务器_15
    SRE-第五周作业_MySQL_16
五、解释DNS解析流程
SRE-第五周作业_域名服务器_17
(1)客户机发出请求解析域名www.google.com的报文

(2)本地的域名服务器收到请求后, 查询本地缓存, 假设没有该纪录, 则本地域名服务器10.1.1.1则向根域名服务器发出请求解析域名www.google.com

(3)根域名服务器收到请求后查询本地记录得到如下结果:google.com NS dns.google.com (表示google.com域中的域名服务器为:dns.google.com ), 同时给出dns.google.com的地址,并将结果返回给域名服务器10.1.1.1

(4)域名服务器10.1.1.1 收到回应后,再发出请求解析域名www.google.com的报文.

(5)域名服务器10.1.1.1收到请求后,开始查询本地的记录,找到如下一条记录:www.google.com A 64.233.189.104(表示google.com域中域名服务器dns.google.com的IP地址为:64.233.189.104),并将结果返回给客户本地域名服务器10.1.1.1

(6)客户本地域名服务器将返回的结果保存到本地缓存,同时将结果返回给客户机.
六、iptables 5表5链解释

 iptables的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者经该设备转发、路由时,都可以使用iptables进行控制。

五表:
filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表
nat:network address translation 地址转换规则表
mangle:修改数据标记位规则表
raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现
五链:
INPUT, 进内核(包含:filter,mangle)
OUTPUT, 出内核(包含:filter,nat,mangle,raw)
FORWARD, 转发(包含:filter,mangle)
PREROUTING,前置路由检查(包含:nat,mangle,raw)
POSTROUTING 后置路由检查(包含:nat,mangle,raw)
三种报文:
到本机某进程的报文:PREROUTING –> INPUT
由本机转发的报文:PREROUTING –> FORWARD –> POSTROUTING
由本机的某进程发出报文(通常为响应报文):OUTPUT –> POSTROUTING
七、iptables/firewalld/nftable 实现主机防火墙。5000-6000端口仅192.168.0.0/24网段内的主机访问
iptables:
iptables -A INPUT 192.168.0.0/24 -p tcp -m multiport --dports 5000:6000 -j ACCEPT

firewalld:
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/24" port protocol="tcp" port="5000:6000" accept"

nftable:
nft add rule ip filter INPUT ip saddr 192.168.0.0/24 tcp dport {5000-6000} ct state new,established counter accept
八、mysql的各发行版有哪些
1. MySQL 5.5

MySQL 5.5是MySQL 5.x系列中的一个版本。该版本于2010年底推出。MySQL 5.5的主要目的是提高性能和稳定性。以提高多核CPU的利用率、改进查询执行时间、提高InnoDB存储引擎的性能为重点。

2. MySQL 5.6

MySQL 5.6是MySQL 5.x系列中的一个版本。该版本于2013年初推出。MySQL 5.6主要改进了InnoDB和存储过程。它还增加了一些新的功能和特性,包括前缀索引、Memcached API和InnoDB表压缩等。

例如,下面是MySQL 5.6中新加的一些参数:

– binlog_checksum:用于启用/禁用二进制日志校验和。

– thread_handling:可配置线程池的行为。

– log_slow_rate_limit:设置慢查询日志的速率限制。

3. MySQL 5.7

MySQL 5.7是MySQL 5.x系列中的一个版本。该版本于2015年推出。MySQL 5.7引入了新的JSON数据类型,改进了GIS功能,支持全文索引,加强了安全性,提高了性能。

MySQL 5.7的新特性包括:

– 消除了MSISAM存储引擎,并使用InnoDB作为默认存储引擎。

– 增加了NO_ZERO_DATE和NO_ZERO_IN_DATE设置。

– 允许使用MySQL Connector/Python新的X DevAPI和X Plugin的Python API。

– 增加在线重做日志文件。

4. MySQL 8.0

MySQL 8.0是MySQL 6.x系列中的一个版本。该版本于2018年推出。MySQL 8.0引入了一些新功能和改进。例如,增加了支持IPv6、在线数据定义语言(DDL)操作、全球事物ID(GTID)、数据字典等。

MySQL 8.0的新特性包括:

– 增加了window函数和common table表达式。

– 增加了rudderless replication。

– 改进了锁策略以提高并发性能。

– 增加了对云平台的支持。
九、mysql索引的作用
索引:是排序的快速查找的特殊数据结构,定义作为查找条件的字段上,又称为键key,索引通过存储引擎实现.
·索引可以降低服务需要扫描的数据量,减少了IO次数
·索引可以帮助服务器避免排序和使用临时表
·索引可以帮助将随机I/O转为顺序I/0
十、mysql btree索引的原理
二叉树导致树高度非常高,逻辑上很近的节点,物理上非常远,无法利用局部性,IO 次数多,查找效率低

Btree是一种平衡的m-way查找树,它可以利用多个分支节点(子树节点)来减少查询数据时所经历的节点数,从而达到节省存取时间的目的。m称为B-Tree的度。

B 树可以看作是对2-3查找树的一种扩展,即他允许每个节点有M-1个子节点。

特点

有一个根节点,根节点只有一个记录和两个孩子或者根节点为空;

每个节点记录中的key和指针相互间隔,指针指向孩子节点;

d是表示树的宽度,除叶子节点之外,其它每个节点有[d/2,d-1]条记录,并且些记录中的key都是从左到右按大小排列的,有[d/2+1,d]个孩子;

在一个节点中,第n个子树中的所有key,小于这个节点中第n个key,大于第n-1个key;

所有的叶子节点必须在同一层次,也就是它们具有相同的深度;

由于B-Tree的特性,在B-Tree中按key检索数据的算法非常直观:首先从根节点进行二分查找,如果找到则返回对应节点的data,否则对相应区间的指针指向的节点递归进行查找,直到找到节点或找到null指针,前者查找成功,后者查找失败。
十一、mysql安全加固
一、更改默认端口

yf文件中修改端口号,并且在防火墙中开放该端口。

二、创建强密码

MySQL的安全性取决于账户和密码的安全性。我们需要创建强密码来保护MySQL。强密码应该包含大小写字母、数字和特殊字符,并且长度不少于8位。

三、限制远程访问

yfd-address参数,以限制只能在本地访问MySQL。如果需要远程访问MySQL,则应该使用SSH隧道或VPN来进行安全访问。

四、限制权限

MySQL的权限控制非常重要,因为它可以确保只有授权用户才能访问和修改数据库。我们需要限制权限,只授予必要的权限。可以使用GRANT和REVOKE命令来管理MySQL的权限。

五、定期备份

ysqldump命令来备份MySQL数据库,并将备份文件保存在安全的地方。

六、更新MySQL版本

综上所述,对MySQL进行安全加固需要更改默认端口、创建强密码、限制远程访问、限制权限、定期备份和更新MySQL版本。通过这些措施可以提高MySQL的安全性,防止数据泄露和攻击。



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK