目录
七、iptables/firewalld/nftable 实现主机防火墙。5000-6000端口仅192.168.0.0/24网段内的主机访问
一、SUDO,PAM配置规范说明
sudo配置规范
sudo:允许管理员让普通用户执行一些或全部的root命令的一个工具
sodo特性
sodo能够限制用户只在某台主机上运行某些命令
sudo提供了丰富的日志,详细地记录了每个用户的操作
sudo的配置文件是/etc/sudoers,他允许系统管理员集中的管理用户的使用权限和使用的主机,他所在的位置默认是在/etc/sudoers,属性必须为0411
配置文件/etc/sudoers
[root@administrator ~]# vim /etc/sudoers
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
PAM配置规范
PAM:插件式的认证模块
具体的pam文件夹放在/lib/security目录下,服务文件夹放在/etc/pam.d目录下
pam——access.so模块的使用,控制访问sshd服务的主机和用户
1.修改需要使用这个模块的服务文件,如sshd:/etc/pam,d/sshd添加
acconut.required pam_access.so
2.修改模块的配置文件
/etc/security/access.conf
-:redhat:ALL EXCEPT 192.168.0
3.测试
ssh
ssh
pam_access.so根据主机、IP\用户\拒绝或允许访问
二、chrony搭建私有ntp服务
服务器端配置
[root@administrator ~]# hostname -I #查询主机IP地址
192.168.23.129
[root@administrator ~]# yum -y install chrony #安装时间同步服务
Repository AppStream is listed more than once in the configuration
Repository EPEL is listed more than once in the configuration
Last metadata expiration check: 1:06:52 ago on Tue 06 Sep 2022 03:55:40 PM CST.
Package chrony-4.1-1.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@administrator ~]# vim /etc/chrony.conf #配置时间同步文件
#添加以下内容
#阿里云
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
#腾讯
server time1.cloud.tencent.com iburst
#国家计时中心
server 210.72.145.44 iburst
#allow 192.168.0.0/16
allow 0.0.0.0/0 #加此行,指定允许同步的网段
[root@administrator ~]# systemctl enable --now chronyd #重启并设置开机启动chronyd服务
#服务启动后会打开端口123/udp
[root@administrator ~]# ss -ntlu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 0.0.0.0:123 0.0.0.0:*
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:*
udp UNCONN 0 0 [::1]:323 [::]:*
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 *:8080 *:*
tcp LISTEN 0 128 [::]:80 [::]:*
tcp LISTEN 0 128 [::]:22 [::]:*
tcp LISTEN 0 128 *:9090 *:*
#服务器端chronyd服务配置完成
客户端配置
[root@administrator ~]# vim /etc/chrony.conf #配置时间同步文件
#添加以下内容
server 192.168.23.129 iburst
[root@administrator ~]#systemctl restart chronyd.service
#确认同步成功
[root@administrator ~]#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.23.129 2 10 265 74 -3450us[-3249us] +/- 19ms
三、说明CDN原理
CDN的基本原理
CDN的基本原理是在用户访问相对集中的地区和网络设置一些缓存服务器。当用户访问网站时,利用全局的负载均衡技术将用户的访问指向距离最近的缓存服务器,由缓存服务器代替源站响应用户的访问请求。这样一方面减轻了源站服务器的工作压力,另一方面使用户可就近取得所需内容,解决inter网络拥挤的的状况,提高用户访问网站的响应速度。
CDN的优点
本地cache加速,提高了企业站点的访问速度(尤其含有大量图片和静态页面站点)
跨运营商的网络加速,保证不同网络的用户都能得到良好的访问质量
远程访问用户权限根据DNS负载均衡技术智能自动选择cache服务器
自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻源站点web服务器负载等功能
广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效预防黑客入侵
四、搭建智能DNS,实现不同地域客户端解析到不同主机
利用view实现智能DNS
实验目的:搭建DNS主从服务器架构,实现DNS服务冗余
前提准备
关闭SElinux
关闭防火墙
时间统计
实现步骤
# 配置两个IP地址
# eth0:10.0.0.8/24
# eth1:172.16.0.8/16
主DNS服务端配置文件实现view
yum -y install bind-y
# 配置文件
vim /etc/named.conf
vim /etc/named.conf
#在文件最前面加下面行
acl beijingnet {
10.0.0.0/24;
};
acl shanghainet {
176.16.0.0/16;
};
acl othernet {
any;
};
#注释掉下面两行
// listen-on port 53 { 127.0.01; };
// allow-query { localhost; };
#其他略
#创建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
vim /etc/named.rfc1912.zones.bj
zone"." IN {
type hint;
file "named.ca";
};
zone"magedu.org" {
type master;
file "magedu.org.zone.bj";
};
vim /etc/named.rfc1912.zones.sh
vim /etc/named.rfc1912.zones.sh
zone"." IN {
type hint;
file "named.ca";
};
zone"magedu.org" {
type master;
file "magedu.org.zone.sh";
};
vim /etc/named.rfc1912.zones.other
vim /etc/named.rfc1912.zones.other
zone"." IN {
type hint;
file "named.ca";
};
zone"magedu.org" {
type master;
file "magedu.org.zone.other";
};
chgrp named /etc/named.rfc1912.zones.bj
chgrp named /etc/named.rfc1912.zones.sh
chgrp named /etc/named.rfc1912.zones.other
创建区域数据库文件
vim /var/named/magedu.org.zone.bj
vim /var/named/magedu.org.zone.sh
vim /var/named/magedu.org.zone.other
实现位于不同区域的三个WEB服务器
客户端测试
五、解释DNS解析流程
DNS服务工作原理
DNS解析流程
1.客户端提出域名解析请求,并将请求发送给本地域名服务器
2.本地域名服务器收到请求后,首先查询本地缓存,如果有这条记录,则本地域名服务器直接返回查询结果
3.如果本地缓存没有记录,则本地域名服务器直接向根域名服务器发送请求,然后根域名服务器返回域的主域名(根的子域)的本地域名服务器。服务器的地址
4.本地服务器向上一步返回的域名服务器发送请求后,然后接受请求的服务器查询自己的缓存,如果没有该记录,则返回相关下级域名服务器端的地址
5.重复地4条,直到找到正确的记录
6.本地域名服务器将返回的结果保存到缓存中以备下次使用,并将结果返回给客户端
递归查询
是指DNS服务器在收到用户发送的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。
迭代查询
是指DNS服务器在收到用户发送的请求时,并不直接回复查询结果,而是告诉另一台服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
DNS缓存
DNS缓存是将数据存储在靠近发起请求的客户端的位置,也可以说DNS数据是可以缓存在任意位置,最终目的是在此减少递归查询过程,可以提高用户请求响应速度。
六、iptables 5表5链解释
5表:filter、nat、mangle、raw、security
filter:过滤规则表,默认表,使用最广泛
nat:地址转换规则表
mangle:修改数据标记位规则表
raw:关闭/启用的链接跟踪机制,加快封包穿越防火墙的速度
security:用于强制访问控制(MAC)网络规则由linux安全模块(selinux)实现
5链:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
INPUT:进来的数据包应用此规则链中的策略(包含:filter、mangle)
OUTPUT:外出的数据包应用此规则链的策略(包含:filter、nat、mangle、raw)
FORWARD:转发数据包时应用此规则链中的策略(包含:filter、mangle)
PREROUTING:对数据包作路由选择前应用此链中的规则(包含:nat、mangle、raw)
POSTROUTING:对数据包作路由选择后应用此链中的规则(包含:nat、mangle、raw)
优先级有高到低的顺序为:
security --> raw --> mangle --> nat --> filter
七、iptables/firewalld/nftable 实现主机防火墙。5000-6000端口仅192.168.0.0/24网段内的主机访问
iptables
iptables -A INPUT ! -s 10.1.20/24 -p tcp -m multiport --dports 5000:6000,80 -j REJECT
iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT ! -s 10.1.20.0/24 -p tcp -m multiport --dports 5000:6000,80 -j REJECT --reject-with icmp-port-unreachable
iptables -nvL --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 2 112 REJECT tcp -- * * !10.1.20.0/24 0.0.0.0/0 multiport dports 5000:6000,80 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
#永久保存规则
yum -y install iptables-service
cp /etc/sysconfig/iptables{,.bak}
iptables-save > /etc/sysconfig/iptables
systemctl enable iptables.service
systemctl mask firewalld.service nftables.service
#启动httpd服务
echo "www.magedu.org" >/var/www/html/index.html;systemctl start httpd
firewalld
#firewalld 规则
systemctl start firewalld
firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.1.20.0/24 port port=70-80 protocol=tcp accept'
firewall-cmd --reload
firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="10.1.20.0/24" port port="70-80" protocol="tcp" accept
nftable
#nftable
nft list ruleset
nft add table inet test_table
nft add chain inet test_table test_filter_input_chain { type filter hook input priority 0 \; }
nft add rule inet test_table test_filter_input_chain handle 0 ip saddr 10.1.10.15 reject
#一条规则白名单,不是10.1.20.0网段的就抛弃
nft add rule inet test_table test_filter_input_chain handle 0 ip saddr != 10.1.20.0/24 tcp dport {70-80} reject
nft -a list ruleset
table inet test_table { # handle 1
chain test_filter_input_chain { # handle 1
type filter hook input priority filter; policy accept;
ip saddr 10.1.10.15 reject # handle 5
}
}
八、mysql的各发行版有哪些 ?
MySQL 常见的发行版本
MySQL 官方版本(社区版、企业版)
Percona MySQL:在 MySQL 官方发行版上进行二次开发
MariaDB
各个发行版本之间的区别和优缺点
九、mysql索引的作用
索引的优点
创建索引可以大幅提高系统性能,帮助用户提高查询的速度;
通过索引的唯一性,可以保证数据库表中的每一行数据的唯一性;
可以加速表与表之间的链接;
降低查询中分组和排序的时间。
当然了,没有任何事情是完美的,索引也是如此,尽管索引好处非常多,但是其也有局限性合理性以及片面性。
索引的缺点
索引的存储需要占用磁盘空间;
当数据的量非常巨大时,索引的创建和维护所耗费的时间也是相当大的;
当每次执行CRU操作时,索引也需要动态维护,降低了数据的维护速度。
十、mysql btree索引的原理
B+ 树是一种树数据结构,是一个n叉排序树,每个节点通常有多个孩子,一棵B+树包含根节点、内部节点和叶子节点。
B-Tree
为了描述B-Tree,首先定义一条数据记录为一个二元组[key, data],key为记录的键值,对于不同数据记录,key是互不相同的;data为数据记录除key外的数据。那么B-Tree是满足下列条件的数据结构:
d为大于1的一个正整数,称为B-Tree的度。
h为一个正整数,称为B-Tree的高度。
每个非叶子节点由n-1个key和n个指针组成,其中d<=n<=2d。
每个叶子节点最少包含一个key和两个指针,最多包含2d-1个key和2d个指针,叶节点的指针均为null 。
所有叶节点具有相同的深度,等于树高h。
key和指针互相间隔,节点两端是指针。
一个节点中的key从左到右非递减排列。
所有节点组成树结构。
每个指针要么为null,要么指向另外一个节点。
如果某个指针在节点node最左边且不为null,则其指向节点的所有key小于v(key1)v(key1),其中v(key1)v(key1)为node的第一个key的值。
如果某个指针在节点node最右边且不为null,则其指向节点的所有key大于v(keym)v(keym),其中v(keym)v(keym)为node的最后一个key的值。
如果某个指针在节点node的左右相邻key分别是keyikeyi和keyi+1keyi+1且不为null,则其指向节点的所有key小于v(keyi+1)v(keyi+1)且大于v(keyi)v(keyi)。
十一、mysql安全加固?
相关措施
配置密码复杂度
配置密码过期策略
限制mysql多次登录失败重试时间
禁止root账号登录
禁止空口令登录
根据用户的业务需要,配置其所需的最小权限
删除匿名账号
除root账号外,任何用户不应有mysql库user表的存取权限
配置密码定期更换策略
加上/etc/my.cnf配置文件中增加
vim /etc/my.cnf
[mysqld]
default_password_lifetime=90 #90天过期
限制mysql多次登录失败重试时间
vim /etc/my.cnf
#添加如下两行配置
connection-control-failed-connections-threshold=5 #登录失败次数限制
connection-control-min-connection-delay=5m #限制重试时间
执行安全加固脚本
安装完mysql-server 会提示可以运行mysql_secure_installation。运行mysql_secure_installation会执行几个设置:
为root用户设置密码
删除匿名账号
取消root用户远程登录
删除test库和对test库的访问权限
刷新授权表使修改生效
[root@administrator ~]# mysql_secure_installation;