常見加密算法及原理
安全防護的目標(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é)議
-
對稱加密:加密和解密使用同一個密鑰,依賴于算法和密鑰炼幔,但其安全性依賴于密鑰而非算法
常見的算法:
DES:Data Encrpytion Standard秋茫;56bits
3DES:Triple DES
AES:Advanced encrypytion Standard;(128bits乃秀,192bits肛著,256bits,384bits)
Blowfish
Twofish
IDEA
RC6
CAST5-
特性:
- 加密跺讯、解密使用同一密鑰枢贿;
- 將原始數(shù)據(jù)分割成為固定大小的塊,逐個進行加密刀脏;
-
缺陷:
- 密鑰過多
- 密鑰分發(fā)困難
-
公鑰加密:密鑰成對出現(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:公鑰加密工作模式
-
-
單向加密:只能加密,不能解密限书,即提取數(shù)據(jù)指紋(特征碼)虫蝶;
-
特性:
- 定長輸出:無論原來的數(shù)據(jù)是多大級別,其加密結(jié)果長度一樣倦西;
- 雪崩效應(yīng):原始數(shù)據(jù)微小改變能真,將會導(dǎo)致結(jié)果巨大變化;
- 不可逆
-
用途:
- 數(shù)據(jù)完整性校驗
- 系統(tǒng)帳號密碼校驗
常見算法:
MD5:128bits定長輸出
SHA1: 160bits定長輸出
SHA256:
SHA384:
SHA512:
CRC32:
-
-
密鑰交換: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會話主要三步:
- 客戶端向服務(wù)器端索要并驗正證書贱枣;
- 雙方協(xié)商生成“會話密鑰”;
- 雙方采用“會話密鑰”進行加密通信颤专;
- 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的一個開源項目柠新,其由三個部分組成:
- openssl:多用途的命令行工具
- libcrypto:加密窍荧,界面庫文件,主要又開發(fā)者使用
- 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)過的流程:
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ū)域
- FQDN –> IP
-
區(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
- 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)
- SOA:
例如:
magedu.com. 86400 IN SOA magedu.com. admin.magedu.com. (
2017010801 ; serial
2H ; refresh
10M ; retry
1W ; expire
1D ; negative answer ttl
)
- 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.
- 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.
- 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
- AAAA:
name:FQDN
value: IPv6 - 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.
- 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)容瑞凑;