加密解密Openssl和DNS

常见加密算法及原理

安全防护的目标:
  • 保密性 Confidentiality:即隐私性;
  • 完整性 Integrity:指数据在传输过程中要保证能够完整,还能保证传输后能够还原回原来的数据;
  • 可用性 Availability:指还原后的数据还能够使用;
常见的安全性攻击:
  • 威胁保密性的攻击:窃听、通信量统计;
  • 威胁完整性的攻击:更改、伪装、重放、否认;
  • 威胁可用性的攻击:拒绝服务;
防范这些攻击的安全机制:
  • 加密和解密、 数字签名、 访问控制、 数据完整性验证、 认证交换、流量填充、路由控制、公证等方式
实现这些安全机制的安全服务:
  • 认证服务
  • 访问控制服务
  • 数据保密性服务
  • 数据完整性服务
  • 不可否认性服务
    为了保证这些服务的实现,就需要一些密码算法和协议(加密机制)来完成。

常见的加密算法和协议

  1. 对称加密:加密和解密使用同一个密钥,依赖于算法和密钥,但其安全性依赖于密钥而非算法

    • 常见的算法:
      DES:Data Encrpytion Standard;56bits
      3DES:Triple DES
      AES:Advanced encrypytion Standard;(128bits,192bits,256bits,384bits)
      Blowfish
      Twofish
      IDEA
      RC6
      CAST5

    • 特性:

      • 加密、解密使用同一密钥;
      • 将原始数据分割成为固定大小的块,逐个进行加密;
    • 缺陷:

      • 密钥过多
      • 密钥分发困难
  2. 公钥加密:密钥成对出现,分为公钥和私钥;
    公钥:pubkey,公开给所有人(从私钥中提取产生);
    私钥:secret key ,通过工具创建,使用者自己留存,必须保证其私密性;

    • 特点:

      • 用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然
      • 密钥长度较大,例如512bits,2048bits,4096bits;效率低下;
    • 用途:

      • 数字签名:主要在于让接收方确认发送方的身份;
      • 密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方
      • 数据加密
    • 常见算法:
      RSA:即能签名、又能加密解密;
      DSA:数字签名算法(标准)
      ELGamal:

    • 公钥加密工作模式

加密通信过程.png
  1. 单向加密:只能加密,不能解密,即提取数据指纹(特征码);

    • 特性:

      • 定长输出:无论原来的数据是多大级别,其加密结果长度一样;
      • 雪崩效应:原始数据微小改变,将会导致结果巨大变化;
      • 不可逆
    • 用途:

      • 数据完整性校验
      • 系统帐号密码校验
    • 常见算法:
      MD5:128bits定长输出
      SHA1: 160bits定长输出
      SHA256:
      SHA384:
      SHA512:
      CRC32:

  2. 密钥交换:IKE(Internet Key Exchange),双方通过交换密钥来实现数据加密解密;
    密钥交换友以下两种:

    • 公交加密
    • DH:(Deffie-Hellman),双方共用一些参数,共同协商加密算法,除此之外双方还有属于自己的私有参数,通过共有的参数、私有参数和算法来进行加密,然后双方将计算后的结果进行交换,交换完成后再和属于自己私有的参数进行特殊算法,经过双方计算后的结果是相同的,而这个结果就是密钥。

例如:
A 有 p 和 g 两个参数,A 还有一个属于自己的私有参数x;
B 有 p 和 g 两个参数,B还有一个属于自己的私有参数y;
A 和 B 有相同的加密算法 即 A: p^x%g
B: p^y%g 然后上方交换计算后的结果,此时
A 拿到B 的 p^y%g , B 拿到A 的 p^x%g,双方在和自己私有参数进行相同的算法
A: 对p^y%g在求x次方得( p^y%g )^x=p ^xy%g
B: 对p^x%g在求x次方得( p^x%g )^y=p ^xy%g
最后A和B的结果是一样的。
注意:整个过程中对于第三方人员来说只能获取p、g两个值,AB双方交换的是经过计算后的值,因此这种加密方式是很安全的

PKI:Public Key Infrastructure
  • 公钥基础实施:

    • 签证机构:CA,真正颁发证书的机构;
    • 注册机构:RA, 帮你拍照信息录入的机构;
    • 证书吊销机构:CRL,相当于我们证件丢失时挂失的内容;
    • 证书存取库:当别人请求认证时的数据库;
  • X.509 v3:定义了数字证书的结构以及认证标准;它由以下几个部分组成:

    • 版本号(version)
    • 序列号(serial number):CA用于唯一标识此证书
    • 签名算法ID(Signature algorithm identifier)
    • 发行者的名称:即CA在即的名称
    • 有效期:两个日期,起始日期和终止日期
    • 证书主体名称:证书拥有者自己的名字
    • 证书主体公钥:证书拥有者自己的公钥
    • 发行商的唯一标识
    • 证书主体的唯一标识

SSL/TSL

SSL:(Secure Sockets Layer)安全套接层,是为网络通信提供安全及数据完整性的一种安全协议。

  • SSL是由Netscape1994年发布,版本有:v1.0、v2.0、v3.0;

  • SSL分两层:

    • SSL记录协议(SSL Record Protocol)
    • SSL握手协议(SSL Handshake Protocol)

TLS:(Transport Layer Security)传输层安全,与SSL在传输层对网络连接进行加密。

  • TLS是由IETF组织1999年发布,版本有v1.0 v1.1 v1.2 v1.3;

  • TLS分层设计:

    • 最低层:基础算法原语的实现;如aes、rsa、md5
    • 向上一层:各种算法的实现;
    • 再向上一层:组合算法实现的半成品;
    • 用各种组件拼装而成的各种成品密码学协议软件;
SSL会话主要三步:
  1. 客户端向服务器端索要并验正证书;
  2. 双方协商生成“会话密钥”;
  3. 双方采用“会话密钥”进行加密通信;
- SSL握手协议(SSL Handshake Protocol)

第一阶段:ClientHello:

  • 支持的协议版本,比如:tls 1.2;
  • 客户端生产一个随机数,稍后用户会生产“会话秘钥”
  • 支持的加密算法,比如AES、3DES、RSA
  • 支持的压缩算法

第二阶段:ServerHello:

  • 确认使用的加密通信协议版本,比如tls 1.2
  • 服务器端生成一个随机数,稍后用于生成“会话秘钥”
  • 确认使用的加密算法
  • 服务器证书

第三阶段:

  • 验正服务器证书,在确认无误后取出其公钥;(发证机构、证书完整性、证书持有者、证书有效期、吊销列表)

  • 发送以下信息给服务器端:

    • 一个随机数;
    • 编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
    • 客户端握手结束通知;

第四阶段:

  • 收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话所有到的“会话密钥”;

  • 向客户端发送如下信息:

    • 编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
    • 服务端握手结束通知;

Openssl

Openssl是ssl的一个开源项目,其由三个部分组成:

  1. openssl:多用途的命令行工具
  2. libcrypto:加密,界面库文件,主要又开发者使用
  3. libssl:ssl协议实现
openssl命令

子命令分类:标准命令、消息摘要命令、加密解密相关命令。

对称加密:
  • 工具:openssl enc、gpg

  • 支持的算法:3des、aes、blowfish、twofish

  • enc命令:

    • 加密:openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
    • 解密:openssl enc -d -des3 -a -salt -in fstab.ciphertext -out fstab
单向加密:
  • 工具:openssl dget、md5sum、sha1sum、 sha224sum

  • dget命令

    • 生成用户密码:openssl passwd
        openssl passwd -1 -salt SALT

公钥加密:
  • 加密解密:

    • 算法:RSA、ELGamal
    • 工具:openssl、rsautl、gpg
  • 数字签名:

    • 算法:RSA、DSA、ELGamal
    • 工具:openssl 、rsautl、gpg
  • 密钥交换:

    • 算法:DH
#生成私钥
[root@dns1 ~]# openssl genrsa -out /tmp/mykey.private 1024
[root@dns1 ~]# ls -ld /tmp/mykey.private 
-rw-r--r--. 1 root root 891 7月   8 12:08 /tmp/mykey.private
#这样生成的密钥属组和other是可读的,因此我们应该把bash命令行上放在小括号中执行命令,这其实是通过打开一个子shell进程进行的
[root@dns1 ~]# (umask 077;openssl genrsa -out /tmp/mykey2.private)
[root@dns1 ~]# ls -ld /tmp/mykey2.private
-rw-------. 1 root root 1679 7月   8 12:14 /tmp/mykey2.private
#从私钥中提取公钥:
[root@dns1 ~]# openssl rsa -in /tmp/mykey2.private -pubout
writing RSA key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyvbWwXSi+9073jhaBFO6
za2IUoUghM4b2A0as3tjE2BGji+2Dk1wzQ0zKIaell6vYlOF4c1b9iWMuOCDgHbE
mn6u/JRohjuG79EJABCCP7sHZddwGYQgxcsdXBP4nltNKYIW03rxWHIwYSxzPqp/
vU/yLEHOogbprG6QQxNFv7K4l3CxtC53Y85RR4meuwWR7N5LND9NYOClLkcu98qr
eU+EZntns6N/DbD0hk1xJZczRuB36stjoLHqW1v28MH8i8/w7OWnV74/UllBNkh2
jdIzzi8mG0DPeWK4/1XD+twe0b8zzSEaVD0bgn3XlH0UgLCpWrr/If75bh2vGk9v
7QIDAQAB
-----END PUBLIC KEY-----

Linux系统上的随机数生成器:
  • /dev/random:仅从熵池返回随机数;随机数用尽,阻塞;
  • /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞;
    伪随机数不安全;
  • 熵池中随机数的来源:
    硬盘IO中断时间间隔;
    键盘IO中断时间间隔;

搭建apache或者nginx并使用自签证书实现https访问,自签名证书的域名自拟

#首先自建一个私有CA
[root@dns1 ~]# cd /etc/pki/CA #cd到CA目录下
[root@dns1 CA]# mkdir private  #创建private目录,用于存放CA私钥
[root@dns1 CA]# (umask 077;openssl genrsa -out private/cakey.pem 4096)  #生成CA本身私钥
[root@dns1 CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655

    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:SHANDONG
    Locality Name (eg, city) [Default City]:JINAN
    Organization Name (eg, company) [Default Company Ltd]:inspur
    Organizational Unit Name (eg, section) []:opt
    Common Name (eg, your name or your server's hostname) []:www.inspur.com
    Email Address []:caadmin@inspur.com
[root@dns1 CA]# mkdir -pv {certs,crl,newcerts}
    mkdir: 已创建目录 "certs"
    mkdir: 已创建目录 "crl"
    mkdir: 已创建目录 "newcerts"
    [root@dns1 CA]# touch {serial,index.txt}
    [root@dns1 CA]# echo 01 >serial
    [root@dns1 CA]# cat serial
    01

#到此私有CA就创建完成,下面到需要用到证书安全通信的服务器上向CA请求签署证书,我们以nginx为例

[root@localhost ssl]# yum install nginx -y #安装nginx
[root@localhost ssl]# mkdir /etc/nginx/ssl #在nginx目录下创建ssl目录
[root@localhost ssl]# cd /etc/nginx/ssl
[root@localhost ssl]# (umask 077;openssl genrsa -out nginx.key 2048)  #生成私钥
[root@localhost ssl]# openssl req -new -key nginx.key -out nginx.csr -days 365 #生成证书签署请求
[root@localhost ssl]# scp nginx.csr root@192.168.43.161:/tmp  #将请求通过可靠方式发送给CA 主机
[root@dns1 CA]# openssl ca -in /tmp/nginx.csr -out /etc/pki/CA/certs/nginx.crt -days 365   #在CA主机上签署证书

#查看证书中的信息,到此nginx自签证书完成
[root@dns1 CA]# openssl x509 -in /etc/pki/CA/certs/nginx.crt -noout -serial -subject
serial=01
subject= /C=CN/ST=SHANDONG/O=inspur/OU=cw/CN=cw.inspur.com/emailAddress=cw@inspur.com

DNS and Bind

DNS:Domain Name Service,应用层协议;属于C/S架构,监听在53端口
FQDN:Full Qualified Domain Name;如www.magedu.com
tld:Top Level Domain;顶级域

  • 组织域:.com, .net, .org, .gov, .edu, .mil
  • 国家地区域:.iq, .tw, .hk, .jp, .cn, …

DNS查询类型:

  • 递归查询
  • 迭代查询

DNS名称解析方式:

  • 名称—->IP:正向解析
  • IP—->名称:反向解析
    注意:二者的名称空间,非为同一空间,即非为同一棵树;因此,也不是同一个解析库。

DNS服务器类型:

  • 负责解析至少一个域:

    • 主名称服务器;
    • 辅助名称服务器;
  • 不负责哉解析:

    • 缓存名称服务器;

一次完整的查询请求经过的流程:

DNS名称解析过程.png

1.Client访问Server请求首先查找本地的hosts文件,如果找到即结束;
2.如果本地hosts文件未找到,则向本地DNS缓存文件查询,如找到即结束;
3.如本地DNS缓存文件未找到,则向DNS发起递归查询请求,如果是DNS自己负责解析的域,直接查询数据库并返回答案;
4.如果不是自己负责的解析域,则以迭代查询类型向根域发起查询请求;根域返回其所属顶级域;
5.DNS向所属顶级域发起查询请求,顶级域将结果返回;
6.DNS将所查询到的结果发送给Client;
7.Client即可向Server发起访问;

主-辅DNS服务器及搭建

1. 主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;
2. 从DNS服务器:从主DNS服务器那里或其它的从DNS服务器那里“复制”一份解析库;但只能进行读操作;

  • “复制”操作的实施方式:

    • 序列号:serial, 也即是数据库的版本号;主服务器数据库内容发生变化时,其版本号递增;
    • 刷新时间间隔:refresh, 从服务器每多久到主服务器检查序列号更新状况;
    • 重试时间间隔:retry, 从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;
    • 过期时长:expire,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务;
    • 否定答案的缓存时长:
    • 主服务器”通知“从服务器随时更新数据;
  • 区域传送:
    全量传送:axfr, 传送整个数据库;
    增量传送:ixfr, 仅传送变量的数据;

  • 区域(zone)和域(domain): magedu.com域

    • FQDN –> IP
      正向解析库;区域
    • IP –> FQDN
      反向解析库;区域
  • 区域数据库文件:
    资源记录:Resource Record, 简称rr;
    记录有类型:A, AAAA, PTR, SOA, NS, CNAME, MX

    • SOA:Start Of Authority,起始授权记录; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;
    • NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
    • A: Address, 地址记录,FQDN –> IPv4;
    • AAAA:地址记录, FQDN –> IPv6;
    • CNAME:Canonical Name,别名记录;
    • PTR:Pointer,IP –> FQDN
    • MX:Mail eXchanger,邮件交换器;
      优先级:0-99,数字越小优先级越高;
  • 资源记录的定义格式:
    语法: name [TTL] IN RR_TYPE value

    1. SOA:
      name: 当前区域的名字;例如”mageud.com.”,或者“2.3.4.in-addr.arpa.”;
      value:有多部分组成
      (1) 当前区域的区域名称(也可以使用主DNS服务器名称);
      (2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
      (3) (主从服务协调属性的定义以及否定答案的TTL)
                例如:
                    magedu.com.     86400   IN      SOA     magedu.com.     admin.magedu.com.  (
                                2017010801  ; serial
                                2H          ; refresh
                                10M         ; retry
                                1W          ; expire
                                1D          ; negative answer ttl 
                    )   

  1. NS:
    name: 当前区域的区域名称
    value:当前区域的某DNS服务器的名字,例如ns.magedu.com.;
    注意:一个区域可以有多个ns记录;
            例如:
                magedu.com.     86400   IN  NS      ns1.magedu.com.
                magedu.com.     86400   IN  NS      ns2.magedu.com.

  1. MX:
    name: 当前区域的区域名称
    value:当前区域某邮件交换器的主机名;
    注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;
            例如:
                magedu.com.         IN  MX  10      mx1.magedu.com.
                magedu.com.         IN  MX  20      mx2.magedu.com.

  1. A:
    name:某FQDN,例如www.magedu.com.
    value:某IPv4地址;
            例如:
                www.magedu.com.     IN  A   1.1.1.1
                www.magedu.com.     IN  A   1.1.1.2
                bbs.magedu.com.         IN  A   1.1.1.1

  1. AAAA:
    name:FQDN
    value: IPv6
  2. PTR:
    name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.;
    value:FQND
            例如:
                4.3.2.1.in-addr.arpa.   IN  PTR www.magedu.com.

  1. CNAME:
    name:FQDN格式的别名;
    value:FQDN格式的正式名字;
            例如:
                web.magedu.com.     IN      CNAME  www.magedu.com.

注意:
(1) TTL可以从全局继承;
(2) @表示当前区域的名称;
(3) 相邻的两条记录其name相同时,后面的可省略;
(4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录;

主DNS服务器搭建
    #安装bind和bind-utils程序包
    [root@dns1 ~]# yum install bind -y
    [root@dns1 ~]# yum install bind-utils -y

配置解析正向区域

    #定义区域
    [root@dns1 ~]# vim /etc/named.rfc1912.zones
    #在文件最后添加
    zone "magedu.com" IN {
            type master;
            file "magedu.com.zone";
    };
    #建立区域数据文件
    [root@dns1 ~]# cd /var/named
    [root@dns1 named]# vim magedu.com.zone
    #在打开的文件中输入下面内容
      $TTL 3600
      $ORIGIN magedu.com.

      @   IN    SOA   ns1.magedu.com.   dnsadmin.magedu.com. (
              2018071201
              1H
              10M
              3D
              1D )
              IN        NS      ns1
              IN        MX    10 mx1
      ns1       IN  A   192.168.1.105
      mx1       IN  A   192.168.1.106
      www       IN  A   192.168.1.107
      bbs       IN  A   192.168.1.110
      web       IN  CNAME   www
      www       IN  A   192.168.1.111


    #检查配置文件
    [root@dns1 named]# named-checkconf
    [root@dns1 named]# named-checkzone magedu.com. /var/named/magedu.com.zone 
    zone magedu.com/IN: loaded serial 2018070801
    OK
    #修改权限及属组
    [root@dns1 named]# chmod o= /var/named/magedu.com.zone 
    [root@dns1 named]# chgrp named /var/named/magedu.com.zone
    [root@dns1 named]# ls -ld /var/named/magedu.com.zone
    -rw-r-----. 1 root named 280 7月   8 18:18 /var/named/magedu.com.zone
    #让服务器重载配置文件和区域文件
    [root@dns1 named]# rndc reload
    server reload successful
    或者使用systemctl reload named.service
   #使用dig命令来测试配置是否可以解析域名
      [root@localhost named]# dig -t A www.magedu.com @192.168.1.105
      ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> -t A         www.magedu.com @192.168.1.105
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36023
      ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1,         ADDITIONAL: 2

      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 4096
      ;; QUESTION SECTION:
      ;www.magedu.com.          IN  A

      ;; ANSWER SECTION:
      www.magedu.com.       3600    IN  A   192.168.1.107
      www.magedu.com.       3600    IN  A   192.168.1.111

      ;; AUTHORITY SECTION:
      magedu.com.       3600    IN  NS  ns1.magedu.com.

      ;; ADDITIONAL SECTION:
      ns1.magedu.com.       3600    IN  A   192.168.1.105

      ;; Query time: 3 msec
      ;; SERVER: 192.168.1.105#53(192.168.1.105)
      ;; WHEN: 四 7月 12 00:45:54 CST 2018
      ;; MSG SIZE  rcvd: 109
#可看到上图已经可以正常解析出配置的域名




配置反向解析

#定义区域
[root@dns1 named]# vim /etc/named.rfc1912.zones 
#在最后添加如下内容
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "1.168.192.zone";
};
#定义区域解析库文件
[root@dns1 named]# vim 1.168.192.zone
#添加如下内容
$TTL 3600
$ORIGIN 1.168.192.in-addr.arpa.
@   IN  SOA ns1.magedu.com. dnsadmin.magedu.com. (
        2018071201
        1H
        10M
        3D
        1D )
    IN  NS  ns1.magedu.com.
106 IN  PTR ns1.magedu.com.
107 IN  PTR www.magedu.com.
110 IN  PTR bbs.magedu.com.
111 IN  PTR www.magedu.com.

#修改权限及属组
[root@dns1 named]# chown :named 1.168.192.zone 
[root@dns1 named]# chmod o= 1.168.192.zone
[root@dns1 named]# ls -ld 1.168.192.zone
-rw-r-----. 1 root named 217 7月   8 19:20 1.168.192.zone
#检查语法错误
[root@dns1 named]# named-checkconf
[root@dns1 named]# named-checkzone 1.168.192.in-addr.arpa 1.168.192.zone 
zone 1.168.192.in-addr.arpa/IN: loaded serial 2018070801
OK
#重载配置文件和区域数据文件
[root@dns1 named]# rndc reload
server reload successful
#使用dig命令反向解析测试
[root@localhost named]# dig -x 192.168.1.110 @192.168.1.105

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> -x 192.168.1.110 @192.168.1.105
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44987
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;110.1.168.192.in-addr.arpa.    IN  PTR

;; ANSWER SECTION:
110.1.168.192.in-addr.arpa. 3600 IN PTR bbs.magedu.com.

;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 3600    IN  NS  ns1.magedu.com.

;; ADDITIONAL SECTION:
ns1.magedu.com.     3600    IN  A   192.168.1.105

;; Query time: 7 msec
;; SERVER: 192.168.1.105#53(192.168.1.105)
;; WHEN: 四 7月 12 01:06:01 CST 2018
;; MSG SIZE  rcvd: 117
#根据返回结果可以看出反向解析配置成功

配置从服务器DNS
在另外一台服务器上配置一个从区域:on slave

#定义区域
[root@localhost ~]# vim /etc/named.rfc1912.zones
#添加如下内容
zone "magedu.com" IN {
        type slave;
        file "slave/magedu.com.zone";
        masters {192.168.1.105; };
};
#检查语法错误
[root@localhost ~]# named-checkconf
#重载配置
[root@localhost ~]# rndc reload
server reload successful

在主服务上需要配置 on master

#在主服务区域解析库文件上添加从服务为NS ,并添加其IP
[root@dns1 ~]# vim /var/named/magedu.com.zone
#在文件中添加如下内容
        IN      NS              ns2
ns2     IN      A       192.168.1.106
#一定要手动修改序列号+1
@       IN      SOA     105     dnsadmin.magedu.com (
            2018070802

#检查语法错误
named-checkconf
#重载配置
rndc reload
或者systemctl reload named.service
#可以使用systemctl status named.service命令查看传输过程验证其从服务器是否创建成功
[root@localhost ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-07-11 12:31:49 EDT; 44min ago
  Process: 1547 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 1563 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 1559 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 1564 (named)
   CGroup: /system.slice/named.service
           └─1564 /usr/sbin/named -u named -c /etc/named.conf

Jul 11 13:13:50 localhost.localdomain named[1564]: automatic empty zone: B.E.F.IP6.ARPA
Jul 11 13:13:50 localhost.localdomain named[1564]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
Jul 11 13:13:50 localhost.localdomain named[1564]: reloading configuration succeeded
Jul 11 13:13:50 localhost.localdomain named[1564]: reloading zones succeeded
Jul 11 13:13:50 localhost.localdomain named[1564]: all zones loaded
Jul 11 13:13:50 localhost.localdomain named[1564]: running
Jul 11 13:15:20 localhost.localdomain named[1564]: zone magedu.com/IN: refresh: retry limit for master 192.168.1.105#53 exceeded (source 0.0.0.0#0)
Jul 11 13:15:20 localhost.localdomain named[1564]: zone magedu.com/IN: Transfer started.
Jul 11 13:15:20 localhost.localdomain named[1564]: transfer of 'magedu.com/IN' from 192.168.1.105#53: failed to connect: host unreachable
Jul 11 13:15:20 localhost.localdomain named[1564]: transfer of 'magedu.com/IN' from 192.168.1.105#53: Transfer completed: 0 messages, 0 records, 0 b...tes/sec)
Hint: Some lines were ellipsized, use -l to show in full.无法
#在从服务器上验证时报错 transfer of 'magedu.com/IN' from 192.168.1.105#53: failed to connect: host unreachable,主机不可连接,使用iptables -L -n 命令查看后发现防火墙功能阻止了主机通信
#因此使用systemctl stop firewalld.service关闭防火墙功能后重新测试正常
[root@localhost ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-07-11 12:31:49 EDT; 56min ago
  Process: 1547 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 1563 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 1559 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 1564 (named)
   CGroup: /system.slice/named.service
           └─1564 /usr/sbin/named -u named -c /etc/named.conf

Jul 11 13:26:52 localhost.localdomain named[1564]: zone magedu.com/IN: transferred serial 2018071202
Jul 11 13:26:52 localhost.localdomain named[1564]: transfer of 'magedu.com/IN' from 192.168.1.105#53: Transfer completed: 1 messages, 12 records, 287 bytes, 0.010 secs (28700 bytes/sec)
Jul 11 13:26:52 localhost.localdomain named[1564]: zone magedu.com/IN: sending notifies (serial 2018071202)
Jul 11 13:27:47 localhost.localdomain named[1564]: client 192.168.1.105#24560: received notify for zone 'magedu.com'
Jul 11 13:27:47 localhost.localdomain named[1564]: master 192.168.1.105#53 (source 0.0.0.0#0) deleted from unreachable cache
Jul 11 13:27:47 localhost.localdomain named[1564]: zone magedu.com/IN: Transfer started.
Jul 11 13:27:47 localhost.localdomain named[1564]: transfer of 'magedu.com/IN' from 192.168.1.105#53: connected using 192.168.1.108#53715
Jul 11 13:27:47 localhost.localdomain named[1564]: zone magedu.com/IN: transferred serial 2018071203
Jul 11 13:27:47 localhost.localdomain named[1564]: transfer of 'magedu.com/IN' from 192.168.1.105#53: Transfer completed: 1 messages, 12 records, 287 bytes, 0.001 secs (287000 bytes/sec)
Jul 11 13:27:47 localhost.localdomain named[1564]: zone magedu.com/IN: sending notifies (serial 2018071203)



注意:在学习时建议关闭dnssec和防火墙

      在配置文件/etc/named.conf中:
        dnssec-enable no;
        dnssec-validation no;
        dnssec-lookaside no;
      使用systemctl stop firewalld.service命令关闭防火墙
       iptables -L -n 查看

子域授权

正向解析区域授权子域的方法:

#首先要在父域的主服务器上的区域解析库中添加子域信息
vim /var/named/mageedu.com.zone
    ops     IN      NS      ns1.ops
    ns1.ops IN      A       192.168.1.109
#然后在子域服务器上定义区域
    yum install bind -y
    vim /etc/named.conf  #在其中添加外网IP
        options {
                listen-on port 53 { 127.0.0.1; 192.168.1.109; };
    vim /etc/named.rfc1912.zones
        #在其中添加如下内容
        zone "ops.magedu.com" IN {
                type master;
                file "ops.magedu.com.zone";
        };
#在定义区域解析库文件
    vim /var/named/ops.magedu.com.zone
        #在其中添加如下内容
        $TTL 3600
        $ORIGIN ops.magedu.com.
        @       IN      SOA     ns.ops.magedu.com.      nsamdin.ops.magedu.com. (
                        2018070801
                        1H
                        10M
                        1D
                        2H )
                IN      NS      ns1
        ns1     IN      A       192.168.1.109
        www     IN      A       192.168.1.109
#修改其属组及权限
    [root@localhost ~]# chmod o= /var/named/ops.magedu.com.zone 
    [root@localhost ~]# chgrp named /var/named/ops.magedu.com.zone
    [root@localhost ~]# ls -ld /var/named/ops.magedu.com.zone
    -rw-r-----. 1 root named 184 Jul  8 11:23 /var/named/ops.magedu.com.zone
#检查语法错误
    named-checkzone ops.magedu.com /var/named/ops.magedu.com.zone 
#重载配置文件
    rndc reload
#在子域上使用dig命令解析测试
[root@localhost named]# dig -t A www.ops.magedu.com @192.168.1.109

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> -t A www.ops.magedu.com @192.168.1.109
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52894
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.ops.magedu.com.        IN  A

;; ANSWER SECTION:
www.ops.magedu.com. 3600    IN  A   192.168.1.109

;; AUTHORITY SECTION:
ops.magedu.com.     3600    IN  NS  ns1.ops.magedu.com.

;; ADDITIONAL SECTION:
ns1.ops.magedu.com. 3600    IN  A   192.168.1.109

;; Query time: 2 msec
;; SERVER: 192.168.1.109#53(192.168.1.109)
;; WHEN: Wed Jul 11 13:55:01 EDT 2018
;; MSG SIZE  rcvd: 97


#在父域上dig解析测试
[root@localhost named]# dig -t A www.ops.magedu.com @192.168.1.105

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> -t A www.ops.magedu.com @192.168.1.105
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16740
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.ops.magedu.com.        IN  A

;; ANSWER SECTION:
www.ops.magedu.com. 3600    IN  A   192.168.1.109

;; AUTHORITY SECTION:
ops.magedu.com.     3600    IN  NS  ns1.ops.magedu.com.

;; ADDITIONAL SECTION:
ns1.ops.magedu.com. 3600    IN  A   192.168.1.109

;; Query time: 12 msec
;; SERVER: 192.168.1.105#53(192.168.1.105)
;; WHEN: 四 7月 12 01:52:39 CST 2018
;; MSG SIZE  rcvd: 97


定义转发:
注意:被转发的服务器必须允许为当前服务做递归;
(1) 区域转发:仅转发对某特定区域的解析请求;

        zone  "ZONE_NAME"  IN {
            type  forward;
            forward  {first|only};
            forwarders  { SERVER_IP; };
        };

        first:首先转发;转发器不响应时,自行去迭代查询;
        only:只转发;

(2) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;

        options {
            ... ...
            forward  {only|first};
            forwarders  { SERVER_IP; };
            .. ...
        };

bind中的安全相关的配置:
acl:访问控制列表;把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集全内的所有主机实现统一调用;

    acl  acl_name  {
        ip;
        net/prelen;
    };

    示例:
        acl  mynet {
            172.16.0.0/16;
            127.0.0.0/8;
        };

bind有四个内置的acl

  • none:没有一个主机;
  • any:任意主机;
  • local:本机;
  • localnet:本机所在的IP所属的网络;

访问控制指令:

  • allow-query {}; 允许查询的主机;白名单;
  • allow-transfer {}; 允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;
  • allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求;
  • allow-update {}; DDNS,允许动态更新区域数据库文件中内容;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容