加密解密Openssl和DNS

常見加密算法及原理

安全防護的目標(biāo):
  • 保密性 Confidentiality:即隱私性;
  • 完整性 Integrity:指數(shù)據(jù)在傳輸過程中要保證能夠完整赠叼,還能保證傳輸后能夠還原回原來的數(shù)據(jù)构舟;
  • 可用性 Availability:指還原后的數(shù)據(jù)還能夠使用纱昧;
常見的安全性攻擊:
  • 威脅保密性的攻擊:竊聽户矢、通信量統(tǒng)計虏肾;
  • 威脅完整性的攻擊:更改冠蒋、偽裝羽圃、重放、否認抖剿;
  • 威脅可用性的攻擊:拒絕服務(wù)朽寞;
防范這些攻擊的安全機制:
  • 加密和解密、 數(shù)字簽名牙躺、 訪問控制愁憔、 數(shù)據(jù)完整性驗證、 認證交換孽拷、流量填充吨掌、路由控制、公證等方式
實現(xiàn)這些安全機制的安全服務(wù):
  • 認證服務(wù)
  • 訪問控制服務(wù)
  • 數(shù)據(jù)保密性服務(wù)
  • 數(shù)據(jù)完整性服務(wù)
  • 不可否認性服務(wù)
    為了保證這些服務(wù)的實現(xiàn)脓恕,就需要一些密碼算法和協(xié)議(加密機制)來完成膜宋。

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

  1. 對稱加密:加密和解密使用同一個密鑰,依賴于算法和密鑰炼幔,但其安全性依賴于密鑰而非算法

    • 常見的算法:
      DES:Data Encrpytion Standard秋茫;56bits
      3DES:Triple DES
      AES:Advanced encrypytion Standard;(128bits乃秀,192bits肛著,256bits,384bits)
      Blowfish
      Twofish
      IDEA
      RC6
      CAST5

    • 特性:

      • 加密跺讯、解密使用同一密鑰枢贿;
      • 將原始數(shù)據(jù)分割成為固定大小的塊,逐個進行加密刀脏;
    • 缺陷:

      • 密鑰過多
      • 密鑰分發(fā)困難
  2. 公鑰加密:密鑰成對出現(xiàn)局荚,分為公鑰和私鑰;
    公鑰:pubkey愈污,公開給所有人(從私鑰中提取產(chǎn)生)耀态;
    私鑰:secret key ,通過工具創(chuàng)建暂雹,使用者自己留存首装,必須保證其私密性;

    • 特點:

      • 用公鑰加密的數(shù)據(jù)擎析,只能使用與之配對兒的私鑰解密簿盅;反之亦然
      • 密鑰長度較大挥下,例如512bits揍魂,2048bits桨醋,4096bits;效率低下现斋;
    • 用途:

      • 數(shù)字簽名:主要在于讓接收方確認發(fā)送方的身份喜最;
      • 密鑰交換:發(fā)送方用對方公鑰加密一個對稱密鑰,并發(fā)送給對方
      • 數(shù)據(jù)加密
    • 常見算法:
      RSA:即能簽名庄蹋、又能加密解密瞬内;
      DSA:數(shù)字簽名算法(標(biāo)準(zhǔn))
      ELGamal:

    • 公鑰加密工作模式

加密通信過程.png
  1. 單向加密:只能加密,不能解密限书,即提取數(shù)據(jù)指紋(特征碼)虫蝶;

    • 特性:

      • 定長輸出:無論原來的數(shù)據(jù)是多大級別,其加密結(jié)果長度一樣倦西;
      • 雪崩效應(yīng):原始數(shù)據(jù)微小改變能真,將會導(dǎo)致結(jié)果巨大變化;
      • 不可逆
    • 用途:

      • 數(shù)據(jù)完整性校驗
      • 系統(tǒng)帳號密碼校驗
    • 常見算法:
      MD5:128bits定長輸出
      SHA1: 160bits定長輸出
      SHA256:
      SHA384:
      SHA512:
      CRC32:

  2. 密鑰交換:IKE(Internet Key Exchange)扰柠,雙方通過交換密鑰來實現(xiàn)數(shù)據(jù)加密解密粉铐;
    密鑰交換友以下兩種:

    • 公交加密
    • DH:(Deffie-Hellman),雙方共用一些參數(shù)卤档,共同協(xié)商加密算法蝙泼,除此之外雙方還有屬于自己的私有參數(shù),通過共有的參數(shù)劝枣、私有參數(shù)和算法來進行加密汤踏,然后雙方將計算后的結(jié)果進行交換,交換完成后再和屬于自己私有的參數(shù)進行特殊算法舔腾,經(jīng)過雙方計算后的結(jié)果是相同的溪胶,而這個結(jié)果就是密鑰。

例如:
A 有 p 和 g 兩個參數(shù)琢唾,A 還有一個屬于自己的私有參數(shù)x载荔;
B 有 p 和 g 兩個參數(shù),B還有一個屬于自己的私有參數(shù)y采桃;
A 和 B 有相同的加密算法 即 A: p^x%g
B: p^y%g 然后上方交換計算后的結(jié)果懒熙,此時
A 拿到B 的 p^y%g , B 拿到A 的 p^x%g,雙方在和自己私有參數(shù)進行相同的算法
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的結(jié)果是一樣的普办。
注意:整個過程中對于第三方人員來說只能獲取p工扎、g兩個值,AB雙方交換的是經(jīng)過計算后的值衔蹲,因此這種加密方式是很安全的

PKI:Public Key Infrastructure
  • 公鑰基礎(chǔ)實施:

    • 簽證機構(gòu):CA肢娘,真正頒發(fā)證書的機構(gòu)呈础;
    • 注冊機構(gòu):RA, 幫你拍照信息錄入的機構(gòu)橱健;
    • 證書吊銷機構(gòu):CRL而钞,相當(dāng)于我們證件丟失時掛失的內(nèi)容;
    • 證書存取庫:當(dāng)別人請求認證時的數(shù)據(jù)庫拘荡;
  • X.509 v3:定義了數(shù)字證書的結(jié)構(gòu)以及認證標(biāo)準(zhǔn)臼节;它由以下幾個部分組成:

    • 版本號(version)
    • 序列號(serial number):CA用于唯一標(biāo)識此證書
    • 簽名算法ID(Signature algorithm identifier)
    • 發(fā)行者的名稱:即CA在即的名稱
    • 有效期:兩個日期,起始日期和終止日期
    • 證書主體名稱:證書擁有者自己的名字
    • 證書主體公鑰:證書擁有者自己的公鑰
    • 發(fā)行商的唯一標(biāo)識
    • 證書主體的唯一標(biāo)識

SSL/TSL

SSL:(Secure Sockets Layer)安全套接層珊皿,是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議网缝。

  • SSL是由Netscape1994年發(fā)布,版本有:v1.0蟋定、v2.0粉臊、v3.0;

  • SSL分兩層:

    • SSL記錄協(xié)議(SSL Record Protocol)
    • SSL握手協(xié)議(SSL Handshake Protocol)

TLS:(Transport Layer Security)傳輸層安全驶兜,與SSL在傳輸層對網(wǎng)絡(luò)連接進行加密扼仲。

  • TLS是由IETF組織1999年發(fā)布,版本有v1.0 v1.1 v1.2 v1.3促王;

  • TLS分層設(shè)計:

    • 最低層:基礎(chǔ)算法原語的實現(xiàn)犀盟;如aes、rsa蝇狼、md5
    • 向上一層:各種算法的實現(xiàn)阅畴;
    • 再向上一層:組合算法實現(xiàn)的半成品;
    • 用各種組件拼裝而成的各種成品密碼學(xué)協(xié)議軟件迅耘;
SSL會話主要三步:
  1. 客戶端向服務(wù)器端索要并驗正證書贱枣;
  2. 雙方協(xié)商生成“會話密鑰”;
  3. 雙方采用“會話密鑰”進行加密通信颤专;
- SSL握手協(xié)議(SSL Handshake Protocol)

第一階段:ClientHello:

  • 支持的協(xié)議版本纽哥,比如:tls 1.2;
  • 客戶端生產(chǎn)一個隨機數(shù)栖秕,稍后用戶會生產(chǎn)“會話秘鑰”
  • 支持的加密算法春塌,比如AES、3DES簇捍、RSA
  • 支持的壓縮算法

第二階段:ServerHello:

  • 確認使用的加密通信協(xié)議版本只壳,比如tls 1.2
  • 服務(wù)器端生成一個隨機數(shù),稍后用于生成“會話秘鑰”
  • 確認使用的加密算法
  • 服務(wù)器證書

第三階段:

  • 驗正服務(wù)器證書暑塑,在確認無誤后取出其公鑰吼句;(發(fā)證機構(gòu)、證書完整性事格、證書持有者惕艳、證書有效期搞隐、吊銷列表)

  • 發(fā)送以下信息給服務(wù)器端:

    • 一個隨機數(shù);
    • 編碼變更通知远搪,表示隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送劣纲;
    • 客戶端握手結(jié)束通知;

第四階段:

  • 收到客戶端發(fā)來的第三個隨機數(shù)pre-master-key后终娃,計算生成本次會話所有到的“會話密鑰”味廊;

  • 向客戶端發(fā)送如下信息:

    • 編碼變更通知蒸甜,表示隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送棠耕;
    • 服務(wù)端握手結(jié)束通知;

Openssl

Openssl是ssl的一個開源項目柠新,其由三個部分組成:

  1. openssl:多用途的命令行工具
  2. libcrypto:加密窍荧,界面庫文件,主要又開發(fā)者使用
  3. libssl:ssl協(xié)議實現(xiàn)
openssl命令

子命令分類:標(biāo)準(zhǔn)命令恨憎、消息摘要命令蕊退、加密解密相關(guān)命令。

對稱加密:
  • 工具: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
  • 數(shù)字簽名:

    • 算法: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是可讀的,因此我們應(yīng)該把bash命令行上放在小括號中執(zhí)行命令匀泊,這其實是通過打開一個子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系統(tǒng)上的隨機數(shù)生成器:
  • /dev/random:僅從熵池返回隨機數(shù)优训;隨機數(shù)用盡,阻塞探赫;
  • /dev/urandom:從熵池返回隨機數(shù)型宙;隨機數(shù)用盡,會利用軟件生成偽隨機數(shù)伦吠,非阻塞妆兑;
    偽隨機數(shù)不安全魂拦;
  • 熵池中隨機數(shù)的來源:
    硬盤IO中斷時間間隔;
    鍵盤IO中斷時間間隔搁嗓;

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

#首先自建一個私有CA
[root@dns1 ~]# cd /etc/pki/CA #cd到CA目錄下
[root@dns1 CA]# mkdir private  #創(chuàng)建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: 已創(chuàng)建目錄 "certs"
    mkdir: 已創(chuàng)建目錄 "crl"
    mkdir: 已創(chuàng)建目錄 "newcerts"
    [root@dns1 CA]# touch {serial,index.txt}
    [root@dns1 CA]# echo 01 >serial
    [root@dns1 CA]# cat serial
    01

#到此私有CA就創(chuàng)建完成腺逛,下面到需要用到證書安全通信的服務(wù)器上向CA請求簽署證書荷愕,我們以nginx為例

[root@localhost ssl]# yum install nginx -y #安裝nginx
[root@localhost ssl]# mkdir /etc/nginx/ssl #在nginx目錄下創(chuàng)建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  #將請求通過可靠方式發(fā)送給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棍矛,應(yīng)用層協(xié)議安疗;屬于C/S架構(gòu),監(jiān)聽在53端口
FQDN:Full Qualified Domain Name够委;如www.magedu.com
tld:Top Level Domain荐类;頂級域

  • 組織域:.com, .net, .org, .gov, .edu, .mil
  • 國家地區(qū)域:.iq, .tw, .hk, .jp, .cn, …

DNS查詢類型:

  • 遞歸查詢
  • 迭代查詢

DNS名稱解析方式:

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

DNS服務(wù)器類型:

  • 負責(zé)解析至少一個域:

    • 主名稱服務(wù)器吊输;
    • 輔助名稱服務(wù)器;
  • 不負責(zé)哉解析:

    • 緩存名稱服務(wù)器铁追;

一次完整的查詢請求經(jīng)過的流程:

DNS名稱解析過程.png

1.Client訪問Server請求首先查找本地的hosts文件季蚂,如果找到即結(jié)束;
2.如果本地hosts文件未找到脂信,則向本地DNS緩存文件查詢癣蟋,如找到即結(jié)束;
3.如本地DNS緩存文件未找到狰闪,則向DNS發(fā)起遞歸查詢請求疯搅,如果是DNS自己負責(zé)解析的域,直接查詢數(shù)據(jù)庫并返回答案埋泵;
4.如果不是自己負責(zé)的解析域幔欧,則以迭代查詢類型向根域發(fā)起查詢請求;根域返回其所屬頂級域丽声;
5.DNS向所屬頂級域發(fā)起查詢請求礁蔗,頂級域?qū)⒔Y(jié)果返回;
6.DNS將所查詢到的結(jié)果發(fā)送給Client雁社;
7.Client即可向Server發(fā)起訪問浴井;

主-輔DNS服務(wù)器及搭建

1. 主DNS服務(wù)器:維護所負責(zé)解析的域數(shù)據(jù)庫的那臺服務(wù)器;讀寫操作均可進行霉撵;
2. 從DNS服務(wù)器:從主DNS服務(wù)器那里或其它的從DNS服務(wù)器那里“復(fù)制”一份解析庫磺浙;但只能進行讀操作洪囤;

  • “復(fù)制”操作的實施方式:

    • 序列號:serial, 也即是數(shù)據(jù)庫的版本號;主服務(wù)器數(shù)據(jù)庫內(nèi)容發(fā)生變化時撕氧,其版本號遞增瘤缩;
    • 刷新時間間隔:refresh, 從服務(wù)器每多久到主服務(wù)器檢查序列號更新狀況;
    • 重試時間間隔:retry, 從服務(wù)器從主服務(wù)器請求同步解析庫失敗時伦泥,再次發(fā)起嘗試請求的時間間隔剥啤;
    • 過期時長:expire,從服務(wù)器始終聯(lián)系不到主服務(wù)器時不脯,多久之后放棄從主服務(wù)器同步數(shù)據(jù)府怯;停止提供服務(wù);
    • 否定答案的緩存時長:
    • 主服務(wù)器”通知“從服務(wù)器隨時更新數(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彤断,起始授權(quán)記錄; 一個區(qū)域解析庫有且只能有一個SOA記錄易迹,而且必須放在第一條宰衙;
    • NS:Name Service,域名服務(wù)記錄睹欲;一個區(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

    1. SOA:
      name: 當(dāng)前區(qū)域的名字岔乔;例如”mageud.com.”,或者“2.3.4.in-addr.arpa.”滚躯;
      value:有多部分組成
      (1) 當(dāng)前區(qū)域的區(qū)域名稱(也可以使用主DNS服務(wù)器名稱)雏门;
      (2) 當(dāng)前區(qū)域管理員的郵箱地址;但地址中不能使用@符號掸掏,一般使用點號來替代茁影;
      (3) (主從服務(wù)協(xié)調(diào)屬性的定義以及否定答案的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: 當(dāng)前區(qū)域的區(qū)域名稱
    value:當(dāng)前區(qū)域的某DNS服務(wù)器的名字降狠,例如ns.magedu.com.偶惠;
    注意:一個區(qū)域可以有多個ns記錄;
            例如:
                magedu.com.     86400   IN  NS      ns1.magedu.com.
                magedu.com.     86400   IN  NS      ns2.magedu.com.

  1. MX:
    name: 當(dāng)前區(qū)域的區(qū)域名稱
    value:當(dāng)前區(qū)域某郵件交換器的主機名罗捎;
    注意:MX記錄可以有多個愿待;但每個記錄的value之前應(yīng)該有一個數(shù)字表示其優(yōu)先級浩螺;
            例如:
                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的記錄應(yīng)該寫為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) @表示當(dāng)前區(qū)域的名稱醉顽;
(3) 相鄰的兩條記錄其name相同時沼溜,后面的可省略;
(4) 對于正向區(qū)域來說徽鼎,各MX盛末,NS等類型的記錄的value為FQDN,此FQDN應(yīng)該有一個A記錄否淤;

主DNS服務(wù)器搭建
    #安裝bind和bind-utils程序包
    [root@dns1 ~]# yum install bind -y
    [root@dns1 ~]# yum install bind-utils -y

配置解析正向區(qū)域

    #定義區(qū)域
    [root@dns1 ~]# vim /etc/named.rfc1912.zones
    #在文件最后添加
    zone "magedu.com" IN {
            type master;
            file "magedu.com.zone";
    };
    #建立區(qū)域數(shù)據(jù)文件
    [root@dns1 ~]# cd /var/named
    [root@dns1 named]# vim magedu.com.zone
    #在打開的文件中輸入下面內(nèi)容
      $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
    #修改權(quán)限及屬組
    [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
    #讓服務(wù)器重載配置文件和區(qū)域文件
    [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
#可看到上圖已經(jīng)可以正常解析出配置的域名




配置反向解析

#定義區(qū)域
[root@dns1 named]# vim /etc/named.rfc1912.zones 
#在最后添加如下內(nèi)容
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "1.168.192.zone";
};
#定義區(qū)域解析庫文件
[root@dns1 named]# vim 1.168.192.zone
#添加如下內(nèi)容
$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.

#修改權(quán)限及屬組
[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
#重載配置文件和區(qū)域數(shù)據(jù)文件
[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
#根據(jù)返回結(jié)果可以看出反向解析配置成功

配置從服務(wù)器DNS
在另外一臺服務(wù)器上配置一個從區(qū)域:on slave

#定義區(qū)域
[root@localhost ~]# vim /etc/named.rfc1912.zones
#添加如下內(nèi)容
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

在主服務(wù)上需要配置 on master

#在主服務(wù)區(qū)域解析庫文件上添加從服務(wù)為NS ,并添加其IP
[root@dns1 ~]# vim /var/named/magedu.com.zone
#在文件中添加如下內(nèi)容
        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命令查看傳輸過程驗證其從服務(wù)器是否創(chuàng)建成功
[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.無法
#在從服務(wù)器上驗證時報錯 transfer of 'magedu.com/IN' from 192.168.1.105#53: failed to connect: host unreachable悄但,主機不可連接,使用iptables -L -n 命令查看后發(fā)現(xiàn)防火墻功能阻止了主機通信
#因此使用systemctl stop firewalld.service關(guān)閉防火墻功能后重新測試正常
[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)



注意:在學(xué)習(xí)時建議關(guān)閉dnssec和防火墻

      在配置文件/etc/named.conf中:
        dnssec-enable no;
        dnssec-validation no;
        dnssec-lookaside no;
      使用systemctl stop firewalld.service命令關(guān)閉防火墻
       iptables -L -n 查看

子域授權(quán)

正向解析區(qū)域授權(quán)子域的方法:

#首先要在父域的主服務(wù)器上的區(qū)域解析庫中添加子域信息
vim /var/named/mageedu.com.zone
    ops     IN      NS      ns1.ops
    ns1.ops IN      A       192.168.1.109
#然后在子域服務(wù)器上定義區(qū)域
    yum install bind -y
    vim /etc/named.conf  #在其中添加外網(wǎng)IP
        options {
                listen-on port 53 { 127.0.0.1; 192.168.1.109; };
    vim /etc/named.rfc1912.zones
        #在其中添加如下內(nèi)容
        zone "ops.magedu.com" IN {
                type master;
                file "ops.magedu.com.zone";
        };
#在定義區(qū)域解析庫文件
    vim /var/named/ops.magedu.com.zone
        #在其中添加如下內(nèi)容
        $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
#修改其屬組及權(quán)限
    [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


定義轉(zhuǎn)發(fā):
注意:被轉(zhuǎn)發(fā)的服務(wù)器必須允許為當(dāng)前服務(wù)做遞歸石抡;
(1) 區(qū)域轉(zhuǎn)發(fā):僅轉(zhuǎn)發(fā)對某特定區(qū)域的解析請求檐嚣;

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

        first:首先轉(zhuǎn)發(fā);轉(zhuǎn)發(fā)器不響應(yīng)時,自行去迭代查詢嚎京;
        only:只轉(zhuǎn)發(fā)嗡贺;

(2) 全局轉(zhuǎn)發(fā):針對凡本地沒有通過zone定義的區(qū)域查詢請求,通通轉(zhuǎn)給某轉(zhuǎn)發(fā)器鞍帝;

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

bind中的安全相關(guān)的配置:
acl:訪問控制列表诫睬;把一個或多個地址歸并一個命名的集合,隨后通過此名稱即可對此集全內(nèi)的所有主機實現(xiàn)統(tǒng)一調(diào)用帕涌;

    acl  acl_name  {
        ip;
        net/prelen;
    };

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

bind有四個內(nèi)置的acl

  • none:沒有一個主機摄凡;
  • any:任意主機;
  • local:本機蚓曼;
  • localnet:本機所在的IP所屬的網(wǎng)絡(luò)亲澡;

訪問控制指令:

  • allow-query {}; 允許查詢的主機;白名單纫版;
  • allow-transfer {}; 允許向哪些主機做區(qū)域傳送床绪;默認為向所有主機;應(yīng)該配置僅允許從服務(wù)器其弊;
  • allow-recursion {}; 允許哪此主機向當(dāng)前DNS服務(wù)器發(fā)起遞歸查詢請求癞己;
  • allow-update {}; DDNS,允許動態(tài)更新區(qū)域數(shù)據(jù)庫文件中內(nèi)容瑞凑;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末末秃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子籽御,更是在濱河造成了極大的恐慌,老刑警劉巖惰匙,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件技掏,死亡現(xiàn)場離奇詭異,居然都是意外死亡项鬼,警方通過查閱死者的電腦和手機哑梳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绘盟,“玉大人鸠真,你說我怎么就攤上這事×湔保” “怎么了吠卷?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵,是天一觀的道長沦零。 經(jīng)常有香客問我祭隔,道長,這世上最難降的妖魔是什么路操? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任疾渴,我火速辦了婚禮千贯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘搞坝。我一直安慰自己搔谴,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布桩撮。 她就那樣靜靜地躺著敦第,像睡著了一般。 火紅的嫁衣襯著肌膚如雪距境。 梳的紋絲不亂的頭發(fā)上申尼,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天,我揣著相機與錄音垫桂,去河邊找鬼师幕。 笑死,一個胖子當(dāng)著我的面吹牛诬滩,可吹牛的內(nèi)容都是我干的霹粥。 我是一名探鬼主播,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼疼鸟,長吁一口氣:“原來是場噩夢啊……” “哼后控!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起空镜,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤浩淘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吴攒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體张抄,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年洼怔,在試婚紗的時候發(fā)現(xiàn)自己被綠了署惯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡镣隶,死狀恐怖极谊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情安岂,我是刑警寧澤轻猖,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站嗜闻,受9級特大地震影響蜕依,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一样眠、第九天 我趴在偏房一處隱蔽的房頂上張望友瘤。 院中可真熱鬧,春花似錦檐束、人聲如沸辫秧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盟戏。三九已至,卻和暖如春甥桂,著一層夾襖步出監(jiān)牢的瞬間柿究,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工黄选, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蝇摸,地道東北人。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓办陷,卻偏偏與公主長得像貌夕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子民镜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,995評論 2 361

推薦閱讀更多精彩內(nèi)容