目录
七. iptables/firewalld/nftable 实现主机防火墙。5000-6000端口仅192.168.0.0/24网段内的主机访问
一. SUDO,PAM配置规范说明
sudo配置规范
sudo:允许管理员让普通用户执行一些或全部的root命令的一个工具
sodo特性
sodo能够限制用户只在某台主机上运行某些命令
sudo提供了丰富的日志,详细地记录了每个用户的操作
sudo的配置文件是/etc/sudoers,他允许系统管理员集中的管理用户的使用权限和使用的主机,他所在的位置默认是在/etc/sudoers,属性必须为0440
配置文件
[root@centos7-10 ~]#vim /etc/sudoers
配置文件部分演示:
1 ## Sudoers allows particular users to run various commands as
2 ## the root user, without needing the root password.
3 ##
4 ## Examples are provided at the bottom of the file for collections
5 ## of related commands, which can then be delegated out to particular
6 ## users or groups.
7 ##
8 ## This file must be edited with the 'visudo' command.
9
10 ## Host Aliases
11 ## Groups of machines. You may prefer to use hostnames (perhaps using
12 ## wildcards for entire domains) or IP addresses instead.
13 # Host_Alias FILESERVERS = fs1, fs2
14 # Host_Alias MAILSERVERS = smtp, smtp2
15
16 ## User Aliases
17 ## These aren't often necessary, as you can use regular groups
18 ## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
19 ## rather than USERALIAS
20 # User_Alias ADMINS = jsmith, mikem
21
22
23 ## Command Aliases
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 10.0.0
3.测试
ssh
ssh
pam_access.so根据主机、IP\用户\拒绝或允许访问
二. chrony搭建私有ntp服务
服务器端配置
[root@centos7-10 ~]#hostname -I #查询主机IP地址
10.0.0.10
[root@centos7-10 ~]#yum -y install chrony #安装时间同步服务
Loaded plugins: fastestmirror
BaseOS | 3.6 kB 00:00:00
https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed to connect to 2402:f000:1:400::2: Network is unreachable"
Trying other mirror.
epel | 4.7 kB 00:00:00
(1/3): epel/group_gz | 99 kB 00:00:00
(2/3): epel/primary_db | 7.0 MB 00:00:01
epel/updateinfo FAILED
https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/repodata/90f0d2e74030c18dc289c854e1a89673052b65db89bac8bf52260a9c4bf1172d-updateinfo.xml.bz2: [Errno 14] curl#7 - "Failed to connect to 2402:f000:1:400::2: Network is unreachable"
Trying other mirror.
(3/3): epel/updateinfo | 1.0 MB 00:00:00
Determining fastest mirrors
* epel: mirrors.aliyun.com
Package matching chrony-3.1-2.el7.centos.x86_64 already installed. Checking for update.
Nothing to do
[root@centos7-10 ~]# 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@centos7-10 ~]#systemctl restart chronyd.service
[root@centos7-10 ~]# systemctl enable --now chronyd #重启并设置开机启动chronyd服务
#服务器端chronyd服务配置完成
客户端配置
[root@centos7-20 ~]#hostname -I
10.0.0.20
[root@centos7-20 ~]# vim /etc/chrony.conf #配置时间同步文件
#添加以下内容
server 192.168.23.129 iburst
[root@centos7-20 ~]#systemctl restart chronyd.service
#确认同步成功
[root@centos7-20 ~]#chronyc sources -v
210 Number of sources = 1
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- 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
===============================================================================
^* 10.0.0.10 3 6 17 28 +16us[-2354ns] +/- 18ms
三. 说明CDN原理
CDN的基本原理是在用户访问相对集中的地区和网络设置一些缓存服务器。当用户访问网站时,利用全局的负载均衡技术将用户的访问指向距离最近的缓存服务器,由缓存服务器代替源站响应用户的访问请求。这样一方面减轻了源站服务器的工作压力,另一方面使用户可就近取得所需内容,解决inter网络拥挤的的状况,提高用户访问网站的响应速度。
CDN的优点
本地cache加速,提高了企业站点的访问速度(尤其含有大量图片和静态页面站点)
跨运营商的网络加速,保证不同网络的用户都能得到良好的访问质量
远程访问用户权限根据DNS负载均衡技术智能自动选择cache服务器
自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻源站点web服务器负载等功能
广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效预防黑客入侵
四. 搭建智能DNS,实现不同地域客户端解析到不同主机
利用view实现智能DNS
实验目的:搭建DNS主从服务器架构,实现DNS服务冗余
环境要求
五台主机
DNS主服务器个web服务器1:10.0.0.8/24,172.16.0..8/16
web服务器2:10.0.0.7/24
web服务器3:172.16.0.7/16
DNS客户端1:10.0.0.6/24
DNS客户端2:172.16.0.6/16
前提准备
关闭SELinux
关闭防火墙
时间同步
实现过程
DNS主服务器网卡配置
# 配置两个IP地址
# eth0:10.0.0.8/24
# eth1:172.16.0.8/16
主DNS服务端配置文件实现view
yum -y install bind-y
# 配置文件
/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
zone"." IN {
type hint;
file "named.ca";
};
zone"magedu.org" {
type master;
file "magedu.org.zone.bj";
};
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
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
$TTL 1D
@ IN SOA master admin.magedu.org. (
20230820 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.0.8
websrv A 10.0.0.7
www CNAME websrv
vim /var/named/magedu.org.zone.sh
$TTL 1D
@ IN SOA master admin.magedu.org. (
20230821 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.0.8
websrv A 172.16.0.7
www CNAME websrv
vim /var/named/magedu.org.zone.other
$TTL 1D
@ IN SOA master admin.magedu.org. (
20230822 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.0.8
websrv A 127.0.0.1
www CNAME websrv
[root@centos7-20 named]#systemctl restart named
实现位于不同区域的三个WEB服务器
客户端测试
五. 解释DNS解析流程
什么是DNS
DNS就是域名系统,是因特网中的一项核心服务,是用于实现域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
DNS解析流程
1.客户端提出域名解析请求,并将请求发送给本地域名服务器
2.本地域名服务器收到请求后,首先查询本地缓存,如果有这条记录,则本地域名服务器直接返回查询结果
3.如果本地缓存没有记录,则本地域名服务器直接向根域名服务器发送请求,然后根域名服务器返回域的主域名(根的子域)的本地域名服务器。服务器的地址
4.本地服务器向上一步返回的域名服务器发送请求后,然后接受请求的服务器查询自己的缓存,如果没有该记录,则返回相关下级域名服务器端的地址
5.重复地4条,直到找到正确的记录
6.本地域名服务器将返回的结果保存到缓存中以备下次使用,并将结果返回给客户端
递归查询
是指DNS服务器在收到用户发送的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。
迭代查询
是指DNS服务器在收到用户发送的请求时,并不直接回复查询结果,而是告诉另一台服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
DNS缓存
DNS缓存是将数据存储在靠近发起请求的客户端的位置,也可以说DNS数据是可以缓存在任意位置,最终目的是在此减少递归查询过程,可以提高用户请求响应速度。
六. iptables 5表5链解释
iptables由5个表tbale和5个链chain以及一些规则组成
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 192.168.0.0/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 192.168.0.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 -- * * !192.168.0.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
systemctl start firewalld
firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.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="192.168.0.0/24" port port="70-80" protocol="tcp" accept
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.0.0.20 reject
#一条规则白名单,不是192.168.0.0网段的就抛弃
nft add rule inet test_table test_filter_input_chain handle 0 ip saddr != 192.168.0.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.0.0.20 reject # handle 5
}
}
八. mysql的各发行版有哪些 ?
MySQL 常见的发行版本:
MySQL 官方版本(社区版、企业版)
Percona MySQL:在 MySQL 官方发行版上进行二次开发
MariaDB
各个发行版本之间的区别和优缺点
九. mysql索引的作用
索引:是排序的快速查找的特殊数据结构,定义作为查找条件的字段上,又称为键key,索引通过存储引引擎实现
优点:
- 索引可以降低服务需要扫描的数据量,减少IO次数
- 索引可以帮助服务器避免排序和使用临时表
- 索引可以帮助将随机I/O转为顺序I/O
缺点:
- 占用额外空间,影响插入速度
十.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表的存取权限
执行安全加固脚本
安装完mysql-server 会提示可以运行mysql_secure_installation。运行mysql_secure_installation会执行几个设置:
为root用户设置密码
删除匿名账号
取消root用户远程登录
删除test库和对test库的访问权限
刷新授权表使修改生效