N71005-第五周

1. 总结openssh服务安全加固
2. 总结sudo配置文件格式,总结相关示例
3. 总结PAM架构及工作原理
4. 总结PAM配置文件格式,总结相关示例, nologin.so, limits,等模块的使用
5. 实现私有时间服务器
6. 总结DNS域名三级结构
7. 总结DNS服务工作原理,涉及递归和迭代查询原理
8. 实现私有DNS, 供本地网络主机作DNS递归查询
9. 总结DNS服务器类型,解析答案,正反解析域,资源记录定义
10. 实现DNS主从同步
11. 实现DNS子域授权
12. 基于acl实现智能DNS
13. 总结防火墙分类
14. 总结iptable 5表5链, 基本使用,扩展模块
15. 总结iptables规则优化实践,规则保存和恢复
16. 总结NAT转换原理, DNAT/SDNAT原理,并自行设计架构实现DNAT/SNAT
17. 使用REDIRECT将90端口重定向80,并可以访问到80端口的服务
18. firewalld常见区域总结
19. 通过ntftable来实现暴露本机80/443/ssh服务端口给指定网络访问
20. 总结关系型数据库相关概念,关系,行,列,主键,惟一键,域
21. 总结关联类型,1对1,1对多,多对多关系。可以自行设计表进行解释。
22. 总结mysql设计范式
23. 总结Mysql多种安装方式,及安全加固,并总结mysql配置文件

---------------------------------------------------------------------------------------------------------------

一. 总结openssh服务安全加固

修改 /etc/ssh/sshd_config配置文件
1)使用非默认端口,默认为22
2)禁止使用protocol version 1
3)限制可登录用户
4)设定空闲会话超时时长
5)仅监听特定的IP地址
6)基于口令认证时,使用强密码策略
7)使用基于密钥的认证
8)禁止使用空密码
9)禁止root用户直接登录
10)限制ssh的访问频度和并发在线数
11)定期分析日志
 

二、总结sudo配置文件格式,总结相关示例

配置文件:/etc/sudoers,/etc/sudoers.d,配置文件中支持使用通配符

sudoers授权规则格式:

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

user              host=(runas)           command

如:root        ALL=(ALL)        ALL

格式说明:

user:运行命令的用户

host:通过哪些主机

runas:以哪个用户的身份运行

command:运行哪些命令,写某个命令时需要写上命令的绝对路径

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

PAM: Pluggable Authentication Modules,插件式的验证模块,Sun公司于1995 年开发的一种与认证相关的通用框架机制。PAM 只关注如何为服务验证用用户的 API,通过提供一些动态链接库和一套统一的 API,将系统提供的服务和该服务的认证方式分开,使使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序一种认证框架,自身不做认证。

系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略;应用程序开发者通过在服务程序中使用PAM API(pam_xxxx( ))来实现对认证方法的调用;而PAM服务模块的开发者则利用PAM SPI来编写模块(主要是引出一些函数pam_sm_xxxx( )供PAM接口库调用),将不同的认证机制加入到系统中;PAM接口库(libpam)则读取配置文件,将应用程序和相应的PAM服务模块联系起来。

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

包名:pam

模块文件目录:/lib64/securiity/*.so

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

应用程序调用PAM模块的配置文件

  • 主配置文件:/etc/pam.conf,默认不存在,一般不使用主配置
  • 为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP
  • 注:如果/etc/pam.d文件存在,/etc/pam.conf将失效

-----------------------------------------------------------------------------------------------------

查看程序是否支持PAM

支持

[root@rocky ~]# ldd `which sshd` | grep libpam
        libpam.so.0 => /lib64/libpam.so.0 (0x000000fff67f8000)
[root@rocky ~]# ldd `which passwd` | grep pam
        libpam.so.0 => /lib64/libpam.so.0 (0x000000fff5fb8000)
        libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x000000fff5fac000)

不支持

[root@rocky ~]# ldd /usr/sbin/httpd | grep pam

-----------------------------------------------------------------------------------------------------

PAM工作原理

PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so。PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证。认证原理图如下图所示:

PAM认证过程示例:

1.使用者执行/usr/bin/passwd 程序,并输入密码
2.passwd开始调用PAM模块,PAM模块会搜寻passwd程用序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻 Yetc/pam.d/passwd此设置文件
3.经由/etc/pam.d/passwd设定文件的数据,取用PAM)所提供的相关模块来进行验证
4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)

PAM配置文件格式说明:

通用配置文件/etc/pam.conf格式,此格式不使用

application        type        control        module-path        arguments

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

type        control        module-path        arguments

application:指服务名,如:telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确配置的其它服务
type:指模块类型,即功能
control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现 module-path: 用来指明本模块对应的程序文件的路径名

Arguments:用来传递给该模块的参数

模块类型(module-type)

  • Auth 账号的认证和授权
  • Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录) Password 用户修改密码时密码复杂度检查机制等功能
  • Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等
  • -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用

Control

  • required:一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序,即为必要条件
  • reauisite:一票否决,该模块必须返口成功才能通过认证,但是一日该模块返口失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件
  • sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的required和requisite
  • optional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略。include:调用其他的配置文件中定义的配置信息

module-path

  • 模块文件所在绝对路径
  • 模块文件所在相对路径:/lib64/security目录下的模块可使用相对路径,如:pam_shells.so、
  • pam_limits.so
  • 有些模块有自已的专有配置文件,在/etc/security/*.conf目录下

Arguments

  • debug:该模块应当用syslog()将调试信息写入到系统日志文件中
  • no_warn :表明该模块不应把警告信息发送给应用程序
  • usefirst_pass :该模块不能提示用户输入密码,只能从前一个模块得到输入密码
  • tryfirst pass : 该模块首先用前一个模块从用户得到密码,如果该密码验证不通过,再提示用户输入新密码
  • use_mapped_pass 该模块不能提示用户输入密码,而是使用映射过的密码
  • expose_account 允许该模块显示用户的帐号名等信息,一般只能在安全的环境下使用,因为泄漏用户名会对安全造成一定程度的威胁

注意:修改PAM配置文件将马上生效
建议:编辑pam规则时,保持至少打开一个root会话,以防止root身份验证错误

常用PAM模块

1)pam_nologin.so模块

如果/etc/nologin 文件存在,将导致非root 用户不能登录,当该用户登录时,会显示/etc/nologin文件内容,并拒绝登录,默认此模块可以对ssh等登录有效,但不影响su切换用户。

[root@rocky pam.d]# grep pam_nologin *
cockpit:account    required     pam_nologin.so
lightdm:account    required    pam_nologin.so
lightdm-autologin:account    required    pam_nologin.so
login:account    required     pam_nologin.so
pluto:account required pam_nologin.so
ppp:account    required pam_nologin.so
remote:account    required     pam_nologin.so
samba:auth       required       pam_nologin.so
sshd:account    required     pam_nologin.so
[root@rocky pam.d]# pwd
/etc/pam.d

2)pam_limits.so模块

功能:在用户级别实现对其可使用的资源的限制,例如:可打开文件数量,可运行的进程数量,可用的内存空间。

修改限制的实现方式

ulimiit命令:ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。ulimit的设定值是per-process的,每个进程有自己的limits值。使用ulimit进行修改,立即生效。ulimit只影响shell进程及其子进程,用户登出后失效。可以在/etc/profile文件中加入ulimit的设置,变相的做到永久生效。

-H        设置硬件资源限时,一旦设置不能增加

-S        设置软件资源限制

-a        显示当前所有的资源限制

-c        size,设置core文件的最大值,单位blocks

-d        size,设置数据段的最大值,单位kbytes

-f         size,设置创建文件的最大值,单位blocks

-l         size,设置在内存中锁定进程的最大值,单位kbytes

-m       size,设置可以使用的常驻内存的最大值,单位kbytes

-n        size,设置内核可以同时打开文件描述符的最大值,单位n

-p        size,设置管道缓冲区的最大值,单位kbytes

-s        size,设置堆栈的最大值,单位kbytes

-t         size,设置CPU使用时间的最大上限,单位seconds

-u        size,最大用户进程数

-v        size,设置虚拟内存的最大值,单位kbytes

说明:

unlimited是一个特殊值,用于表示不限制;查询时,若不加H或S参数,默认显示的是软限制,修改时,若不加H或S参数,两个参数一起改变。

配置文件

pam_limits的设定值是基于per-process的

/etc/security/limits.conf  、/etc/security/limits.d/*.conf

配置文件格式

#每行一个定义

<domain>        <type>        <item>        <value>

格式说明

<domain> 应用于哪些对象

username 单个用户

@group 组内所有用户

*  所有用户

% 仅用于限制maxlogins limit,可以使用%group语法,只用%相当于*对所有用户maxsyslogins limit限制。%group表示限制此组中所有用户总的最大登录数。

<type> 限制的类型

Soft软限制,普通用户可以自己修改

Hard硬限制,由root用户设定,且通过kernel强制生效

- ,二者同时限定

<item> 限制的资源

nofile所能够同时打开的最大文件数量,默认为1024

nproc所能够同时运行的进程的最大数量,默认为1024

<value> 指定具体值

⚠️systemd的service资源设置需要单独配置

# /etc/security/limits.conf
#
#This file sets the resource limits for the users logged in via PAM.#It does not affect resource limits of the system services.
在Centos7以上版本中,使用Systemd替代了之前的SysV。/etc/security/limits.conf文件的配置作用域缩小了。/etc/securitv/1imits.conf的配置,只适用于通过PAM认证登录用户的资源限制,它对 svstemd的service的资源限制不生效。因此登录用户的限制,通过/etc/securitv/limits.conf与/etc/security/limits.d下的文件设置即可。

对于systemd service的资源设置,则需修改全局配置,全局配置文件放在/etc/systemd/system.conf和/etc/systemd/user.conf,同时也会加载两个对应目录中的所有.conf文件/etc/svstemd/svstem.conf.d/*.conf和/etc/svstemd/user.conf.d/*.conf。 system.conf是系统实例使用的,user.conf是用户实例使用的。

vim /etc/systemd/system.conf

DefaultLimitNOFILE=100000

DefaultLimitNPROC=65535

或者针对指定的service添加下面行

[service]
LimitNOFILE=100000

LimitNPROC=65535

案例1:系统的各种资源的默认值

[root@client ~]# ulimit -a
core file size                  (blocks, -c) 0
data seg size                 (kbytes, -d) unlimited
scheduling priority         (-e) 0
file size                          (blocks, -f) unlimited
pending signals              (-i) 6984
max locked memory       (kbytes, -l) 64
max memory size           (kbytes, -m) unlimited
open files                        (-n) 1024
pipe size                          (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority                    (-r) 0
stack size                              (kbytes, -s) 8192
cpu time                                (seconds, -t) unlimited
max user processes             (-u) 6984
virtual memory                      (kbytes, -v) unlimited
file locks                                (-x) unlimited
案例2

案例2:查看指定进程的资源限制

#cat     /proc/PID/limits

[root@Server ~]# cat /proc/`pidof nginx | xargs -n1 | sort -n | head -1`/limits
Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        0                    unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             6968                 6968                 processes 
Max open files            1024                 262144               files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       6968                 6968                 signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us        

案例3:ulimit命令修改用户打开的文件个数

[root@Server ~]# ulimit -n
1024
[root@Server ~]# ulimit -n 1048577
-bash: ulimit: open files: cannot modify limit: Operation not permitted
[root@Server ~]# ulimit -n 1048576
[root@Server ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 6968
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1048576
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 6968
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
 

五、实现私有时间服务器

#服务器端配置

[root@centos8 ~]#hostname -I

10.0.0.131
[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

#客户端配置

[root@client ~]# vim /etc/chrony.conf

server 10.0.0.131 iburst

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

[root@client ~]# 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.131                        3        6      77      +466us[ +466us] +/-  170ms

六、总结DNS域名三级结构

DNS域名三级结构从上至下分别成为根域、一级域、二级域。根域,全球总共有13个根域,根域是固定的;顶级域有com,edu,net,org,cn等等;二级域是不确定的,用户可以向有关机构申请自己的二级域。

七、总结DNS服务工作原理,涉及递归和迭代查询原理

递归查询:是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结构提交给用户。一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询
递归算法:客户端向LocalDNS发起域名查询-->localDNS不知道域名对应的IP-->但它知道谁知道->他代为帮客户端去查找-->最后再返回最终结果。
迭代查询:是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。
迭代算法:客户端向LocalDNS发起域名查询-->localDNS不知道域名对应的IP-->但它知道谁知道并推荐客户端应该找谁-->客户端自己去找它

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

Server端配置:

1.安装提供DNS服务的软件包bind

[root@Server ~]# yum install bind bind-utils -y
2.修改bind配置文件

vim /etc/named.conf

注释掉下面两行

//listen-on port 53 { localhost; };
//allow-query     { localhost; };

vim /etc/named.rfc1912.zones

增加下面的内容

zone "loongson.org" IN {
        type master;
        file "loongson.org.zone";
};

3.配置DNS区域数据库文件

cp -p /var/named/named.localhost /var/named/loongson.org.zone
 ⚠️如果没有加-p选项,需要更改文件所属组为named

vim /var/named/loongson.org.zone

$TTL 1D
@       IN SOA  master rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
               NS        master
master     A         10.0.0.131
4.检查配置文件

[root@Server ~]# named-checkconf 
[root@Server ~]# named-checkzone loongson.org /var/named/loongson.org.zone 
zone loongson.org/IN: loaded serial 0
OK

5.重启DNS服务

[root@Server ~]# systemctl restart named
 

Client端配置:

[root@client ]# cat  /etc/resolv.conf 
# Generated by NetworkManager
nameserver 10.0.0.131
 

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

DNS服务器类型

主DNS服务器:管理和维护所负责解析的域内解析库的服务器

从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本

        序列号:解析库版本号,主服务器解析库变化时,其序列递增

        刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔

        重新时间间隔:从服务器请求同步失败时,再次尝试时间间隔

        过期时长:从服务器联系不到主服务器时,多久后停止服务

        通知机制:主服务器解析库发生变化时,会主动通知从服务器

解析答案

肯定答案:存在对应的查询结果

否定答案:请求的条目不存在等原因导致无法返回结果

权威答案:直接由存有此查询结果的DNS服务器(权威服务器)返回的答案

非权威答案:由其他非权威服务器返回的查询答案

正反解析域

正向:FQDN->IP

反向:IP->FQDN

各种资源记录

区域解析库:由众多资源记录RR(Resource Record)组成
记录类型: A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start OfAuthority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解
析库的第一条记录
A:internet Address,作用,FQDN -->IP

AAAA:FQDN --> IPv6
PTR:PoinTeR,IP --> FODN
NS:Name Server,专用于标明当前区域的DNS服务器
CNAME:Canonical Name,别名记录
MX:Mail eXchanger,邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮
件)记录,https验证等。

十、实现DNS主从同步

主DNS服务器配置:

1.安装提供DNS服务的软件包bind

[root@Server ~]# yum install bind bind-utils -y
2.修改bind配置文件

vim /etc/named.conf

注释掉下面两行

//listen-on port 53 { localhost; };
//allow-query     { localhost; };

#只允许从服务器进行区域传输

allow-transfer { 从服务器IP; }; 

vim /etc/named.rfc1912.zones

增加下面的内容

zone "loongson.org" IN {
        type master;
        file "loongson.org.zone";
};

3.配置DNS区域数据库文件

cp -p /var/named/named.localhost /var/named/loongson.org.zone
 ⚠️如果没有加-p选项,需要更改文件所属组为named

vim /var/named/loongson.org.zone

$TTL 1D
@       IN SOA  master rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
               NS        master
master     A         10.0.0.131
4.检查配置文件

[root@Server ~]# named-checkconf 
[root@Server ~]# named-checkzone loongson.org /var/named/loongson.org.zone 
zone loongson.org/IN: loaded serial 0
OK

5.重启DNS服务

[root@Server ~]# systemctl restart named

从DNS服务器配置:

1.安装提供DNS服务的软件包bind

[root@Server ~]# yum install bind bind-utils -y
2.修改bind配置文件

vim /etc/named.conf

注释掉下面两行

//listen-on port 53 { localhost; };
//allow-query     { localhost; };

添加下面一行

#不允许其他主机进行区域传输

allow-transfer { none; }

vim /etc/named.rfc1912.zones

增加下面的内容

zone "loongson.org" IN {
        type slave;
        masters { 主DNS服务器IP; };

        file "slaves/loongson.org.slave"
};


3.检查配置文件

[root@Server ~]# named-checkconf 
[root@Server ~]# named-checkzone loongson.org /var/named/loongson.org.zone 
zone loongson.org/IN: loaded serial 0
OK

4.重启DNS服务

[root@Server ~]# systemctl restart named

5.查看区域数据库文件是否生成

ls /var/named/slaves/loongson.org.slave

十一. 实现DNS子域授权

父域配置:

1.安装提供DNS服务的软件包bind

[root@Server ~]# yum install bind bind-utils -y
2.修改bind配置文件

vim /etc/named.conf

注释掉下面两行

//listen-on port 53 { localhost; };
//allow-query     { localhost; };

#只允许从服务器进行区域传输

allow-transfer { 从服务器IP; }; 

#关闭加密验证

dnssec-enable  no;

dnssec-validation no;

vim /etc/named.rfc1912.zones

增加下面的内容

zone "loongson.org" IN {
        type master;
        file "loongson.org.zone";
};

3.配置DNS区域数据库文件

cp -p /var/named/named.localhost /var/named/loongson.org.zone
 ⚠️如果没有加-p选项,需要更改文件所属组为named

vim /var/named/loongson.org.zone

$TTL 1D
@       IN SOA  master rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
               NS        master
master     A         10.0.0.131
4.检查配置文件

[root@Server ~]# named-checkconf 
[root@Server ~]# named-checkzone loongson.org /var/named/loongson.org.zone 
zone loongson.org/IN: loaded serial 0
OK

5.重启DNS服务

[root@Server ~]# systemctl restart named

子域配置:

1.安装提供DNS服务的软件包bind

[root@Server ~]# yum install bind bind-utils -y
2.修改bind配置文件

vim /etc/named.conf

注释掉下面两行

//listen-on port 53 { localhost; };
//allow-query     { localhost; };

添加下面一行

#不允许其他主机进行区域传输

allow-transfer { none; }

vim /etc/named.rfc1912.zones

增加下面的内容

zone "hefei.loongson.org" IN {
        type master;

        file "hefei.loongson.org.zone"
};

3.配置DNS区域数据库文件

cp -p /var/named/named.localhost /var/named/hefei.loongson.org.zone
 ⚠️如果没有加-p选项,需要更改文件所属组为named

vim /var/named/hefei.loongson.org.zone

$TTL 1D
@       IN SOA  master rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
               NS        master
master     A         10.0.0.131

4.检查配置文件

[root@Server ~]# named-checkconf 
[root@Server ~]# named-checkzone loongson.org /var/named/loongson.org.zone 
zone loongson.org/IN: loaded serial 0
OK

5.重启DNS服务

[root@Server ~]# systemctl restart named

十二. 基于acl实现智能DNS

准备五台主机

DNS主服务器IP:10.0.0.8/24

WEB服务器1: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

1.安装提供DNS服务的软件包bind

yum intstall bind -y 

2.修改bind配置文件

vim /etc/named.conf

#在文件的最前面添加下面两行

acl beijing {

        10.0.0.0/24;

};

acl shanghai {

        172.16.0.0/16;

};

acl othernet{

        any;

};

#注释掉下面两行

//listen-on port 53 { localhost; };
//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.bj

zone "." IN {

        type hint;

        file "named.ca";

};

zone "magedu.org"  {

        type master;

        file "magedu.org.zone.bj";

};

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

4.创建区域数据库文件

vim /var/named/magedu.org.zone.bj

$TTL 1D
@       IN SOA  master admin.magedu.rog. (
                                        20230202       ; 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.bj

$TTL 1D
@       IN SOA  master admin.magedu.rog. (
                                        20230202       ; 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.rog. (
                                        20230202       ; 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

5.重启DNS服务

systemctl restart named

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

#分别在三台主机上安装http服务

在web服务器1:10.0.0.8/24实现

yum install httpd

echo www.loongson.cn in other > /var/www/html/index.html

systemctl start httpd

在web服务器2:10.0.0.7/16实现

yum install httpd

echo www.loongson.cn in beijing > /var/www/html/index.html

systemctl start httpd

在web服务器3:172.16.0.7/16实现

yum install httpd

echo www.loongson.cn in shanghai > /var/www/html/index.html

systemctl start httpd

7.客户端测试 

#分别在三台主机上访问
#DNS客户端1:10.0.0.6/24 实现,确保DNS指向10.0.0.8 curl www.magedu.org
www.magedu.org in Beijing
#DNS客户端2:172.16.0.6/16 实现,确保DNS指向172.16.0.8 curl www.magedu.org
www.magedu.org in shanghai
#DNS客户端3:10.0.0.8 实现,,确保DNS指向127.0.0.1 curl www.magedu.org
www.magedu.org in other

十三、总结防火墙分类

按保护范围划分:
主机防火墙:服务范围为当前一台主机
网络防火墙:服务范围为防火墙一侧的局域网


按实现方式划分:
硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为,
山石hillstone,天融信,启明星辰,绿盟,深信服,PaloAlto,fortinet飞塔, Cisco, Checkpoint, NetScreen(2004年被|uniper用40亿美元收购)等
软件防火墙:运行于通用硬件平台之上的防火墙的应用软件


按网络协议划分:
网络层防火墙:OSI模型下四层,又称为包过滤防火墙
应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层

十四、总结iptable 5表5链, 基本使用,扩展模块

链chain:

内置链:每个内置链对应一个钩子函数。

自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有Hook钩子调用自定义链时,才生效。

五个内置链chain:

INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING

五个表table:

filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表。

nat: 地追转换规则表。

mangle:修改数据标记位规则表。

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

security: 用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现。

内核中数据包的传输过程
当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去,如果数据包是进入本机的,数据包就会沿着图向下移动,到达INPUT链。数据包到达INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后到达 POSTROUTING链输出如果数据包是要转发出去的,目内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

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

iptables规则组成

规则rule:根据规则的匹配条件尝试匹配报文,对匹配成功的报文根据规则定义的处理动作作出处理规则在链接上的次序即为其检查时的生效次序
匹配条件:默认为与条件,同时满足
基本匹配:IP,端口,TCP的Flags(SYN,ACK等)
扩展匹配:通过复杂高级功能匹配
处理动作:称为target,跳转目标
内建处理动作:ACCEPT,DROP,REIECT,SNAT,DNAT,MASQUERADE,MARK,LOG...

自定义处理动作:自定义chain,利用分类管理复杂情形,规则要添加在链上,才生效;添加在自定义链上不会自动生效
白名单:只有指定的特定主机可以访问,其它全拒绝
黑名单:只有指定的特定主机拒绝访问,其它全允许,默认方式

iptables规则保存和恢复

持久保存规则

Centos 7/8:

iptables-save > /PATH/TO/SOME_RULES_FILE

Centos 6:

#将规则覆盖保存至/etc/sysconfig/iptables文件中

service iptables save

恢复加载规则

Centos 7/8:

iptables-restore < /PATH/TO/SOME_RULES_FILE

iptables-restore选项

-n,--noflush:不清除原有规则

-t,--test:仅分析生成规则集,但不提交

Centos 6:

#会自动从/etc/sysconfig/iptables重新载入规则

service iptables restart

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值