第五周作业

目录

1.总结openssh服务安全加固

2.总结sudo配置文件格式,总结相关示例

2.1总结配置文件:

2.2总结相关示例:

3.总结PAM架构及工作原理 

3.1PAM架构:

3.2工作原理 :

4.总结PAM配置文件格式,总结相关示例,nologin.so,limits,等模块的使用

4.1总结PAM配置文件格式:

 4.2总结nologin.so,limits等模块使用

5.实现私有时间服务器搭建

5.1配置服务器端(对外连接互联网,对内连接其他客户端)

5.2配置客户端(作用是连接服务器端)(已ubuntu为例)

6.总结DNS域名三级结构 

7.总结DNS服务的工作原理,涉及递归和迭代查询原理

8.实现私有DNS,供本地网络主机作DNS递归查询

9.总结DNS服务器类型,解析答案,正反解析域,资源记录定义

10.实现DNS主从同步

11.泛域名和子域应用 

12.基于acl实现智能DNS

12.1Access Control Lists:访问控制列表

12.2 view Block Definition and Usage:查看块定义和用法

12.3范例:

13.总结防火墙分类

14.总结iptable 5表5链,基本使用,扩展模块 

14.1总结iptable 5表5链

14.2 基本使用

14.3扩展模块(用-m来指定扩展模块)

15.总结iptables规则优化实践,规则保存和恢复 

15.1规则优化实践

15.2规则保存和恢复

16.总结NAT转换原理,DNAT/SDNAT原理,并自行设计架构实现DNAT/SNAT。 

16.1总结DNAT/SNAT转换原理:

16.2自行设计架构范例:

17.使用REDIRECT将90端口重定向80 ,并可以访问80端口的服务 

18.firewalld常见区域总结 

19.通过nft来实现暴露本机80/443/ssh服务端口给指定网络访问 

20.总结关系型数据库相关概念,关系,行,列,主键,唯一键,域。 

21.总结关联类型,1对1,1对多,多对多关系。可以自行设计表进行解释 

22.总结mysql设计规范

23.总结mysql多种安装方式,及安全加固,并总结mysql配置文件

23.1多种安装方式:

23.2安全加固及总结mysql配置文件


1.总结openssh服务安全加固

ssh 服务最佳实践

1.使用非默认22端口

2.限制可登录用户

Allow user1..   Deny user1..Allow Group g1 g2...Deny Group g1 g2....

3.设定空闲会话超时时长

clientAliveInterval 60

clientAliveCountmax 0

4.利用防火墙设置ssh访问策略

5.仅监听特定的IP地址

6.基于口令认证时,使用强密码策略

7.基于秘钥的认证

8.禁止使用空密码

9.禁止root用户直接登录

10.限制ssh的访问频度和并发在线数

11.经常分析日志

     lastb命令

[root@Rocky8 ~]#find /etc/ssh -name "*_config"
/etc/ssh/ssh_config                              #客户端配置文件
/etc/ssh/sshd_config                             #服务器端配置文件

#修改服务器端配置文件

[root@Rocky8 ~]#vim /etc/ssh/sshd_config

#Port 22                #基于安全考虑,端口号需要更改一下,更改完成以后,重启sshd服务 
#AddressFamily any      #监听协议,Ipv4 Ipv6都支持
#ListenAddress 0.0.0.0  #监听的Ip地址,默认22端口是监听在哪个Ip上。0.0.0.0是绑定机器上的所有Ip


PermitRootLogin yes         #允许远程登录
PasswordAuthentication yes  #密码身份验证
GSSAPIAuthentication no     #更改成no可提高速度

2.总结sudo配置文件格式,总结相关示例

2.1总结配置文件:

sudoers 授权规则格式:

用户 登录主机=(代表用户)命令

user host=(runas)command     (command要写绝对路径)

user:运行命令者身份

host:通过哪些主机

runas:以哪个用户身份

command:运行哪些命令

2.2总结相关示例:

#修改授权规则配置文件

[root@Rocky8 ~]#vim /etc/sudoers
zhang 10.0.0.128=(root)  /usr/bin/cat /var/log/messages*

#转为普通用户,不仅可以查看日志文件。还可以查看密码文件是很危险的。

#转为普通用户,可以查看日志文件
[zhang@Rocky8 /var/log]$sudo cat /var/log/messages


Dec  8 09:39:20 Rocky8 NetworkManager[906]: <info>  [1670463560.6137] dhcp4 (eth0): state changed new lease, address=10.0.0.128
Dec  8 09:45:02 Rocky8 rsyslogd[970]: [origin software="rsyslogd" swVersion="8.2102.0-7.el8" x-pid="970" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
Dec  8 09:49:40 Rocky8 systemd-logind[1035]: New session 3 of user root.
Dec  8 09:49:40 Rocky8 systemd[1]: Started Session 3 of user root.
Dec  8 09:54:20 Rocky8 NetworkManager[906]: <info>  [1670464460.6147] dhcp4 (eth0): state changed new lease, address=10.0.0.128

#不仅是可以查看日志文件,还可看密码文件。是很危险的。
[zhang@Rocky8 /var/log]$sudo cat /var/log/messages /etc/shadow

root:$6$QtmgPq1WhGPos60M$PigPx5OVsvaNmfZO2Zk7NWIGH6qv8Nk5mEznTxsU6H0/d4iO9DiVGMve731EqhWJp2mXqyaHwFPORyEd7cjpk0::0:99999:7:::
bin:*:18700:0:99999:7:::
daemon:*:18700:0:99999:7:::
adm:*:18700:0:99999:7:::
lp:*:18700:0:99999:7:::
sync:*:18700:0:99999:7:::
shutdown:*:18700:0:99999:7:::
halt:*:18700:0:99999:7:::
mail:*:18700:0:99999:7:::

#解决办法如下: 加"!"代表不执行以下命令
[root@Rocky8 ~]#vim /etc/sudoers

zhang 10.0.0.128=(root)  /usr/bin/cat /var/log/messages*,!/usr/bin/cat /var/log/messages *

#已实现限制
[zhang@Rocky8 /var/log]$sudo cat /var/log/messages 

Dec  8 09:39:20 Rocky8 NetworkManager[906]: <info>  [1670463560.6137] dhcp4 (eth0): state changed new lease, address=10.0.0.128
Dec  8 09:45:02 Rocky8 rsyslogd[970]: [origin software="rsyslogd" swVersion="8.2102.0-7.el8" x-pid="970" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
Dec  8 09:49:40 Rocky8 systemd-logind[1035]: New session 3 of user root.
Dec  8 09:49:40 Rocky8 systemd[1]: Started Session 3 of user root.
Dec  8 09:54:20 Rocky8 NetworkManager[906]: <info>  [1670464460.6147] dhcp4 (eth0): state changed new lease, address=10.0.0.128

[zhang@Rocky8 /var/log]$sudo cat /var/log/messages /etc/passwd

Sorry, user zhang is not allowed to execute '/bin/cat /var/log/messages /etc/passwd' as root on Rocky8.zhang.stu.

3.总结PAM架构及工作原理 

3.1PAM架构:

         模块文件目录:/lib64/security/*.so (库)

         特定模块相关的配置文件:/etc/security

         每种应用模块专用的配置文件:/etc/pam.d/App_name

3.2工作原理 :

         service(服务)>>>PAM(配置文件)>>>pam_*.so

         PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d             下),最后调用认证文件(位于/lib64/security下)进行安全认证

4.总结PAM配置文件格式,总结相关示例,nologin.so,limits,等模块的使用

4.1总结PAM配置文件格式:

  专用配置文件/etc/pam.d/格式

   type     control     module-path     arguments

 4.2总结nologin.so,limits等模块使用

官方对于pam_nologin的说明:http://www.linux-pam.org/(pam_nologin.8.xml)

"pam_nologin is a PAM module that prevents users from logging in to the system when<filename>/var/run/nologin</filename> or  <filename>/etc/nologin</filename> exists. The contents of the file are displayed to the user. The pam_nologin module has no effect on the root user's ability to log in.

官方对于pam_limits的说明:http://www.linux-pam.org/(pam_limits.8.xml)and (limits.conf.5.xml)and (limits.conf)

The pam_limits PAM module sets limits on the system resources that can be obtained in a user-session. Users of <emphasis>uid=0</emphasis> are affected by this limits, too.

By default limits are taken from the <filename>/etc/security/limits.conf</filename>config file.

The <emphasis>pam_limits.so</emphasis> module applies ulimit limits

This file sets the resource limits for the users logged in via PAM

It does not affect resource limits of the system services。(对于系统服务,资源限制不起作用)

#新建并编辑nologin文件

[root@Rocky8 ~]#vim /etc/nologin

please login in to system for root    #写一句话“请以root身份登录”

# *代表:所有人;-代表:soft和hard二者兼具。
#core:限制核心文件大小
#nproc:最大进程数
#nofile:打开文件描述符的最大值
#memlock:  可加锁的内存地址空间最大值
#msgqueue:POSIX消息队列使用的最大内存

[root@Rocky8 ~]#vim /etc/security/limits.conf

*                -       core           unlimited
*                -       nproc          1000000
*                -       nofile         1000000
*                -       memlock        32000
*                -       msgqueue       8192000

对于系统级的服务该怎么进行资源限制?解决办法如下:以sshd服务为例

#显示sshd属性,并查看limitnproc选项(以修改NPROC参数为例)

[root@Rocky8 ~]#systemctl show sshd|grep -i "limitnproc"
LimitNPROC=6984

#修改ssh服务的配置文件

[root@Rocky8 ~]#vim /usr/lib/systemd/system/sshd.service

[Service]
Type=notify
EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config
EnvironmentFile=-/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
LimitNPROC=8888                        #增加limitnproc的数值

#已完成资源限制

[root@Rocky8 ~]#systemctl daemon-reload    #重新加载systemd的管理器配置

[root@Rocky8 ~]#systemctl restart sshd     #重新启动sshd服务

[root@Rocky8 ~]#systemctl show sshd|grep -i "limitnproc"   #查看更改后的数据
LimitNPROC=8888

5.实现私有时间服务器搭建

5.1配置服务器端(对外连接互联网,对内连接其他客户端)

#安装chrony软件包
[root@Rocky8 ~]#yum -y install chrony

#查找chrony配置文件
[root@Rocky8 ~]#rpm -ql chrony|grep -i ".conf$"
/etc/chrony.conf

#修改配置文件(3部分需要修改)
[root@Rocky8 ~]#vim /etc/chrony.conf

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#pool 2.rocky.pool.ntp.org iburst
server ntp1.aliyun.com iburst          #添加阿里云时间源服务器
server ntp2.aliyun.com iburst          #添加阿里云时间源服务器
server ntp.ntsc.ac.cn iburst           #添加中国国家授时中心服务器

# Allow NTP client access from local network.
#allow 192.168.0.0/16
allow 10.0.0.131/24                    #允许指定客户端访问本地网络
#allow 0.0.0.0/0                        #允许任何客户端访问本地网络

# Serve time even if not synchronized to a time source.
local stratum 10                   #该层表示我们距离带有附加参考时钟的计算机有多少跳。

#重新启动chrony服务
[root@Rocky8 ~]#systemctl restart chronyd

#查看时间是否实现了同步
#命令含义:sources [-v]
#This command displays information about the current time sources that chronyd is 
#accessing.(这个命令可以显示chronyd正在访问的当前时间源信息)
#The -v option enables a verbose output. In this case, 
#extra caption lines are shown as a reminder of the meanings of the columns.
#(-v选项启用详细输出。在这种情况下,显示额外的标题行来提示列的含义。)

[root@Rocky8 ~]#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               
===============================================================================
^* 120.25.115.20                 2   6    17    44   +349us[-3441us] +/-   22ms
^+ 203.107.6.88                  2   6    17    45  -1281us[-5071us] +/-   20ms
^- 114.118.7.163                 2   6   243    36   +716us[ +716us] +/-   72ms

5.2配置客户端(作用是连接服务器端)(已ubuntu为例)

[19:59:43 root@ubuntu2204 ~]#dpkg -L chrony|grep -i ".conf.d$"
/etc/chrony/conf.d

#修改配置文件(只改1项)

[20:00:43 root@ubuntu2204 ~]#vim /etc/chrony/conf.d
# See http://www.pool.ntp.org/join.html for more information.
server 10.0.0.128 iburst         #添加服务器端IP 

#重启chrony服务

[20:12:19 root@ubuntu2204 ~]#systemctl restart chronyd

#查看是否和服务器端时间同步

[20:16:45 root@ubuntu2204 ~]#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               
===============================================================================
^* 10.0.0.128                    3   6     7     2   -378ns[  -13ms] +/-   24ms



6.总结DNS域名三级结构 

(1)根域: 全球根服务器节点只有13个。

(2)顶级域:组织域(com, edu, mil, gov, net, org, int,)、国家域(.cn, .ca, .hk, .tw)、反向域 

(3)二级域名:magedu.com

(4)三级域名:study.magedu.com

最多可达到127级域名

7.总结DNS服务的工作原理,涉及递归和迭代查询原理

文字总结DNS服务工作原理:(以访问www.magedu.org为例)

递归查询:用户访问www.magedu.org,DNS代理解析服务器收到用户的递归查询后,如果答案在其缓存中,则立即响应,或者访问DNS层次结构以获得答案。

迭代查询:DNS代理解析服务器总是从根服务器开始,并发送一个迭代查询。如果响应是一个答案或一个错误,它们将立即返回给用户(并缓存以备将来使用)。如果响应是引用则表示被查询的服务器不知道答案,但它将DNS代理解析服务器引用到权威名称服务器,因此,如果问题是针对域名www.magedu.org,发送迭代查询的根服务器将在权威部分中添加.com权威名称服务器的列表。DNS代理解析服务器从权威部分中选择一个服务器,并向其发送迭代查询。类似地,.org权威名称服务器会发送一个包含magedu.com权威名称服务器列表的推荐。这个过程沿着DNS层次继续下去,直到收到一个答案或一个错误,此时用户的原始递归查询将被发送一个响应。

DNS缓存:DNS缓存就是为了减少递归查询过程,让用户更快的获取请求结果。解析数据存储在靠近发起请求的客户端的位置,也可以说DNS数据是可以缓存在任意位置。

8.实现私有DNS,供本地网络主机作DNS递归查询

dig :DNS 查找工具

dig是一个用于查询DNS名称服务器的灵活工具。它执行DNS查找并显示从所查询的名称服务器返回的答案。大多数DNS管理员使用dig来解决DNS问题,因为它具有灵活性、易用性和清晰的输出。其他查找工具的功能往往不如dig。

dig [@server] [-b address] [-c class] [-f filename] [-k filename] [-m] [-p port#] [-q name] [-t type] [-v] [-x addr] [-y [hmac:]name:key] [ [-4] | [-6] ] [name] [type] [class] [queryopt…]

dig [-h]

dig [global-queryopt…] [query…]

dig的典型调用如下所示:   

dig @server name type

sever:

要查询的名称服务器的名称或IP地址。它可以是带点的十进制形式的IPv4地址,也可以是冒号分隔形式的IPv6地址。当提供的server参数是主机名时,dig会在查询该名称服务器之前解析该名称。

如果没有提供server参数,dig会查询/etc/resolv.conf;如果在那里找到一个地址,它就查询该地址的名称服务器。如果使用了-4或-6选项,则只尝试对应传输的地址。如果没有找到可用的地址,dig将查询发送到本地主机。将显示来自响应的名称服务器的应答。

name:

要查找的Resource record(资源记录)中的名字

-x addr:

这个选项简化了映射IP地址到名称的反向查询,这个addr是一个带点的十进制的IPV4格式,后者是以冒号分隔的IPV6地址。当使用-x选项是,不需要提供name, class, and type 参数,Dig会自动查找类似94.0.192 .in-addr这样的名称。并将查询类型和类别分别设置为PTR和IN。在IP6下使用nibble格式查找IPv6地址。

-t type:

这个选项表明要查询的资源记录类型,它可以是任意有效的询问类型。如果它是在bind9里提供的资源记录类型,它可以通过类型助记符来给定(例如NS或AAAA),默认询问的类型是A,除非提供了-x来表示要反向查询。通过指定type=AXFR来请求传输一个专区(zone)数据。当请求传输增量专区数据时 ,设置type中的ixfr=N(序列号)。增量的zone(专区)包含从自专区SOA记录是N开始做出的所有改变。

host:DNS查找工具

语法:

host [-aACdlnrsTUwv] [-c class] [-N ndots] [-p port] [-R number] [-t type] [-W wait] [-m flag] [ [-4] | [-6] ] [-v] [-V] {name} [server]

描述:

host是一个执行DNS查询的简单实用程序,它通常用于将名称转换为IP地址,反之亦然。如果没有给出参数或选项,host会打印出命令行参数和选项的简短摘要。

name是要查找的域名。它也可以是一个带点的十进制的IPv4地址或冒号分隔的IPv6地址,在这种情况下,主机默认对该地址执行反向查找。server是一个可选参数,它是主机应该查询的名称服务器的名称或IP地址,而不是/etc/resolv.conf中列出的服务器。

named-checkconf : 名称配置文件的语法检查工具

语法:

named-checkconf [-chjlvz] [-p [-x ]] [-t directory] {filename}

描述:

检查名称配置文件中的语法,而不是语义。这个文件连带着它包含的其他文件都可以进行解析和语法检查。如果没有指定文件,默认读取/etc/name.conf文件

注意:

在独立的解析环境读取的名称文件,比如rndc.key和bind.keys文件,不会自动通过named-checkconf工具检查这些文件中可能导致named服务不能正常运行的配置错误,即使named-checonf显示的是没问题。

named-checkzone :专区(zone)文件准许工具

语法:

named-checkzone [-d] [-h] [-j] [-q] [-v] [-c class] [-C mode] [-f format] [-F format] [-J filename] [-i mode] [-k mode] [-m mode] [-M mode] [-n mode] [-l ttl] [-L serial] [-o filename] [-r mode] [-s style] [-S mode] [-t directory] [-T mode] [-w directory] [-D] [-W mode] {zonename} {filename}

描述:

named-checkzone 检查专区(zone)文件的语法和完整性。当加载专区(zone)时,它执行和named一样的检查。在专区(zone)文件配置到名称服务器之前,用named-checkzone是很有用的。 

rndc :名称服务器控制程序

语法:

rndc [-b source-address] [-c config-file] [-k key-file] [-s server] [-p port] [-q] [-r] [-V] [-y server_key] [[-4] | [-6]] {command}

描述:

rndc控制操作名称服务器 如果调用rndc命令时后面没有选项或者参数,它将打印可支持的命令和有用的选项和它们的参数. 

命令:

flush:

清除服务器缓存

reload:
加载配置文件和专区(zone)

 正向解析:rocky作为名称解析服务器,ubuntu作为客户端,另一台rocky提供hppt服务(让windos通过名称解析服务器获取另一台rocky的IP地址进而登录网页) 

#安装bind相关软件包
[root@Rocky8 ~]#yum -y install bind bind-utils bind-libs

#查询bind软件包清单  
[root@Rocky8 ~]#rpm -ql bind

/etc/named.conf                        #配置文件
/etc/named.rfc1912.zones               #专区配置文件
/usr/lib/systemd/system/named.service  #服务文件
/var/named                             #相关数据存放目录
/var/named/named.ca                    #根域数据文件

#查看一下服务文件
[root@Rocky8 ~]#cat /usr/lib/systemd/system/named.service

ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS   #用户名字:named

#设置开机自启并立即启动
[root@Rocky8 ~]#systemctl enable --now named 

Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.

#查看named服务开的监听端口
[root@Rocky8 ~]#ss -ntulp

Netid      Local Address:Port              Process
  
udp          127.0.0.1:53          users:(("named",pid=27949,fd=512)) #专门负责地址解析
tcp          127.0.0.1:53          users:(("named",pid=27949,fd=21))
tcp          127.0.0.1:953         users:(("named",pid=27949,fd=23)) 

#修改rocky网卡配置文件。
[root@Rocky8 ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.128
PREFIX=24
GATEWAY=10.0.0.2
DNS1=127.0.0.1                          #添加DNS指向自己

#重新加载网卡信息及启动网卡
[root@Rocky8 ~]#nmcli connection reload
[root@Rocky8 ~]#nmcli connection up eth0

#查看NDS
[root@Rocky8 ~]#cat /etc/resolv.conf

# Generated by NetworkManager
search zhang.stu
nameserver 127.0.0.1

#本机目前已可以借助自己的DNS完成解析
[root@Rocky8 ~]#ping www.baidu.com

PING www.a.shifen.com (220.181.38.150) 56(84) bytes of data.
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=1 ttl=128 time=17.2 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=2 ttl=128 time=12.0 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=3 ttl=128 time=14.1 ms

#修改named服务配置文件(修改2项)是为了让远程客户端能通过本主机DNS解析
[root@Rocky8 ~]#vim /etc/named.conf

listen-on port 53 { any; };    #也可以用//注销此行
allow-query     { any; };      #也可以用//注销此行

#检查修改配置文件以后的语法问题
[root@Rocky8 ~]#named-checkconf

#搭建解析数据库:

#创建zone(专区)文件及加640权限和加named组
[root@Rocky8 ~]#cd /var/named
[root@Rocky8 /var/named]#touch zhangyongbiao.com.zone
[root@Rocky8 /var/named]#chmod 640 zhangyongbiao.com.zone
[root@Rocky8 /var/named]#chgrp named zhangyongbiao.com.zone
[root@Rocky8 /var/named]#ll zhangyongbiao.com.zone
-rw-r----- 1 root named 0 Dec 14 15:16 zhangyongbiao.com.zone

#编辑zone(专区)文件
[root@Rocky8 /var/named]#vim zhangyongbiao.com.zone

$TTL 1D
@           IN  SOA master hostmaster ( 1214 3h 10m 1d 6h )
            NS  master
master      A   10.0.0.128
www         A   10.0.0.135
joe         A   192.168.1.0
db          A   192.168.100.0

#检查zone(专区)的完整性和语法
[root@Rocky8 /var/named]#named-checkzone zhangyongbiao.com /var/named/zhangyongbiao.com.zone

zone zhangyongbiao.com/IN: loaded serial 1214
OK

#编辑zone(专区)配置文件
[root@Rocky8 /var/named]#vim /etc/named.rfc1912.zones

zone "zhangyongbiao.com" IN {
        type master;
        file "zhangyongbiao.com.zone";
};

#检查配置文件的语法是否有问题
[root@Rocky8 /var/named]#named-checkconf /etc/named.rfc1912.zones

#加载配置文件和zone(专区)
[root@Rocky8 /var/named]#rndc reload

server reload successful



#ubuntu先安装bind9-utils(需要用到里面的dig或host命令)
[16:22:19 root@ubuntu2204 ~]#apt -y install bind9-utils

#修改ubuntu的网卡配置(ubuntu作为远程客户端)
[16:12:21 root@ubuntu2204 ~]#vim /etc/netplan

network:
  ethernets:
    eth0:
      #      dhcp4: true
      addresses: [10.0.0.131/24]
      nameservers: 
        addresses: [10.0.0.128]      #DNS地址指向主服务器的IP
  version: 2

#ubuntu网卡生效
[16:18:31 root@ubuntu2204 ~]#netplan apply

#ubuntu查看网关
[16:19:27 root@ubuntu2204 ~]#resolvectl status

Global
       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub

Link 2 (eth0)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.0.0.128
       DNS Servers: 10.0.0.128


#ubuntu客户端能够通过DNS解析服务器(rocky)去解析了。

#解析www.zhangyongbiao.com
[15:55:07 root@ubuntu2204 ~]#host www.zhangyongbiao.com
www.zhangyongbiao.com has address 10.0.0.135

#解析joe.zhangyongbiao.com
[15:55:26 root@ubuntu2204 ~]#host joe.zhangyongbiao.com
joe.zhangyongbiao.com has address 192.168.1.0

#解析db.zhangyongbiao.com
[15:57:02 root@ubuntu2204 ~]#host db.zhangyongbiao.com
db.zhangyongbiao.com has address 192.168.100.0

[16:24:21 root@ubuntu2204 ~]#host www.baidu.com

www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 220.181.38.149
www.a.shifen.com has address 220.181.38.150


#配置另一台rocky,能让windos通过解析服务登录网页

#安装httpd软件
[root@Rocky8 ~]#yum -y install httpd

#写入信息
[root@Rocky8 ~]#echo "welcome to Baoding" > /var/www/html/index.html

9.总结DNS服务器类型,解析答案,正反解析域,资源记录定义

 了解example.com base zone file(域名基本专区文件):

以下是域example.com的完整专区文件,它说明了许多常见的特征。在文件的合适位置对这些特征进行了解释。专区文件由RR(资源记录)组成。RR(资源记录)面试了专区的特征或属性。

owner name

RR所创建的域

The @ (at-sign):

当在标签或名称字段使用时,@符号表示当前的源。在专区文件的开始,就是域名再加上点(.)。

每一行的开始都给出了RR的所有者,如果以空行开头,意思就是和先前的RR所有者一样。为了可读性,通常包含空行。

TTL:

RR的生存时间。该字段是一个32位整数,以秒为单位,在解析器缓存RRs时主要使用。TTL描述了一个RR在失效之前可以缓存多长时间。

The $TTL Directive:

这将为后续未定义的TTL设置默认的生存时间(Time-To-Live, TTL)。有效的ttl值的范围是0 ~ 2147483647秒。

IN:The Internet. The only widely class used today.
互联网。今天唯一广泛使用的类别。

SOA:marks the start of a zone of authority
标志权威专区的开始

A:a host address
主机地址

NS:an authoritative name server
权威名称服务器

CNAME:the canonical name for an alias

别名的标准名称

MX:mail exchange

邮件交换

@         IN      SOA   ns1.example.com. hostmaster.example.com. (
 6                                2003080800 ; serial number
 7                                12h        ; refresh
 8                                15m        ; update retry
 9                                3w         ; expiry
10                                2h         ; minimum
11                                )

serial number:

备用名称服务器定期读取(3和4)SOA RR。时间间隔由开始授权(SOA) RR的刷新参数定义。

备用名称服务器将从主名称服务器接收到的SOA RR的序列号参数与当前区域数据的SOA RR中的序列号进行比较。

如果接收到的序列号在算术上比当前序列号大,则从服务器使用AXFR或IXFR(取决于主服务器和从服务器的配置)发起区域传输(5),使用TCP在端口53(6)上。

refresh:

专区中备用服务器读取或轮询主服务器的时间间隔。SOA RR最为推荐的专区刷新时间是整小时的倍数,以减少流量负载。

update retry:

重试更新:备用名称服务器再次同步主名称服务器的时间

expiry:

到期:指定服务器在正常过期后保留记录的最长时间,以便将它们作为过期记录返回。默认为1天。允许的最小值是1秒。

minimum:

SOA中最后一个字段是“解析域名失败”的缓存生存时间。控制从本服务器上响应其他服务器上缓存的错误域名的时间 。这个时间最大为3小时(3h)。

 反向解析:rocky作为名称解析服务器,ubuntu作为客户端

#在名称解析服务器上创建一个10网段的专区文件
[root@Rocky8 /var/named]#vim 10.0.0.zone
$TTL 1D
@             IN   SOA   master   hostmaster ( 1214 3H 10M 1D 3H )
                   NS    master
master        IN   A     10.0.0.128
200           IN   PTR   www.zhangyongbiao.com.
30            IN   PTR   db.zhangyongbiao.com.
150           IN   PTR   joe.zhangyongbiao.com.

#检查专区语法和完整性
[root@Rocky8 /var/named]#named-checkzone 10.0.0 /var/named/10.0.0.zone 

zone 10.0.0/IN: loaded serial 1214
OK

#编辑专区配置文件
[root@Rocky8 /var/named]#vim /etc/named.rfc1912.zones

zone "0.0.10.in-addr.arpa" IN {
        type master;
        file "10.0.0.zone";
};

#检查配置文件的语法是否正确
[root@Rocky8 /var/named]#named-checkconf

#ubuntu客户端反向解析ipv4
[17:13:43 root@ubuntu2204 ~]#host 10.0.0.200
200.0.0.10.in-addr.arpa domain name pointer www.zhangyongbiao.com.

[17:13:52 root@ubuntu2204 ~]#host 10.0.0.30
30.0.0.10.in-addr.arpa domain name pointer db.zhangyongbiao.com.

[18:22:46 root@ubuntu2204 ~]#host 10.0.0.150
150.0.0.10.in-addr.arpa domain name pointer joe.zhangyongbiao.com.

10.实现DNS主从同步

#主从同步:在加一台centos作为从节点DNS服务器

#修改从节点NDS服务器配置文件
[root@CentOS ~]#vim /etc/named.conf

//      listen-on port 53 { any; };   #注销
//      allow-query     { any; };     #注销

#修改从节点服务器centos的zone(专区)文件
[root@CentOS ~]#vim /etc/named.rfc1912.zones

zone "zhangyongbiao.com" IN {
        type slave;
        masters { 10.0.0.128; };                   #注意,这是masters(末尾加s)
       file "slaves/zhangyongbiao.com.zone.slave";
};                                                 #存储从主服务器过来的数据目录


#检查语法
[root@CentOS ~]#named-checkconf

#启动服务并立即启动
[root@CentOS ~]#systemctl enable --now named

#修改主节点服务器rocky的配置文件
[root@Rocky8 /var/named]#vim zhangyongbiao.com.zone

$TTL 1D
@             IN   SOA   master   hostmaster ( 1215 3H 10M 1D 3H ) #序列号要加1
                   NS    master
                   NS    slave             #添加从节点服务器名称
master        IN   A     10.0.0.128
slave         IN   A     10.0.0.130        #指向所在的IP地址
www           IN   A     10.0.0.100
joe           IN   A     1.1.1.1
db            IN   A     192.168.1.0
jok           IN   A     2.2.2.2

#重启主节点服务器rocky
[root@Rocky8 /var/named]#systemctl restart named


#从ubuntu客户端添加从节点服务器的IP
[21:22:47 root@ubuntu2204 ~]#vim /etc/netplan
# This is the network config written by 'subiquity'
network:
  ethernets:
    eth0:
      #      dhcp4: true
      addresses: [10.0.0.131/24]
      nameservers: 
        addresses: [10.0.0.128]                 #主节点DNS服务器IP
        addresses: [10.0.0.130]                 #从节点DNS服务器IP
  version: 2

#ubuntu网卡生效
[21:27:08 root@ubuntu2204 ~]#netplan apply


#从节点服务器完成解析域名
[21:51:55 root@ubuntu2204 ~]#dig joe.zhangyongbiao.com @10.0.0.130

;; ANSWER SECTION:
www.zhangyongbiao.com.	86400	IN	A	10.0.0.100

;; AUTHORITY SECTION:
zhangyongbiao.com.	86400	IN	NS	master.zhangyongbiao.com.

;; ADDITIONAL SECTION:
master.zhangyongbiao.com. 86400	IN	A	10.0.0.128

;; Query time: 0 msec
;; SERVER: 10.0.0.130#53(10.0.0.130) (UDP)
;; WHEN: Thu Dec 15 21:58:23 CST 2022
;; MSG SIZE  rcvd: 131

10.1加强安全性:虽然实现了主从DNS服务器数据同步,但是安全性还是不能保证。因为从其他客户端可以通过用dig -t AXFR命令来获取主或从DNS服务器上的数据;以下是举例:ubuntu还是客户端,它直接从主服务器或从从服务器传输zone(专区)数据

#ubuntu作为客户端。不用通过主或从服务器解析,而是把主服务器上的数据全部传输过来

[10:48:12 root@ubuntu2204 ~]#dig -t AXFR zhangyongbiao.com @10.0.0.128

; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> -t AXFR zhangyongbiao.com @10.0.0.128
;; global options: +cmd
zhangyongbiao.com.	86400	IN	SOA	master.zhangyongbiao.com. hostmaster.zhangyongbiao.com. 1215 10800 600 86400 10800
zhangyongbiao.com.	86400	IN	NS	master.zhangyongbiao.com.
zhangyongbiao.com.	86400	IN	NS	slave.zhangyongbiao.com.
db.zhangyongbiao.com.	86400	IN	A	192.168.1.0
joe.zhangyongbiao.com.	86400	IN	A	1.1.1.1
jok.zhangyongbiao.com.	86400	IN	A	2.2.2.2
master.zhangyongbiao.com. 86400	IN	A	10.0.0.128
slave.zhangyongbiao.com. 86400	IN	A	10.0.0.130
www.zhangyongbiao.com.	86400	IN	A	10.0.0.100

#也可以从从节点服务器上传输专区数据
[10:49:30 root@ubuntu2204 ~]#dig -t AXFR zhangyongbiao.com @10.0.0.130

; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> -t AXFR zhangyongbiao.com @10.0.0.130
;; global options: +cmd
zhangyongbiao.com.	86400	IN	SOA	master.zhangyongbiao.com. hostmaster.zhangyongbiao.com. 1215 10800 600 86400 10800
zhangyongbiao.com.	86400	IN	NS	master.zhangyongbiao.com.
zhangyongbiao.com.	86400	IN	NS	slave.zhangyongbiao.com.
db.zhangyongbiao.com.	86400	IN	A	192.168.1.0
joe.zhangyongbiao.com.	86400	IN	A	1.1.1.1
jok.zhangyongbiao.com.	86400	IN	A	2.2.2.2
master.zhangyongbiao.com. 86400	IN	A	10.0.0.128
slave.zhangyongbiao.com. 86400	IN	A	10.0.0.130
www.zhangyongbiao.com.	86400	IN	A	10.0.0.100
zhangyongbiao.com.	86400	IN	SOA	master.zhangyongbiao.com. hostmaster.zhangyongbiao.com. 1215 10800 600 86400 10800

10.2解决办法:在主和从DNS服务器的专区(zone)文件或配置文件的option中指定allow-transfer。

#修改主DNS服务器配置文件
[root@Rocky8 /var/named]#vim /etc/named.conf

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { any; };
        allow-transfer  { 10.0.0.130; };          #加入只允许从节点传输数据的权限

#修改从NDS服务器配置文件
[root@CentOS /var/named]#vim /etc/named.conf

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { any; };
        allow-transfer  { none; };                  #添加不允许传输的权限

#已经不能直接从主从DNS服务器传输数据了
[10:51:11 root@ubuntu2204 ~]#dig -t AXFR zhangyongbiao.com @10.0.0.128

; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> -t AXFR zhangyongbiao.com @10.0.0.128
;; global options: +cmd
; Transfer failed.

[11:14:22 root@ubuntu2204 ~]#dig -t AXFR zhangyongbiao.com @10.0.0.130

; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> -t AXFR zhangyongbiao.com @10.0.0.130
;; global options: +cmd
; Transfer failed.

11.泛域名和子域应用 

#在主NDS服务器上编辑zone的RR(资源记录)文件
[root@Rocky8 /var/named]#vim zhangyongbiao.com.zone

$TTL 1D
@             IN   SOA   domain1   hostmaster ( 1219 3H 10M 1D 3H )
                   NS    master
sz                 NS    ns1            #设置sz子域名的名称服务器
master        IN   A     10.0.0.128
ns1           IN   A     10.0.0.135     #指定名称服务器的IP 
www           IN   A     10.0.0.245
*             IN   A     8.8.8.8         #域名名称的通配符
@             IN   A     6.6.8.8         #直接搜索域名就可以


#创建sz子域文件
[root@Rocky8 /var/named]#touch sz.zhangyongbiao.com.zone         #建立RR(资源记录文件)
[root@Rocky8 /var/named]#chmod 640 sz.zhangyongbiao.com.zone     #改权限
[root@Rocky8 /var/named]#chgrp named sz.zhangyongbiao.com.zone   #改所属组

#编辑sz子域文件
[root@Rocky8 /var/named]#vim /var/sz.zhangyongbiao.com.zone

$TTL 1D
  
@             IN  SOA  stubdomain  hostmaster ( 1 3H 10M 1D 3H )
              IN  NS   master
master        IN  A    10.0.0.135
www           IN  A    6.6.6.8       #www.sz.zhangyongbiao.com对应的IP地址

#改sz子域的相关配置文件
[root@Rocky8 /var/named]#vim /etc/named.conf   
 
options {
        listen-on port 53 { any; };  #修改项
        allow-query     { any; };    #修改项

#修改sz子域的专区文件
[root@Rocky8 /var/named]#vim /etc/named.rfc1912.zones

zone "sz.zhangyongbiao.com" IN {
        type master;
        file "sz.zhangyongbiao.com.zone";
};

#启动sz子域DNS服务器
[root@Rocky8 /var/named]#systemctl enable --now named

#测试泛域名
[19:16:42 root@ubuntu2204 ~]#host 1233.zhangyongbiao.com

1233.zhangyongbiao.com has address 8.8.8.8

#测试泛域名
[19:50:03 root@ubuntu2204 ~]#host zhangyongbiao.com
zhangyongbiao.com has address 6.6.8.8

#测试sz子域
[19:51:51 root@ubuntu2204 ~]#host www.sz.zhangyongbiao.com
www.sz.zhangyongbiao.com has address 6.6.6.8

11.1配置转发DNS服务器 :rocky作为转发服务器,centos作为主NDS名称服务器,ubuntu作为客户端 

#先配置NDS转发服务器

#修改配置文件(改4项)
[root@Rocky8 /var/named]#vim /etc/named.conf
options {
                                            #first表示先转到主DNS,没结果在转到根服务器。      
            forward only;                   #only表示只转发到主DNS服务器。而不去根服务器
            forwarders      {10.0.0.130;};  #主DNS服务器IP地址

dnssec-enable no;                           #这项都改成NO
dnssec-validation no;                       #这项也改成NO

#重新加载文件
[root@Rocky8 /var/named]#rndc reload      #或者systemctl restart named




#配置主DNS名称服务器

#创建,修改权限和组
[root@CentOS /var/named]#touch zhangyongbiao.local.zone
[root@CentOS /var/named]#chmod 640 zhangyongbiao.local.zone
[root@CentOS /var/named]#chgrp named zhangyongbiao.local.zone

#编辑专区RR(资源记录)文件
[root@CentOS /var/named]#vim zhangyongbiao.local.zone

$TTL 1D
@           IN  SOA  domain hostmaster ( 17 3H 10M 1D 3H )
            IN  NS   master
master      IN  A    10.0.0.130
www         IN  A    8.8.6.6           #最后解析www.zhangyongbiao.local的ip为8.8.6.6


#编辑专区文件
[root@CentOS /var/named]#vim /etc/named.rfc1912.zones

zone "zhangyongbiao.local" IN {
       type master;
       file "zhangyongbiao.local.zone";
};


#重新加载文件
[root@Rocky8 /var/named]#rndc reload      #或者systemctl restart named



#ubuntu客户端进行测试,通过rocky转发服务器到主DNS名称服务器在解析www.zhangyongbiao.local的IP
[root@ubuntu2204 ~]#dig www.zhangyongbiao.local @10.0.0.128   #IP是rocky转发服务器的

;; ANSWER SECTION:
www.zhangyongbiao.local. 84936	IN	A	8.8.6.6

;; AUTHORITY SECTION:
zhangyongbiao.local.	84936	IN	NS	master.zhangyongbiao.local.

;; ADDITIONAL SECTION:
master.zhangyongbiao.local. 84936 IN	A	10.0.0.130

;; Query time: 0 msec
;; SERVER: 10.0.0.128#53(10.0.0.128) (UDP)
;; WHEN: Sat Dec 17 22:23:52 CST 2022
;; MSG SIZE  rcvd: 133

12.基于acl实现智能DNS

12.1Access Control Lists:访问控制列表

1.访问控制列表是可以被设置昵称的地址匹配列表,以便在以后应用  allow-notifyallow-queryallow-query-onallow-recursionblackholeallow-transfer, match-clients这些功能。

2.ACL可以给与那些访问名称服务器的用户更好的控制,避免大量的IP地址列表去搞乱配置文件。

12.2 view Block Definition and Usage:查看块定义和用法

view语句是BIND9里面一个强大的功能。它可以让名称服务器去依据请求者的不同去回答NDS查询。它对于实现DNS拆分设置是非常好用的,而不用去运行很多的服务器

在视图语句中定义的区域只能被与视图匹配的客户端访问。通过在多个视图中定义相同名称的区域,可以将不同的区域数据赋予不同的客户端

如果配置文件中没有view语句,则会在in类中自动创建一个与任何客户端匹配的默认视图。

在配置文件顶层指定的任何zone语句都被认为是这个默认视图的一部分,options语句应用于默认视图。如果清晰地提供了view语句,则所有的zone语句都必须发生在view语句中

12.3范例:

rocky是DNS服务器,centos是客户端 

#修改配置文件(增加acl和view语句)
[root@Rocky8 /var/named]#vim /etc/named.conf

acl beijingnet { 
      10.0.0.0/24;
};                          #只允许北京的10.0.0.0网段去访问DNS名称服务器,也可以在添加其他网段
acl shanghainet { 
      192.168.10.0/24;
};                          #只允许上海的192.168.10.0网段去访问DNS名称服务器,也可添加其他网段


options {
        listen-on port 53 { any; };    #也可以用"//"注销 
        allow-query     { any; };       #也可以用"//"注销

view beijingview {  
       match-clients { beijingnet; };                  #调用acl
       include "/etc/named.rfc1912.zones.bj";
};                                                     #增加beijingview语句

view shanghaiview { 
       match-clients { shanghainet; };                 #调用acl
       include "/etc/named.rfc1912.zones.sh";
};                                                     #增加shanghaiview语句



#先把原/etc/named.conf中单独的"."域专区剪切到/etc/named.frc1912.zones中来。(因为view语句不允许有单独的zone存在)。在"cp -p"为.bj和.sh文件。进行内容添加。

#修改北京区域文件
[root@Rocky8 /var/named]#vim /etc/named.rfc1912.zones.bj

zone "." IN {
        type hint;
        file "named.ca";
};                                         
                                           
zone "zhangyongbiao.com" IN {
       type master;
       file "zhangyongbiao.com.zone.bj";     #添加域名文件
};                                           

#然后再修改上海区域文件
[root@Rocky8 /var/named]#vim /etc/named.rfc1912.zones.sh

zone "." IN {
        type hint;
        file "named.ca";
};

zone "zhangyongbiao.com" IN {
       type master;
       file "zhangyongbiao.com.zone.sh";     #添加域名文件
};


#编辑北京地区的zone文件
[root@Rocky8 /var/named]#vim  zhangyongbiao.com.zone.bj

$TTL 1D
@           IN   SOA  secdomain  hostmaster ( 1220 3H 10M 1D 3H )
            IN   NS    master
master      IN   A    10.0.0.10
www         IN   A    6.6.6.6     #北京区域10.0.0.0网段用户访问DNS,得到的地址是6.6.6.6


#编辑上海地区的zone文件
[root@Rocky8 /var/named]#vim  zhangyongbiao.com.zone.sh

$TTL 1D
@           IN   SOA  secdomain  hostmaster ( 1220 3H 10M 1D 3H )
            IN   NS    master
master      IN   A    10.0.0.10
www         IN   A    8.8.8.8      #上海区域192.168.10.0网段用户访问DNS,得到的地址是8.8.8.8

服务器端和客户端都要添加网卡“仅主机”模式,为了测试192.168.10.0网段的用户请求DNS 

[root@CentOS ~]#dig www.zhangyongbiao.com @10.0.0.10

;; ANSWER SECTION:
www.zhangyongbiao.com.	86400	IN	A	6.6.6.6                #完成

;; AUTHORITY SECTION:
zhangyongbiao.com.	86400	IN	NS	master.zhangyongbiao.com.

;; ADDITIONAL SECTION:
master.zhangyongbiao.com. 86400	IN	A	10.0.0.10

;; Query time: 0 msec
;; SERVER: 10.0.0.10#53(10.0.0.10)
;; WHEN: Tue Dec 20 15:19:25 CST 2022
;; MSG SIZE  rcvd: 131


[root@CentOS ~]#dig www.zhangyongbiao.com @192.168.10.130

;; ANSWER SECTION:
www.zhangyongbiao.com.	86400	IN	A	8.8.8.8                #完成

;; AUTHORITY SECTION:
zhangyongbiao.com.	86400	IN	NS	master.zhangyongbiao.com.

;; ADDITIONAL SECTION:
master.zhangyongbiao.com. 86400	IN	A	10.0.0.10

;; Query time: 0 msec
;; SERVER: 192.168.10.130#53(192.168.10.130)
;; WHEN: Tue Dec 20 15:20:39 CST 2022
;; MSG SIZE  rcvd: 131

13.总结防火墙分类

1.按保护范围划分:

主机防火墙:服务范围为当前一台主机

网络防火墙:服务范围为防火墙一侧的局域网 按实现方式划分:

2.按实现方式划分:

硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,

软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront TMG

3.按网络协议划分:

网络层防火墙:OSI模型下四层,又称为包过滤防火墙

应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层

14.总结iptable 5表5链,基本使用,扩展模块 

14.1总结iptable 5表5链

5表:

(1)filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,也是默认表

(2)nat:network address translation 地址转换

(3)mangle:修改数据标记位规则表

(4)raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度

(5)security:用于强制访问控制(MAC)网络规则,由Linux安全模块 

5链:

PREROUTING    INPUT   FORWARD   OUTPUT   POSTROUTING

14.2 基本使用

iptables  -vnL:查看详细的规则列表

iptables  -vnL --line-number:显示规则列表中的序号

iptables   -S:查看已选链中的规则

iptables   -I:在选定的链中插入规则同时给定序号

iptables  -D:删除选定链中的规则

-s:源IP地址

-d:目标IP地址

-p:指定协议

-i:报文流入接口

-o:报文流出接口

14.3扩展模块(用-m来指定扩展模块)

隐式扩展:tcp协议扩展+udp协议扩展+icmp协议扩展(用-p就可以,不需要-m)

显示扩展:

(1)multiport扩展模块:以离散方式定义多端口匹配,最多指定15端口

(2)iprange扩展模块:指明连续的(不是整个网络)ip地址范围

(3)mac扩展模块:指定源mac地址

(4)string扩展模块:对报文中的应用层数据做字符串模式匹配检测

(5)time扩展模块:根据将报文到达的时间与指定的时间范围进行匹配

(6)connlimit扩展模块:根据每客户端IP并发连接数数量匹配

(7)limit扩展模块:基于收发报文的速度做匹配,令牌桶过滤器

(8)connlimit扩展模块:根据客户端IP 并发连接数量匹配

(9)limit扩展模块:基于收发报文的速度做匹配。令牌桶过滤器

(10)state扩展模块:可以根据“链接跟踪机制”去检查连接的状态。有5种状态:NEW ;ESTABLISHED;RELATED;INVALID;UNTRACKED   

15.总结iptables规则优化实践,规则保存和恢复 

15.1规则优化实践

(1)安全放行所有入站和出站状态为ESTABLISHED状态连接,建议放在第一条,效率最高

(2)谨慎放行入站的新请求

(3)有特殊目的的限制访问功能,要在放行规则之前加以拒绝

(4)同类规则(访问同一应用,比如:http),匹配范围小的放在前面,用于特殊处理

(5)不同类规则(访问不同应用)匹配范围大的放在前面,效率最高

(6)应该将那些可由一条规则能够描述的多个规则合并为一条,减少规则数量

(7)设置默认策略,建议白名单(只放行特定连接)

15.2规则保存和恢复

 第一种方法:

规则写好以后,用iptables-save > /data/iptables-rules(自定义文件夹)

设置开机自启:vim /etc/rc.local

                         iptables-restore < /data/iptables-rules

加执行权限:    chmod +x rc.local

第二种方法:

安装iptables服务:yum -y install iptables.services

规则写好以后,用iptables-save > /etc/sysconfig/iptables保存到配置文件。 (前提是把原配置文件中的规则都删除)

设置开机自启:systemctl enable --now iptables

16.总结NAT转换原理,DNAT/SDNAT原理,并自行设计架构实现DNAT/SNAT。 

16.1总结DNAT/SNAT转换原理:

SNAT:源地址转换,用于私网访问公网

DNAT:目标地址转换,用于公网访问私网

16.2自行设计架构范例:

模拟ubuntu作为外部公网端(仅主机模式,eth0的ip为192.168.10.8);

模拟rocky作为防火墙(NAT模式,eth0的ip为10.0.0.10;仅主机模式,eth1的ip为                  192.168.10.130);

 模拟centos作为内部私网端(NAT模式,eth0的ip为10.0.0.110)

#在ubuntu上安装nginx(做测试用)
[20:29:35 root@ubuntu2204 ~]# apt -y install nginx
[20:29:35 root@ubuntu2204 ~]# echo website > /var/www/html/index.html

#在centos上安装httpd(做测试用)
[root@CentOS ~]# yum -y install httpd
[root@CentOS ~]# echo welcome lan > /var/www/html/index.html



#ubuntu的网卡配置(不加网关,因为是直连网段)
[20:29:35 root@ubuntu2204 ~]#vim /etc/netplan/00-installer-config.yaml

network:
  ethernets:
    eth0:
      #      dhcp4: true
      addresses: [192.168.10.8/24]
      routes:
      - to: 10.0.0.0/24
        #        via: 192.168.10.130


#rocky的网卡配置(两块网卡)
[root@Rocky8 ~]#ip a

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:2a:77:de brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.10/24 brd 10.0.0.255 scope global noprefixroute eth0
       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:2a:77:e8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.130/24 brd 192.168.10.255 scope global dynamic noprefixroute eth1
       valid_lft 956sec preferred_lft 956sec
    inet6 fe80::6d5c:ccda:f913:485/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

#centos的网卡配置(修改IP地址和加网关)
[root@CentOS ~]#nmcli con mod eth0 ipv4.method manual ipv4.addr 10.0.0.110/24 ipv4.gateway 10.0.0.10

[root@CentOS ~]#nmcli con reload

[root@CentOS ~]#nmcli con up eth0

#实现SNAT命令(私网访问公网)
[root@Rocky8 ~]#iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j MASQUERADE

#实现DNAT命令(公网访问私网)
[root@Rocky8 ~]#iptables -t nat -A PREROUTING -d 192.168.10.130 -p tcp --dport 80 -j DNAT --to 10.0.0.110:80

#查看规则
[root@Rocky8 ~]#iptables -t nat -vnL

Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    3   180 DNAT       tcp  --  *      *       0.0.0.0/0            192.168.10.130       tcp dpt:80 to:10.0.0.110:80

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  197 14786 MASQUERADE  all  --  *      *       10.0.0.0/24         !10.0.0.0/24         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

#从私网访问公网
[root@CentOS ~]#curl 192.168.10.8

welcome to website                #完成

#从公网访问私网
[21:51:33 root@ubuntu2204 ~]#curl 192.168.10.130

welcome lan                       #完成

17.使用REDIRECT将90端口重定向80 ,并可以访问80端口的服务 

#在rocky(firewall)中先修改映射端口到centos(私网端)90端口
[root@Rocky8 ~]#iptables -t nat -R PREROUTING 1 -d 192.168.10.130 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.110:90

#在centos(私网端)用REDIRECT重定向90端口到80端口
[root@CentOS ~]#iptables -t nat -R PREROUTING 1 -d 10.0.0.110 -p tcp --dport 90 -j REDIRECT --to-ports 80

#在ubuntu(公网端)去访问rocky(firefall)端,能正常实现centos(私网端)服务
[10:28:11 root@ubuntu2204 ~]#curl 192.168.10.130
welcome lan                                         #完成

18.firewalld常见区域总结 

19.通过nft来实现暴露本机80/443/ssh服务端口给指定网络访问 

#创建mytable表(自定义)
[root@Rocky8 ~]#nft add table inet mytable

#创建mytable下的mychain链
[root@Rocky8 ~]#nft add chain inet mytable mychain { type filter hook input priority 0\; }

#增加规则限制
[root@Rocky8 ~]#nft add rule inet mytable mychain ip saddr { 10.0.0.131,10.0.0.20 } tcp dport { 80,443,ssh } accept

#查看规则集
[root@Rocky8 ~]#nft -a list ruleset
table inet mytable { # handle 1
	chain mychain { # handle 1
		type filter hook input priority filter; policy accept;
		ip saddr { 10.0.0.20, 10.0.0.131 } tcp dport { 22, 80, 443 } accept # handle 7
	}
}


#10.0.0.131可以正常访问
[21:46:14 root@ubuntu2204 ~]#curl 10.0.0.10
welcome website

#10.0.0.20可以正常访问
[root@Rocky8 ~]#curl 10.0.0.10
welcome website

#删除规则
[root@Rocky8 ~]#nft delete rule inet mytable mychain handle 7

#插入规则
[root@Rocky8 ~]#nft insert rule inet mytable mychain handle 7 tcp dport xx accept

20.总结关系型数据库相关概念,关系,行,列,主键,唯一键,域。 

(1)关系relational:关系就是二维表,其中:表中的行,列次序并不重要

(2)行row:表中每一行,又称为一条记录record

(3)列column:表中的每一列。称为属性,字段或域

(4)主键primary key:一个或多个字段的组合,用于唯一确定一个记录的字段,一张表只有一个主键,主键字段不能为空NULL

(5)唯一键unique key:一个或多个字段的组合,用于唯一确定一个记录的字段,一张表可以有多个唯一键,而且唯一键字段可以为空NULL

(6)域domain:属性的取值范围,如:年龄

21.总结关联类型,1对1,1对多,多对多关系。可以自行设计表进行解释 

(1)一对一联系:在表A中创建的字段,存储着另一个表的主键值。举例:表A中记录的是个人信息(包含身份证信息),另一个表就是身份证信息表。

(2)一对多联系:外键。举例:部门和员工,每个员工都属于某个特定部门,为了避免在某个员工上面出现不存在部门编号,则用外键来解决。

(3)多对多联系:增加第三张表。举例:学生表和课程表。每个学生可以报多门课,每门课也包括多名学生,为了更好的表示其对应关系,把学生ID和课程ID拿出来,利用主外键关系来创建第三张表。这样可以避免数据的冗余度,不过查询速度会慢一些,因为增加了查询的复杂度。

22.总结mysql设计规范

提示:根据生产环境要求,可以适当不遵守第二第三范式规则。

(1)第一范式:1NF

无重复的列,每一列都是不可分割的基本数据项,每一列中不能有多个值。即实体中的某个属性不能有多个值或者不能有重复的属性,确保每一列的独特性。除去同类型的字段,就是无重复的列

说明:第一范式是对关系模式的基本要求,不满足第一范式的数据库不是关系数据库

(2)第二范式:2NF

第二范式必须先满足第一范式,属性完全依赖于主键,非主键字段需要与整个主键有直接相关性,即非主键字段不能依赖于部分主键

(3)第三范式:3NF

第三范式必须先满足第二范式,非主键属性不依赖其他非主键属性,非主键字段间不能有从属关系

23.总结mysql多种安装方式,及安全加固,并总结mysql配置文件

23.1多种安装方式:

(1)程序包安装:

#安装mysql服务
[root@Rocky8 ~]# yum -y install mysql-server

#启动mysql服务
[root@Rocky8 ~]# systemctl enable --now mysqld

#查看mysql监听端口3306
[root@Rocky8 ~]# ss -ntlp

LISTEN  0   128     *:3306         *:*      users:(("mysqld",pid=2586,fd=25))

#查看mysql的单进程,多线程
[root@Rocky8 ~]# pstree -p

(2)二进制文件安装:

#下载二进制压缩文件
[root@Rocky8 ~]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz

#解压缩文件到指定文件夹
[root@Rocky8 ~]# tar xf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz -C /usr/local

#转到/usr/local目录
[root@Rocky8 ~]# cd /usr/local

#创建软链接
[root@Rocky8 ~]# 

ln -s mysql-8.0.31-linux-glibc2.12-x86_64/ mysql


#设置环境变量
[root@Rocky8 ~]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh

#编辑配置文件
[root@Rocky8 ~]# vim /etc/my.cnf

 [mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid

[client]
socket=/data/mysql/mysql.sock

#初始化数据库并生成空密码
[root@Rocky8 ~]# mkdir -pv /data/mysql

[root@Rocky8 ~]# mysqld --initialize-insecure --user=mysql --datadir=/data/mysql

#准备服务脚本和启动服务
[root@Rocky8 ~]# cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysql

[root@Rocky8 ~]# chkconfig --add mysqld

[root@Rocky8 ~]# systemctl enable --now mysqld 

23.2安全加固及总结mysql配置文件

安全加固:改密码+删匿名账户(CentOS7)+删测试数据库(CentOS7)

#CentOS7中查看匿名用户
[root@Centos7 ~]#mysql

MariaDB [(none)]> select user,host from mysql.user;
+------+-------------------+
| user | host              |
+------+-------------------+
| root | 127.0.0.1         |
| root | ::1               |
|      | centos7.zhang.stu |
| root | centos7.zhang.stu |
|      | localhost         |
| root | localhost         |
+------+-------------------+
6 rows in set (0.00 sec)


#CentOS7查看测试数据库
[root@Centos7 ~]#mysql

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

#交互式删除匿名用户和测试数据库及设置密码

[root@Centos7 ~]#mysql_secure_installation 

#Rocky8中只修改密码就好了

[root@Rocky8 ~]#mysqladmin password 123456

服务器端配置文件:

/etc/my.cnf   #Global选项

/etc/mysql/my.cnf #Global选项

~/.my.cnf #User-specific 选项

配置文件中修改提示符:

[root@Rocky8 ~]#vim /etc/my.cnf

[mysql]
prompt=(\\u@\\h) [\\d]>\\_

配置文件中关闭mysql的远程网络连接:

[root@Rocky8 ~]#vim /etc/my.cnf

[mysqld]
skip-networking=1 

配置文件格式:

[mysqld]

[mysqld_safe]

[mysqld_multi]

[mysql]

[mysqladmin]

[mysqldump]

[server]

[client]

格式:

parameter = value

说明:

_和- 相同

1,ON,TRUE意义相同, 0,OFF,FALSE意义相同,无区分大小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值