Linux学习记录5

125 阅读9分钟

1. SUDO,PAM配置规范说明

sudo配置规范说明

授权规则配置文件
vim /etc/sudoers
sudoers配置规范
被授权用户名   登入主机=(代表用户)    命令
user          host=(runas)        command   此处需写该命令的绝对路径

pam配置规范说明

vim /etc/pam.d/<APP>
type    control  module-path  arguments
1.APP:指定服务名,如:telnet、login、ftp等,服务名字“other”代表所有没有在该文件中明确配置的其他服务
2.type:指模块类型,即功能
linux-PAM有四种模块类型:认证管理(auth)、帐号管理(account)、会话管理(session)和密码管理(password)。一个类型可能有多行,它们按顺序依次由PAM模块调用。
3.control:PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关键词实现
控制标记分为五种:required、requisite、sufficient、optional、include
4.module-path:用来指明本模块对应的程序文件的路径名
即要调用模块的位置,如果是64位系统,一般保存在/lib64/security,同一模块可以出现在不同的类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型,编制了不同的执行函数。
5.arguements:用来传递给该模块的参数

2. chrony搭建私有ntp服务

服务器端配置

[root@centos8 ~]#hostname -I
10.0.0.8 

[root@centos8 ~]#yum -y install chrony

[root@centos8 ~]#vim /etc/chrony.conf
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst

#allow 192.168.0.0/16
allow 0.0.0.0/0  #加此行,指定允许同步的网段

# Serve time even if not synchronized to a time source.
local stratum 10 #删除此行注释,当互联网无法连接,仍然可以为客户端提供时间同步服务

[root@centos8 ~]#systemctl restart chronyd

#服务启动后会打开端口123/udp
[root@centos8 ~]#ss -ntlu
Netid             State               Recv-Q             Send-Q                 
            Local Address:Port                             Peer Address:Port     
         
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:22                                    0.0.0.0:*       
          
tcp               LISTEN              0                   100                   
                 127.0.0.1:25                                    0.0.0.0:*       
          
tcp               LISTEN              0                   128                   
                      [::]:22                                       [::]:*       
          
tcp               LISTEN              0                   100                   
                    [::1]:25                                       [::]:*  

客户端配置

[root@centos7 ~]#vim /etc/chrony.conf
server 10.0.0.8 iburst

[root@centos7 ~]#systemctl restart chronyd.service 

#确认同步成功
[root@centos7 ~]#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.8                      3   6    77    29   -229us[-1154us] +/-   17ms

3. 说明CDN原理

CDN (Content Delivery Network)内容分发网络

image.png 工作原理:

  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. 请求结果发给用户

4. 搭建智能DNS,实现不同地域客户端解析到不同主机

#实验目的
搭建DNS主从服务器架构,实现DNS服务冗余

#环境要求
DNS主服务器和web服务器110.0.0.8/24172.16.0.8/16
web服务器210.0.0.7/24
web服务器3172.16.0.7/16
DNS客户端110.0.0.6/24 
DNS客户端2172.16.0.6/16

#前提准备
关闭SElinux
关闭防火墙
时间同步

1 DNS 服务器的网卡配置

#eth0:10.0.0.8/24
#eth1: 172.16.0.8/16
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group 
default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
          valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:f9:8d:90 brd ff:ff:ff:ff:ff:ff
   inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
   inet6 fe80::20c:29ff:fef9:8d90/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:f9:8d:11 brd ff:ff:ff:ff:ff:ff
   inet 172.16.0.8/16 brd 172.16.0.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
   inet6 fe80::20c:29ff:fe11:8d90/64 scope link 
       valid_lft forever preferred_lft forever

2 主DNS服务端配置文件实现 view

yum install bind -y

vim /etc/named.conf
#在文件最前面加下面行
acl beijingnet {
    10.0.0.0/24;
};
acl shanghainet {
    172.16.0.0/16;
};
acl othernet {
   any;
};

#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// 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";

3 实现区域配置文件

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.oth

4 创建区域数据库文件

vim /var/named/magedu.org.zone.bj
$TTL 1D
@   IN SOA master admin.magedu.org. (
                    2019042214 ; 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. (
                    2019042214 ; 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. (
                    2019042214 ; 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

chgrp named /var/named/magedu.org.zone.bj
chgrp named /var/named/magedu.org.zone.sh
chgrp named /var/named/magedu.org.zone.other

systemctl start named          #第一次启动服务
rndc reload                    #不是第一次启动服务

5 实现位于不同区域的三个WEB服务器

#分别在三台主机上安装http服务
#在web服务器110.0.0.8/24实现
yum install httpd                        
echo www.magedu.org in Other > /var/www/html/index.html
systemctl start httpd   
#在web服务器210.0.0.7/16
echo www.magedu.org in Beijing > /var/www/html/index.html
systemctl start httpd  
#在web服务器3172.16.0.7/16
yum install httpd                        
echo www.magedu.org in Shanghai > /var/www/html/index.html
systemctl start httpd  

6 客户端测试

#分别在三台主机上访问
#DNS客户端110.0.0.6/24 实现,确保DNS指向10.0.0.8
curl www.magedu.org
www.magedu.org in Beijing 
#DNS客户端2172.16.0.6/16 实现,确保DNS指向172.16.0.8
curl www.magedu.org
www.magedu.org in Shanghai
#DNS客户端310.0.0.8 实现,,确保DNS指向127.0.0.1
curl www.magedu.org
www.magedu.org in Other

5. 解释DNS解析流程

  1. 主机首先向其本地域名服务器进行递归查询。
  2. 本地域名服务器采用迭代查询,它先向某个根域名服务器查询。
  3. 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器的IP地址。
  4. 本地域名服务器向顶级域名服务器进行迭代查询。
  5. 顶级域名服务器告诉本地域名服务器,下一次应查询的权限域名服务器的IP地址。
  6. 本地域名服务器向权限域名服务器进行迭代查询。
  7. 权限域名服务器告诉本地域名服务器所查询的域名的IP地址。
  8. 本地域名服务器最后把查询的结果告诉主机。

image.png

6. iptables 5表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

五表解释:
filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表
nat:network address translation 地址转换规则表
mangle:修改数据标记位规则表
raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现

三种报文流向

流入本机:PREROUTING --> INPUT–>用户空间进程
流出本机:用户空间进程 -->OUTPUT–> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING

7. iptables/firewalld/nftable 实现主机防火墙。5000-6000端口仅192.168.0.0/24网段内的主机访问

使用iptables

# 清空所有已有规则,并设置默认策略为拒绝
iptables -F
iptables -P INPUT DROP

# 允许回环接口的流量
iptables -A INPUT -i lo -j ACCEPT

# 允许192.168.0.0/24网段的流量访问5000-6000端口
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 5000:6000 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p udp --dport 5000:6000 -j ACCEPT

# 允许已建立的、相关的连接通过
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

使用firewalld

# 启用firewalld服务并设置开机启动
systemctl start firewalld
systemctl enable firewalld

# 清空所有已有规则,并设置默认策略为拒绝
firewall-cmd --zone=public --permanent --remove-interface=eth0
firewall-cmd --zone=public --permanent --add-interface=eth0
firewall-cmd --permanent --zone=public --set-target=DROP

# 允许192.168.0.0/24网段的流量访问5000-6000端口
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" port protocol="tcp" port="5000-6000" accept'
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" port protocol="udp" port="5000-6000" accept'

# 重载firewalld规则
firewall-cmd --reload

使用nftables

# 清空所有已有规则,并设置默认策略为拒绝
nft flush ruleset
nft add table ip filter
nft add chain ip filter input { type filter hook input priority 0 \; }

# 允许回环接口的流量
nft add rule ip filter input iif lo accept

# 允许192.168.0.0/24网段的流量访问5000-6000端口
nft add rule ip filter input ip saddr 192.168.0.0/24 tcp dport 5000-6000 accept
nft add rule ip filter input ip saddr 192.168.0.0/24 udp dport 5000-6000 accept

# 允许已建立的、相关的连接通过
nft add rule ip filter input ct state related,established accept

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索引的作用

在mysql中,索引可以用来快速查询数据表中有某一特定值的记录,大大加快数据的查询速度;在列上创建了索引之后,查找数据时可以直接根据该列上的索引找到对应记录行的位置,从而快捷地查找到数据。如果表中查询的列有一个索引,MySQL就能快速到达一个位置去搜索数据文件,而不必查看所有数据,这样将会节省很大一部分时间;且通过创建唯一索引可以保证数据库表中每一行数据的唯一性。

10.mysql btree索引的原理

B-Tree结构的数据可以让系统高效的找到数据所在的磁盘块。为了描述B-Tree,首先定义一条记录为一个二元组[key, data] ,key为记录的键值,对应表中的主键值,data为一行记录中除主键外的数据。对于不同的记录,key值互不相同。

11. mysql安全加固?

设置数据库管理员root口令
禁止root远程登录
删除anonymous用户账号
删除test数据库