第九周《簡述常見加密算法及常見加密...》

一、簡述常見加密算法及常見加密算法原理,最好使用圖例解說

基本概念

加密:將數(shù)據(jù)轉換成不能直接讀取的形式(即密文)的過程叫加密。數(shù)據(jù)加密的基本過程就是對原來為明文的文件或數(shù)據(jù)按某種加密算法配合密鑰進行處理,使其成為不可讀的一段代碼,通常稱為"密文",使其只能在輸入相應的密鑰之后才能顯示出本來內(nèi)容,通過這樣的途徑來達到保護數(shù)據(jù)不被非法人竊取、閱讀的目的。
解密:加密的逆過程,使用密鑰配合加密算法,轉換成明文內(nèi)容。

安全防護的目標:
  • 保密性 Confidentiality:即隱私性;
  • 完整性 Integrity:指數(shù)據(jù)在傳輸過程中要保證能夠完整,還能保證傳輸后能夠還原回原來的數(shù)據(jù);
  • 可用性 Availability:指還原后的數(shù)據(jù)還能夠使用;
常見的安全性攻擊:
  • 威脅保密性的攻擊:竊聽、通信量統(tǒng)計;
  • 威脅完整性的攻擊:更改、偽裝、重放、否認;
  • 威脅可用性的攻擊:拒絕服務;
防范這些攻擊的安全機制:
  • 加密和解密、 數(shù)字簽名、 訪問控制、 數(shù)據(jù)完整性驗證、 認證交換、流量填充、路由控制、公證等方式
實現(xiàn)這些安全機制的安全服務:
  • 認證服務
  • 訪問控制服務
  • 數(shù)據(jù)保密性服務
  • 數(shù)據(jù)完整性服務
  • 不可否認性服務
    <為了保證這些服務的實現(xiàn),就需要一些密碼算法和協(xié)議(加密機制)來完成。>

常見的加密算法和協(xié)議

1.對稱加密:加密和解密使用同一個密鑰;加密算法和解密算法可能不同;

常見對稱加密算法:
DES:Data Encryption Standard;
加密端64位明文產(chǎn)生64位密文,解密端使用64位密文還原64位明文;64位為一個塊即8個字節(jié),加密和解密使用56位的密鑰,DES使用16個迭代塊;是現(xiàn)代加密算法,很多s核,p核進行計算;后來被破解;
3DES:Triple DES;
是DES的三個數(shù)量級,一個數(shù)量級是10的一次方;
AES:Advanced Encryption Standard;
(密鑰可為128bits, 192bits, 256bits, 384bits)安全程度非常高;
Blowfish加密算法
Twofish加密算法
IDEA商業(yè)加密算法
RC6加密算法
CAST5加密算法

  • 特性:
    1、加密、解密使用同一個密鑰;
    2、將原始數(shù)據(jù)分割成為固定大小的塊,逐個進行加密;

  • 缺陷:
    1、密鑰過多;
    2、密鑰分發(fā)困難;

2. 公鑰加密:密鑰分為公鑰與私鑰,成對兒出現(xiàn)
  • 特點:
    用公鑰加密的數(shù)據(jù),只能使用與之配對兒的私鑰解密;反之亦然
    密鑰長度較大,例如512bits,2048bits,4096bits;效率低下;
  • 用途:
    數(shù)字簽名:主要在于讓接收方確認發(fā)送方的身份;
    密鑰交換:發(fā)送方用對方公鑰加密一個對稱密鑰,并發(fā)送給對方
    數(shù)據(jù)加密
  • 常見算法:
    RSA:即能簽名、又能加密解密;
    DSA:數(shù)字簽名算法(標準)
    ELGamal:
公鑰加密工作模式
加密通信過程
  • 梳理:
    ---身份認證的實現(xiàn):
    發(fā)送方用自己的私鑰加密數(shù)據(jù)特征碼,接收方用對方的公鑰解密,如果加密成功即可實現(xiàn)身份認證,因為公鑰的成對出現(xiàn)的,私鑰只有自己有,公鑰所有人都有;
    ---數(shù)字簽名的實現(xiàn):
    在身份驗證中就依賴到了數(shù)字簽名,發(fā)送方用自己的私鑰加密數(shù)據(jù)特征碼這個結果就叫數(shù)字簽名;因此,數(shù)據(jù)簽名就為了完成身份驗證的;
    ---密鑰交換的實現(xiàn):
    自己先生成一個密碼,要用對方的公鑰加密這個自己生成的密碼,然后發(fā)送給對方,只有對方能解密,對方解密出來的就得到密碼了;所以就能使用這個密碼來解密使用對稱加密方式加密的數(shù)據(jù)了;
3. 單向加密:即提出數(shù)據(jù)指紋(特征碼);只能加密,不能解密
  • 特性:
    定長輸出:無論原來的數(shù)據(jù)是多大級別,其加密結果長度一樣;
    雪崩效應:原始數(shù)據(jù)微小改變,將會導致結果巨大變化;
    不可逆
  • 用途:
    數(shù)據(jù)完整性校驗
    系統(tǒng)帳號密碼校驗
  • 常見算法:
    MD5:128bits定長輸出
    SHA1: 160bits定長輸出
    SHA256:
    SHA384:
    SHA512:
    CRC32:
密鑰算法:

密鑰交換: IKE(Internet Key Exchange)
1、公鑰加密:實現(xiàn)密鑰交換;
密鑰是在網(wǎng)上發(fā)送的;
2、DH(Deffie-Hellman)算法
不發(fā)送密鑰就能使雙方完成密鑰交換

認證PKI:Public Key Infrastructure
  • 公鑰基礎設施:包括四部分
    簽證機構:CA
    注冊機構:RA
    證書吊銷列表:CRL
    證書存取庫
  • X.509v3:國際標準化組織定義了證書的結構以及認證協(xié)議標準,x.509有三版本;
    版本號:x.509的版本號;
    序列號
    簽名算法ID:簽名的使用算法;
    發(fā)行者名稱:CA的名稱
    有效期限:兩個日期,起始日期和終止日期
    主體名稱:證書擁有者名稱;
    主體公鑰:證書擁有者自己的公鑰
    發(fā)行者的惟一標識
    主體的惟一標識:證書擁有者
ssl協(xié)議
  • SSL:Secure sockets Layer
    Netscape網(wǎng)警公司: 1994發(fā)布,有3個版本;
    V1.0, V2.0, V3.0(有漏洞)
    TLS: Transport Layer Security
    IETF: 1999發(fā)布,有4個版本;
    V1.0(從來沒公開,漏洞多), V1.1, V1.2(主流), V1.3(2014年,沒到成熟期)

  • TLS協(xié)議采用分層設計:
    1、最底層:基礎算法原語的實現(xiàn),aes, rsa, md5
    2、第2層:各種算法的實現(xiàn);
    3、第3層:組合算法實現(xiàn)的半成品;
    4、最高層:用各種組件拼裝而成的各種成品密碼學協(xié)議軟件;

ssl的認證過程:

第一步:Visitor生成一個隨機數(shù),客戶端支持的加密方法,發(fā)送給服務端
第二步:Server確認雙方使用的加密方法,以及一個服務端生成的隨機數(shù)(Server random)、以及把服務端的數(shù)字證書發(fā)送個客戶端
第三步:客戶端驗證數(shù)字證書,用CA公鑰解密證書,查看證書有效期,和是否被吊銷,驗證通過后,生成一個新的隨機數(shù),(稱為預備主密鑰Pre-master secret),并使用Server的公鑰加密預備主密鑰發(fā)給Server。公鑰自然在證書里提取。
第四步:Server使用自己的私鑰,解密Visitor發(fā)來的預備主密鑰。
第五步:Visitor和Server雙方都具有了(客戶端隨機數(shù)+服務端隨機數(shù)+預備主密鑰),它們兩者都根據(jù)約定的加密方法,使用這三個隨機數(shù)生成對稱密鑰——主密鑰(也稱為對話密鑰session key),用來加密接下來的整個對話過程。
之后所有的數(shù)據(jù)在這次會話中只需要使用“對話密鑰”即可,不需要多余的機制

二、搭建apache或者nginx并使用自簽證書實現(xiàn)https訪問,自簽名證書的域名自擬

#首先自建一個私有CA
[root@wujunjie ~]# cd /etc/pki/CA/
[root@wujunjie CA]# ls
certs  crl  newcerts  private
[root@wujunjie CA]# (umask 077;openssl genrsa -out private/cakey.pem 4096) #生成CA本身私鑰
Generating RSA private key, 4096 bit long modulus
.......................++
...........................................................................++
e is 65537 (0x10001)
[root@wujunjie CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655#生成自簽證書
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:ZHEJIANG
Locality Name (eg, city) [Default City]:NINGBO
Organization Name (eg, company) [Default Company Ltd]:ZD
Organizational Unit Name (eg, section) []:opt
Common Name (eg, your name or your server's hostname) []:ns1.magedu.com         
Email Address []:aaa@magedu.com
注意:mkdir -pv {certs,crl,newcerts}沒有需創(chuàng)建
[root@wujunjie CA]# touch {serial,index.txt}
[root@wujunjie CA]# echo 01 >serial 
[root@wujunjie CA]# ls
cacert.pem  certs  crl  index.txt  newcerts  private  serial
[root@wujunjie CA]# cat serial 
01
到此私有CA就創(chuàng)建完成,下面到需要用到證書安全通信的服務器上向CA請求簽署證書,我們以apache為例
[root@wujunjie6 ~]#mkdir /etc/httpd/ssl
[root@wujunjie6 ~]#cd /etc/httpd/ssl
[root@wujunjie6 ssl]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) #生成私鑰
[root@wujunjie6 ssl]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365#生成證書簽署請求
注意:這里的證書服務器的公司名要與證書的頒發(fā)者單位要一致,同一個地域,否則通過不了認證;根據(jù)提示輸入相關信息,完成即可;
[root@wujunjie6 ssl]# scp httpd.csr root@192.168.32.129:/tmp#將請求通過可靠方式發(fā)送給CA 主機
在CA主機上簽署證書:
[root@wujunjie CA]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
在CA主機上查看證書, 到此apache自簽證書完成
[root@wujunjie CA]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
serial=01
subject= /C=CN/ST=ZHEJIANG/O=ZD/OU=opt/CN=www.magedu.com/emailAddress=admin@magedu.com

三、簡述DNS服務器原理,并搭建主-輔服務器

什么是DNS?

DNS( Domain Name System)是“域名系統(tǒng)”的英文縮寫,是一種組織成域層次結構的計算機和網(wǎng)絡服務命名系統(tǒng),它用于TCP/IP網(wǎng)絡,它所提供的服務是用來將主機名和域名轉換為IP地址的工作。DNS就是這樣的一位“翻譯官”,它的基本工作原理可用下圖來表示。
DNS名稱解析方式:

名稱—->IP:正向解析
IP—->名稱:反向解析
注意:二者的名稱空間,非為同一空間,即非為同一棵樹;因此,也不是同一個解析庫。

DNS 查詢的過程:

1、在瀏覽器中輸入www.qq.com域名,操作系統(tǒng)會先檢查自己本地的hosts文件是否有這個網(wǎng)址映射關系,如果有,就先調用這個IP地址映射,完成域名解析。 2、如果hosts里沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網(wǎng)址映射關系,如果有,直接返回,完成域名解析。 3、如果hosts與本地DNS解析器緩存都沒有相應的網(wǎng)址映射關系,首先會找TCP/ip參數(shù)中設置的首選DNS服務器,在此我們叫它本地DNS服務器,此服務器收到查詢時,如果要查詢的域名,包含在本地配置區(qū)域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。 4、如果要查詢的域名,不由本地DNS服務器區(qū)域解析,但該服務器已緩存了此網(wǎng)址映射關系,則調用這個IP地址映射,完成域名解析,此解析不具有權威性。 5、如果本地DNS服務器本地區(qū)域文件與緩存解析都失效,則根據(jù)本地DNS服務器的設置(是否設置轉發(fā)器)進行查詢,如果未用轉發(fā)模式,本地DNS就把請求發(fā)至13臺根DNS,根DNS服務器收到請求后會判斷這個域名(.com)是誰來授權管理,并會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息后,將會聯(lián)系負責.com域的這臺服務器。這臺負責.com域的服務器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(qq.com)給本地DNS服務器。當本地DNS服務器收到這個地址后,就會找qq.com域服務器,重復上面的動作,進行查詢,直至找到www.qq.com主機。 6、如果用的是轉發(fā)模式,此DNS服務器就會把請求轉發(fā)至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根DNS或把轉請求轉至上上級,以此循環(huán)。不管是本地DNS服務器用是是轉發(fā),還是根提示,最后都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。

主-輔DNS服務器及搭建
  1. 主DNS服務器:維護所負責解析的域數(shù)據(jù)庫的那臺服務器;讀寫操作均可進行;
  2. 從DNS服務器:從主DNS服務器那里或其它的從DNS服務器那里“復制”一份解析庫;但只能進行讀操作;
  • “復制”操作的實施方式:
    序列號:serial, 也即是數(shù)據(jù)庫的版本號;主服務器數(shù)據(jù)庫內(nèi)容發(fā)生變化時,其版本號遞增;
    刷新時間間隔:refresh, 從服務器每多久到主服務器檢查序列號更新狀況;
    重試時間間隔:retry, 從服務器從主服務器請求同步解析庫失敗時,再次發(fā)起嘗試請求的時間間隔;
    過期時長:expire,從服務器始終聯(lián)系不到主服務器時,多久之后放棄從主服務器同步數(shù)據(jù);停止提供服務;
    否定答案的緩存時長:
  • 主服務器”通知“從服務器隨時更新數(shù)據(jù);
    區(qū)域傳送:
    全量傳送:axfr, 傳送整個數(shù)據(jù)庫;
    增量傳送:ixfr, 僅傳送變量的數(shù)據(jù);
  • 區(qū)域(zone)和域(domain): magedu.com域
    FQDN –> IP
    正向解析庫;區(qū)域
    IP –> FQDN
    反向解析庫;區(qū)域
  • 區(qū)域數(shù)據(jù)庫文件:
    資源記錄:Resource Record, 簡稱rr;
    記錄有類型:A, AAAA, PTR, SOA, NS, CNAME, MX

SOA:Start Of Authority,起始授權記錄; 一個區(qū)域解析庫有且只能有一個SOA記錄,而且必須放在第一條;
NS:Name Service,域名服務記錄;一個區(qū)域解析庫可以有多個NS記錄;其中一個為主的
A: Address, 地址記錄,F(xiàn)QDN –> IPv4;
AAAA:地址記錄, FQDN –> IPv6;
CNAME:Canonical Name,別名記錄;
PTR:Pointer,IP –> FQDN
MX:Mail eXchanger,郵件交換器;
優(yōu)先級:0-99,數(shù)字越小優(yōu)先級越高;
資源記錄的定義格式:
語法: name [TTL] IN RR_TYPE value

  • SOA:
    name: 當前區(qū)域的名字;例如”mageud.com.”,或者“2.3.4.in-addr.arpa.”;
    1.value:有多部分組成
    (1) 當前區(qū)域的區(qū)域名稱(也可以使用主DNS服務器名稱);
    (2) 當前區(qū)域管理員的郵箱地址;但地址中不能使用@符號,一般使用點號來替代;
    (3) (主從服務協(xié)調屬性的定義以及否定答案的TTL)

    例如:
    magedu.com.     86400   IN      SOA     magedu.com.     admin.magedu.com.  (
                                  2017010801  ; serial
                                  2H          ; refresh
                                  10M         ; retry
                                  1W          ; expire
                                  1D          ; negative answer ttl 
                      )   
    
  • NS:域名服務記錄
    name: 當前區(qū)域的區(qū)域名稱
    value:當前區(qū)域的某DNS服務器的名字,例如ns.magedu.com.;
    注意:一個區(qū)域可以有多個ns記錄;

    例如:
    magedu.com.     86400   IN  NS      ns1.magedu.com.
    magedu.com.     86400   IN  NS      ns2.magedu.com. 
    
  • MX:郵件交換器
    name: 當前區(qū)域的區(qū)域名稱
    value:當前區(qū)域某郵件交換器(即smtp服務器)的主機名;
    注意:MX記錄可以有多個;但每個記錄的value之前應該有一個數(shù)字表示其優(yōu)先級;數(shù)字越小優(yōu)先級越高;

    例如:
     magedu.com.         IN  MX  10      mx1.magedu.com.
     magedu.com.         IN  MX  20      mx2.magedu.com.
    
  • A:IPv4地址記錄
    name:某FQDN,例如www.magedu.com.
    一個主機可有多個IP地址;
    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
    
  • AAAA:
    name:FQDN
    value: IPv6

  • 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.
    
  • CNAME:別名記錄
    name:FQDN格式的別名;
    value:FQDN格式的正式名字;

    例如:
    web.magedu.com.     IN      CNAME  www.magedu.com.          
    
注意:資源記錄一些法則

(1) TTL可以從全局繼承;在每個類型記錄里可省略;
(2) @表示當前區(qū)域的名稱;任何記錄里都可用@代替;
(3) 相鄰的兩條記錄其name相同時,后面的可省略;

例如:
www.magedu.com.     IN  A   1.1.1.1
                    IN  A   1.1.1.2

(4) 對于正向區(qū)域來說,各MX,NS等類型的記錄的value為FQDN,此FQDN應該有一個A記錄;

搭建DNS主服務器
1. 安裝bind服務程序
[root@wujunjie ~]# yum install bind -y
[root@wujunjie ~]# rpm -ql bind
/etc/logrotate.d/named
/etc/named
/etc/named.conf    #主配置文件
/etc/named.iscdlv.key
/etc/named.rfc1912.zones   #區(qū)域配置文件
/etc/named.root.key
/etc/rndc.conf
2. 編輯主配置文件
 [root@wujunjie ~]# vim /etc/named.conf
options {
        listen-on port 53 { any; };    #監(jiān)聽在能與外部主機通信的地址
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
………………………………….
#       allow-query     { localhost; };   #關閉僅允許本地查詢即加#注釋
…………………………………
recursion yes;
        dnssec-enable no;    #學習時建議關閉
        dnssec-validation no;   #學習時建議關閉
3.檢查主配置文件語法并啟動bind服務程序
[root@wujunjie ~]# named-checkconf 
[root@wujunjie ~]# systemctl start named
[root@wujunjie ~]# systemctl status named.service 
?.named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2018-10-13 13:45:14 CST; 7s ago
4.配置域文件
[root@wujunjie ~]# vim /etc/named.rfc1912.zones
######在底部添加以下區(qū)域配置
zone "magedu.com" IN {           #正向解析
        type master;
        file "magedu.com.zone"
        allow-update { none; };
};
zone "32.168.192.in-addr.arpa" IN {         #反向解析
        type master;
        file "192.168.32.in-addr.zone";
};
5.創(chuàng)建對應區(qū)域解析文件
[root@wujunjie named]# vim magedu.com.zone
$TTL 3600
$ORIGIN magedu.com.
      @   IN    SOA   ns1.magedu.com.   dnsadmin.magedu.com. (
              01
              1H
              10M
              3D
              1D )
          IN        NS      ns1
          IN        MX    10 mx1
ns1       IN  A   192.168.32.128
mx1       IN  A   192.168.32.128
www       IN  A   192.168.32.128
bbs       IN  A   192.168.32.130
web       IN  CNAME   www
[root@wujunjie named]# vim 192.168.32.in-addr.zone
$TTL 3600
$ORIGIN 32.168.192.in-addr.arpa.
@   IN  SOA ns1.magedu.com. dnsadmin.magedu.com. (
        01
        1H
        10M
        3D
        1D )
    IN  NS  ns1.magedu.com.
128 IN  PTR ns1.magedu.com.
128 IN  PTR www.magedu.com.
130 IN  PTR bbs.magedu.com.
6.修改權限及屬組
[root@wujunjie named]# chgrp named 192.168.32.in-addr.zone 
[root@wujunjie named]# chgrp named magedu.com.zone
[root@wujunjie named]# chmod o= 192.168.32.in-addr.zone 
[root@wujunjie named]# chmod o= magedu.com.zone
7.再次檢查語法錯誤并重載服務
[root@wujunjie named]# rndc reload
server reload successful
[root@wujunjie named]# systemctl status named.service 
?.named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled;   vendor preset: disabled)
   Active: active (running) since Sat 2018-10-13 13:45:14 CST; 58min ago
……………………………………
8.更改本地DNS服務器并測試正向和反向解析
[root@wujunjie named]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.32.128
[root@wujunjie named]# dig -t A www.magedu.com 

; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5360
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, 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.32.128

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

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

;; Query time: 0 msec
;; SERVER: 192.168.32.128#53(192.168.32.128)
;; WHEN: Sat Oct 13 15:03:28 CST 2018
;; MSG SIZE  rcvd: 93
[root@wujunjie named]# dig -x 192.168.32.130

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

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

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

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

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

;; Query time: 0 msec
;; SERVER: 192.168.32.128#53(192.168.32.128)
;; WHEN: Sat Oct 13 15:06:34 CST 2018
;; MSG SIZE  rcvd: 118```
搭建DNS從服務器
##搭建DNS從服務器需配置需配置防火墻與selinux(便于實驗我將關閉防火墻與selinux)
1.安裝bind服務程序并配置相關的設置,參考上述主服務器搭建
[root@wujunjie6 ~]# yum install bind -y
[root@wujunjie6 ~]# 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";
#       allow-query     { localhost; };
        recursion yes;

        dnssec-enable no;
        dnssec-validation no;

2.啟動bind程序并且配置從服務器上對應的域配置文件
[root@wujunjie6 ~]# service named start
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]
[root@wujunjie6 ~]# vim /etc/named.rfc1912.zones
######在底部添加以下區(qū)域配置
zone "magedu.com" IN {
        type slave;
        file "slaves/magedu.com.zone";
        masters { 192.168.32.128; };
};
zone "32.168.192.in-addr.arpa" IN {
        type slave;
        file "slaves/192.168.32.in-addr.zone";
        masters { 192.168.32.128; };
};
[root@wujunjie6 ~]# named-checkconf
3.切回到主DNS服務器,在主服務器域配置文件中添加從服務器的IP信息
[root@wujunjie named]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
        type master;
        file "magedu.com.zone";
        allow-update { 192.168.32.129; };
};
zone "32.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.32.in-addr.zone";
        allow-update { 192.168.32.129; };
};
4.切回到主DNS服務器,在主服務器數(shù)據(jù)配置文件中添加從服務器IP與域的一一對應關系
[root@wujunjie named]# cat magedu.com.zone 
$TTL 3600
$ORIGIN magedu.com.

@         IN    SOA   ns1.magedu.com.   dnsadmin.magedu.com. (
              03
              1H
              10M
              3D
              1D )
          IN        NS      ns1
          IN        NS      ns2
          IN        MX    10 mx1
ns1       IN  A   192.168.32.128
ns2       IN  A   192.168.32.129
mx1       IN  A   192.168.32.128
www       IN  A   192.168.32.128
bbs       IN  A   192.168.32.130
web       IN  CNAME   www
[root@wujunjie named]# cat 192.168.32.in-addr.zone 
$TTL 3600
$ORIGIN 32.168.192.in-addr.arpa.
@   IN  SOA ns1.magedu.com. dnsadmin.magedu.com. (
        04
        1H
        10M
        3D
        1D )
    IN  NS  ns1.magedu.com.
128 IN  PTR ns1.magedu.com.
129 IN  PTR ns2.magedu.com.
128 IN  PTR www.magedu.com.
130 IN  PTR bbs.magedu.com.
5.先重載主服務器端bind程序,然后切回從服務器重載等待更新同步完成
[root@wujunjie named]# rndc reload
server reload successful
[root@wujunjie6 ~]# rndc reload
server reload successful
#主服務器優(yōu)先重載,然后才是從服務器
6.測試從服務器正向反向解析
[root@wujunjie6 ~]# dig -t A www.magedu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> -t A www.magedu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49006
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.magedu.com.            IN  A

;; ANSWER SECTION:
www.magedu.com.     3600    IN  A   192.168.32.128

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

;; ADDITIONAL SECTION:
ns1.magedu.com.     3600    IN  A   192.168.32.128
ns2.magedu.com.     3600    IN  A   192.168.32.129

;; Query time: 0 msec
;; SERVER: 192.168.32.129#53(192.168.32.129)
;; WHEN: Mon Oct 15 12:23:22 2018
;; MSG SIZE  rcvd: 116
[root@wujunjie6 ~]# dig -x 192.168.32.128

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> -x 192.168.32.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64094
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;128.32.168.192.in-addr.arpa.   IN  PTR

;; ANSWER SECTION:
128.32.168.192.in-addr.arpa. 3600 IN    PTR ns1.magedu.com.
128.32.168.192.in-addr.arpa. 3600 IN    PTR www.magedu.com.

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

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

;; Query time: 0 msec
;; SERVER: 192.168.32.129#53(192.168.32.129)
;; WHEN: Mon Oct 15 12:24:25 2018
;; MSG SIZE  rcvd: 121

四、搭建并實現(xiàn)智能DNS

1.安裝bind服務

[root@localhost ~]# yum install bind -y

2.配置修改主文件

[root@localhost named]# cat /etc/named.conf 
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
acl "ningbo" { 192.168.32.128; };      #添加訪問控制
acl "shanghai" { 192.168.32.129; };     #添加訪問控制

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";
    allow-query     { any; };     #需修改

    /* 
     - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
     - If you are building a RECURSIVE (caching) DNS server, you need to enable 
       recursion. 
     - If your recursive DNS server has a public IP address, you MUST enable access 
       control to limit queries to your legitimate users. Failing to do so will
       cause your server to become part of large scale DNS amplification 
       attacks. Implementing BCP38 within your network would greatly
       reduce such attack surface 
    */
    recursion yes;

    dnssec-enable no;       #需修改
    dnssec-validation no;      #需修改

    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";

    managed-keys-directory "/var/named/dynamic";

    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

view ningbo {                         #添加以下view
    match-clients { ningbo; };
    zone "." IN {
        type hint;
        file "named.ca";
    };
    zone "magedu.com" IN {
        type master;
        file "magedu.com.ningbo";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
view shanghai {
    match-clients { shanghai; };
    zone "." IN {
        type hint;
        file "named.ca";
    };
    zone "magedu.com" IN {
        type master;
        file "magedu.com.shanghai";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};

view default {
    match-clients { any; };
    zone "." IN {
        type hint;
        file "named.ca";
    };
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
[root@localhost ~]# systemctl start named

3.對數(shù)據(jù)文件做配置

[root@localhost named]# cat magedu.com.ningbo 
$TTL 1D
@   IN SOA  magedu.com. admin.magedu.com. (
                    1   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    NS  ns
ns  A   192.168.32.132
www A   192.168.32.32
[root@localhost named]# cat magedu.com.shanghai 
$TTL 1D
@   IN SOA  magedu.com. admin.magedu.com. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    NS  ns
ns  A   192.168.32.132
www A   192.168.3.32

4.對配置文件做語法檢查并重載操作

[root@localhost named]# named-checkconf 
[root@localhost named]# named-checkzone magedu.com /var/named/magedu.com.ningbo zone magedu.com/IN: loaded serial 1
OK
[root@localhost named]# named-checkzone magedu.com /var/named/magedu.com.shanghai 
zone magedu.com/IN: loaded serial 0
OK [root@localhost named]# rndc reload
server reload successful

5.測試不同區(qū)域的解析

###在192.168.32.128測試解析結果
[root@wujunjie ~]# nslookup 
> server 192.168.32.132
Default server: 192.168.32.132
Address: 192.168.32.132#53
> set q=A
> www.magedu.com
Server:     192.168.32.132
Address:    192.168.32.132#53

Name:   www.magedu.com
Address: 192.168.32.32
###在192.168.32.129測試解析結果
[root@wujunjie6 ~]# nslookup 
> server 192.168.32.132
Default server: 192.168.32.132
Address: 192.168.32.132#53
> set q=A
> www.magedu.com
Server:     192.168.32.132
Address:    192.168.32.132#53

Name:   www.magedu.com
Address: 192.168.3.32

到此一個智能DNS解析便搭建完成了,如果能將公網(wǎng)上的電信和聯(lián)通IP分別寫入ACL列表中,并且將此服務器接入了多個運營商線路,使得其能夠在公網(wǎng)上提供DNS解析,那么此服務器就能為來自不同運行商的客戶端IP提供智能DNS解析了。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容