一、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
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
2.看看包里有哪些重要配置文件,chrony里面一个是/etc/chrony.conf配置文件,还有一个是/usr/bin/chronyc命令文件:
3.修改配置文件,将时间改成国内比较稳定的时间如:阿里云时间解析专用服务器
4.在客户端配置时间同步
5.用“chronyc sources“命令确认一下 修改后的时间同步设置是否已成功生效
三、说明CDN原理
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,实现不同地域客户端解析到不同主机
- 环境配置 :
两台主机分别添加两块网卡:
#第一台主机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 指的是上海
- 服务器安装bind:
yum -y install bind bind-utils
- 修改配置文件:
vim /etc/named.rfc1912.zones.bj
vim /etc/named.rfc1912.zones.sh
vim /etc/named.conf
vim magedu.org.zone.bj
vim magedu.org.zone.sh
- 启动bind服务:
systemctl start named
- 查看bind服务状态:
systemctl status named
-
测试服务器测试:
五、解释DNS解析流程
(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的安全性,防止数据泄露和攻击。
标签:SRE,作业,用户,节点,etc,第五,MySQL,服务器,PAM
From: https://blog.51cto.com/u_15641727/7111261