馬哥教育網絡班19期第十一周課程練習
1、詳細描述一次加密通訊的過程,結合圖示最佳。
加密通訊的過程與普通的TCP通訊在前一部分都是一樣的,只是在三次握手后,加入了SSL握手認證及密鑰交換等一系列安全措施。整個過程如下:
首先,客戶端與服務器建立TCP會話,進行三次握手
TCP成功握手后,進行ssl握手認證,詳情:
1.服務器向客戶端發送證書
2.客戶端驗證服務器的證書,驗證內容包括:
a.檢查發行者的名稱 找到發行者的證書,從中提取出公鑰,解密服務器發來的證書的簽名,能正確解密,則證書的發行者得到驗證
b.檢查證書的主體名稱,與需要訪問的網站的主體名稱是否一致,確保網站不是假冒。
c.檢查證書是否完整(使用單向加密算法,計算證書特征碼,與證書解密出來的特征碼比對確認,如是一致,則證明此證書沒被篡改)
d.檢查證書是否在證書吊銷列表中,確認該證書還在有效期內。
以上檢查通過,則認為該證書是可信的。然后,客戶端與服務器開始加密通信。雙方協商對稱加密的算法,單向加密的算法,SSL/TLS版本協議等。。。
協商完畢,客戶端生成一個對稱加密密鑰,用對方的公鑰加密后發送給服務器,完成該次會話的臨時密鑰交換。(服務器不一定需要客戶端的證書,看其加密級別)
密鑰交換完成后,客戶端請求服務器的資源,服務器就用協商生成的臨時的對稱密鑰加密內容,再傳給客戶端??蛻舳送瑯佑脜f商好的對稱密鑰解密,得到內容。
至此,加密連接建立完畢,開始數據通信。
2、描述創建私有CA的過程,以及為客戶端發來的證書請求進行辦法證書。
創建私有CA的步驟:
(1)創建所需要的文件,第一次運行需要創建一些后面步驟需要用到文件
(2)自簽證書 ##從自己的私鑰文件抽取封裝出來
生成私鑰文件
生成自簽證書,其中-x509:專用于CA生成自簽證書,new:生成新證書簽署請求,days n:證書的有效期限;out /PATH/TO/SOMECERTFILE:證書的保存路徑
生成ca文件 cacert.pem
(3) 發證
(a) 用到證書的主機生成證書請求;
從私鑰文件中提取出公鑰,進行證書請求,參數與CA證書頒發機構的一致
(b) 把請求文件傳輸給CA;
##轉到CA服務器
(4) CA簽署證書,并將證書發還給請求者;
具體命令:
============================================================================
[root@www pki]# ls
CA CAOld ca.tar.gz ca-trust java nssdb rpm-gpg rsyslog tls
[root@www pki]# cd CA
[root@www CA]# ls
certs crl newcerts private
##創建index.txt 及 serial文件
[root@www CA]# touch index.txt
[root@www CA]# echo 01 > serial
##自簽證書
##生成私鑰文件
[root@www CA]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
…………………..+++
………………………….+++
e is 65537 (0x10001)
[root@www CA]#
##生成自簽證書,其中-x509:專用于CA生成自簽證書,new:生成新證書簽署請求,days n:證書的有效期限;out /PATH/TO/SOMECERTFILE:證書的保存路徑
[root@www CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
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) [AU]:CN
State or Province Name (full name) [Some-State]:Foshan
Locality Name (eg, city) []:Foshan
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MageEdu
Organizational Unit Name (eg, section) []:IT
Common Name (eg, YOUR name) []:ca.test.net
Email Address []:caadmin@test.net
[root@www CA]#
## 生成ca文件 cacert.pem
##轉到httpd服務器(需要申請證書的服務器),生成證書請求;
[root@localhost /]# cd /etc/httpd/
[root@localhost httpd]# ls
conf conf.d conf.modules.d logs modules run
[root@localhost httpd]# mkdir ssl
[root@localhost httpd]# cd ssl
##生成私鑰
[root@localhost ssl]# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
Generating RSA private key, 2048 bit long modulus
…………………………………………..+++
……………………………………………………………………………………………………………………………………………+++
e is 65537 (0x10001)
[root@localhost ssl]# ls /etc/httpd/ssl/
httpd.key
[root@localhost ssl]#
##從私鑰文件中提取出公鑰,進行證書請求,參數與CA證書頒發機構的一致
[root@localhost ssl]# openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
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) []:Foshan
Locality Name (eg, city) [Default City]:Foshan
Organization Name (eg, company) [Default Company Ltd]:MageEdu
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:www.test.net
Email Address []:wwwadmin@test.net
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@localhost ssl]# ls /etc/httpd/ssl/
httpd.csr httpd.key
[root@localhost ssl]#
##把請求文件傳輸給CA;
scp /etc/httpd/ssl/httpd.csr root@172.16.10.10/tmp/
##轉到CA的機器上
[root@www ssl]# cd /etc/pki/tls
[root@www tls]# ls
cert.pem certs demoCA misc openssl.cnf openssl.cnf.bak private
##簽署證書
[root@www tls]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
Using configuration from /usr/local/openssl/ssl/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Jul 20 04:35:07 2016 GMT
Not After : Jul 20 04:35:07 2017 GMT
Subject:
countryName = CN
stateOrProvinceName = Foshan
organizationName = MageEdu
organizationalUnitName = IT
commonName = www.test.net
emailAddress = wwwadmin@test.net
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
27:F5:1F:90:58:5D:87:C6:ED:BF:17:D2:5E:42:E0:EA:EA:EA:9A:AE
X509v3 Authority Key Identifier:
keyid:11:10:82:7A:6A:8C:C7:C7:6F:D0:08:A3:55:4B:CF:BB:3C:2E:C2:9A
Certificate is to be certified until Jul 20 04:35:07 2017 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@www tls]# ls /etc/pki/CA/certs/
httpd.crt
[root@www tls]#
##生成證書
##回傳到web服務器
scp /etc/pki/CA/certs/httpd.crt root@172.16.20.20:/etc/httpd/ssl/
##在web服務器端查看證書信息
[root@localhost ssl]# openssl x509 -in /etc/httpd/ssl/httpd.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=CN, ST=Foshan, L=Foshan, O=MageEdu, OU=IT, CN=ca.test.net/emailAddress=caadmin@test.net
Validity
Not Before: Jul 20 04:35:07 2016 GMT
Not After : Jul 20 04:35:07 2017 GMT
Subject: C=CN, ST=Foshan, O=MageEdu, OU=IT, CN=www.test.net/emailAddress=wwwadmin@test.net
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:c2:d2:cd:f7:00:d7:b8:40:83:ac:0c:7d:43:22:
a5:45:83:cf:ac:66:98:74:e0:1a:11:8f:e7:bb:bb:
a5:57:03:1e:91:83:27:b8:c2:3f:22:2e:85:79:72:
e5:0e:a2:65:80:71:61:f0:25:fe:ea:5a:06:e4:09:
ec:79:aa:d7:ca:9c:cc:8c:5c:da:4f:8c:54:92:85:
34:33:e7:a7:3c:96:30:a9:f8:66:b9:af:b6:c5:ce:
0f:3d:32:89:71:c6:40:09:35:a6:55:7f:7f:28:2c:
ec:d6:dc:ba:30:68:e9:f8:d3:33:35:54:d8:e4:fa:
30:c4:eb:51:60:25:b3:63:c0:86:7c:7c:fe:31:c1:
49:34:1f:7c:b4:d5:9e:1f:90:2f:21:30:86:ea:68:
8f:d4:dd:2a:3d:6b:7c:48:86:a9:4c:de:f3:b6:b8:
db:e9:d8:f2:bd:1d:fc:45:25:85:d6:e5:7e:51:92:
ca:c3:ff:ad:b8:44:61:4e:e3:cb:6a:e6:50:76:9b:
f1:b0:e6:c8:28:cb:e1:61:d0:c1:77:90:e8:9f:35:
dd:bb:4c:28:a9:bf:b0:f4:6b:b3:76:63:06:4d:a3:
1c:39:41:d9:ee:8e:c1:32:0e:84:be:0b:4b:7b:8a:
b4:b3:dc:20:ff:07:b8:ce:d9:3c:e5:99:c4:8d:20:
8e:37
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
27:F5:1F:90:58:5D:87:C6:ED:BF:17:D2:5E:42:E0:EA:EA:EA:9A:AE
X509v3 Authority Key Identifier:
keyid:11:10:82:7A:6A:8C:C7:C7:6F:D0:08:A3:55:4B:CF:BB:3C:2E:C2:9A
Signature Algorithm: sha1WithRSAEncryption
1f:d0:98:a8:3a:8a:2d:c7:11:a8:4f:f1:f4:9e:54:65:3b:12:
17:fb:e3:80:2d:37:52:6e:1f:c3:fb:97:7e:8d:52:cc:3d:0a:
67:dc:56:47:5d:8a:9b:e7:da:57:db:d1:0c:6d:ae:4f:10:47:
0b:79:1e:af:40:f3:19:70:49:ec:f3:2a:23:ab:17:3e:a1:36:
9b:e8:65:05:e6:a5:06:69:42:a7:59:fc:cf:fc:dc:00:ab:00:
55:4e:05:04:5b:30:1c:bf:e3:d5:a6:8a:b5:88:8a:af:81:4f:
e4:b5:1f:61:69:b6:9f:57:cc:06:f7:50:98:bb:26:80:c6:e3:
5b:35:a4:20:51:b3:5b:af:1d:e9:c3:29:49:2f:8f:d9:cc:ce:
d8:6e:da:4b:86:f8:32:9e:c3:b4:2b:92:0f:c1:ce:5b:8d:c9:
85:57:0f:2b:bd:5c:22:2d:35:4d:bd:59:b9:c9:39:69:75:8a:
16:b9:9e:55:8a:40:92:bc:5e:af:94:8f:f4:8f:4a:94:fd:7b:
46:ea:a7:2b:13:66:cf:38:82:67:9c:06:32:90:80:b4:a4:fb:
52:cc:6f:75:31:4d:54:cc:75:66:91:97:c2:ee:07:bf:cb:b2:
f6:61:8f:1f:76:85:84:9d:b7:3d:44:4e:92:e1:70:3b:d2:c3:
a7:64:44:bc
[root@localhost ssl]#
3、描述DNS查詢過程以及DNS服務器類別。
DNS服務器的類別一般可分為以下幾種:
主DNS服務器
輔助DNS服務器
緩存DNS服務器
轉發器
DNS的查詢過程為:
客戶端發起DNS查詢請求-先查看本機hosts文件,如有記錄,返回,如無,繼續查詢-DNS服務器緩存(DNS服務器亦會先檢查本地的緩存,如緩存有數據,就返回,如無,則繼續)-DNS服務器查詢
(DNS查詢分幾種情況,視乎DNS的服務器類別,下面分別介紹)
當服務器為主DNS服務器時:先查詢客戶端查詢的是否是本機域,如是,則返回結果,如不是,則到根服務器發起遞歸查詢,查詢到結果后,返回給客戶端,同時保存至自己的緩存記錄中
當服務器為輔助DNS服務器時:前面的動作均與主DNS相同,先查詢客戶端查詢的是否是本機域,如是,則返回結果,如不是,則到根服務器發起遞歸查詢,查詢到結果后,返回給客戶端
當服務器為緩存服務器時:
當服務器為轉發器時:前面的動作均與主DNS相同,先查詢客戶端查詢的是否是本機域,如是,則返回結果,如不是,則將請求轉發到指定的服務器上,由該服務器將請求進行查詢,在取得轉發
服務器的查詢到結果后,再保存在本地緩存,返回給客戶端。
4、搭建一套DNS服務器,負責解析magedu.com域名(自行設定主機名及IP)
(1)、能夠對一些主機名進行正向解析和逆向解析;
(2)、對子域cdn.magedu.com進行子域授權,子域負責解析對應子域中的主機名;
(3)、為了保證DNS服務系統的高可用性,請設計一套方案,并寫出詳細的實施過程
搭建DNS服務器
父域IP:172.16.10.10
子域IP:172.16.20.20
##編輯named.conf主配置文件
[root@lvs1 named]# vim /etc/named.conf
##增加監聽的IP地址
listen-on port 53 { 172.16.10.10;127.0.0.1; };
##dnssecurity設置成關閉狀態
dnssec-enable no;
dnssec-validation no;
##編輯rfc1912文件,增加兩個zone
[root@lvs1 named]# vim /etc/named.rfc1912.zones
##正向
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
};
##反向
zone "0.0.16.172.in-addr.arpa" IN {
type master;
file "17216.zone";
};
##創建兩個區域文件
[root@lvs1 named]# vim /var/named/magedu.com.zone
$TTL 1D
$ORIGIN magedu.com.
@ IN SOA magedu.com. admin.magedu.com (
2016072201
1H
5M
7D
1D )
IN NS ns1
IN NS ns2
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 172.16.10.10
ns2 IN A 172.16.20.20
mx1 IN A 172.16.10.10
mx2 IN A 172.16.20.20
www IN A 172.16.10.10
web IN A 172.16.20.20
ftp IN CNAME www
* IN CNAME www
[root@lvs1 named]# vim /var/named/17216.zone
$TTL 1D;
@ 86400 IN SOA magedu.com. admin.magedu.com (
2016072201
1H
5M
7D
1D )
IN NS ns1.magedu.com.
IN NS ns2.magedu.com.
10.10 IN PTR www.magedu.com.
20.20 IN PTR web.magedu.com.
##更改文件權限
[root@lvs1 named]# chown :named magedu.com.zone
[root@lvs1 named]# chmod 640 magedu.com.zone
[root@lvs1 named]# chmod 640 17216.zone
[root@lvs1 named]# chown :named 17216.zone
##重新載入
[root@lvs1 named]# rndc reload
##測試檢查:
[root@www named]# dig -t A www.magedu.com @172.16.10.10
; <<>> DiG 9.11.0b1 <<>> -t A www.magedu.com @172.16.10.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15528
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN A 172.16.200.201
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS ns1.magedu.com.
magedu.com. 86400 IN NS ns2.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com. 86400 IN A 172.16.200.201
ns2.magedu.com. 86400 IN A 172.16.200.202
;; Query time: 0 msec
;; SERVER: 172.16.10.10#53(172.16.10.10)
;; WHEN: Fri Jul 22 23:26:18 CST 2016
;; MSG SIZE rcvd: 127
[root@www named]# dig -t A smtp.magedu.com @172.16.10.10
; <<>> DiG 9.11.0b1 <<>> -t A smtp.magedu.com @172.16.10.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23224
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;smtp.magedu.com. IN A
;; ANSWER SECTION:
smtp.magedu.com. 86400 IN CNAME www.magedu.com.
www.magedu.com. 86400 IN A 172.16.200.201
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS ns2.magedu.com.
magedu.com. 86400 IN NS ns1.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com. 86400 IN A 172.16.200.201
ns2.magedu.com. 86400 IN A 172.16.200.202
;; Query time: 0 msec
;; SERVER: 172.16.10.10#53(172.16.10.10)
;; WHEN: Fri Jul 22 23:26:26 CST 2016
;; MSG SIZE rcvd: 146
//查詢正常
//子域DNS的配置
##在父域中定義子域
vim /var/named/magedu.com.zone
##添加
ops IN NS ns1.ops
ops IN NS ns2.ops
ns1.ops IN A 172.16.20.20
ns2.ops IN A 172.16.20.21
rndc reload
##子域DNS服務器配置
vim /etc/named.conf
options {
listen-on port 53 { 172.16.20.20;127.0.0.1; };
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";
};
##增加ops.magedu.com的zone
vim /etc/named.rfc1912.zones
zone "ops.test.net" IN {
type master;
file "ops.magedu.com.zone";
// allow-update { none; };
};
vim ops.magedu.com.zone
$TTL 1D
$ORIGIN ops.magedu.com.
@ IN SOA ns1.ops.magedu.com. admin.ops.magedu.com. (
2016071501
1H
5M
3D
1D )
IN NS ns1
IN NS ns2
ns1 IN A 172.16.20.20
ns2 IN A 172.16.20.21
www IN A 172.16.20.20
web IN A 172.16.20.22
* IN A 172.16.20.20
[root@localhost named]# rndc reload
server reload successful
[root@localhost named]# rndc status
version: 9.9.4-RedHat-9.9.4-29.el7_2.3 <id:8f9657aa>
CPUs found: 1
worker threads: 1
UDP listeners per interface: 1
number of zones: 102
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
[root@localhost named]#
DNS服務系統的高可用性,簡要方案為:
兩臺DNS服務器,搭建主從服務,一臺為主DNS服務器,另一臺為從DNS服務器??蛻舳嗽O置這兩臺服務器為自己的DNS服務器,一旦主DNS失效,會到第二個服務器(即從DNS)上進行DNS查詢操作。
原創文章,作者:馬哥Net19_小斌斌,如若轉載,請注明出處:http://www.www58058.com/26043
寫的很好,排版還可以在漂亮一點,加油,問你一個問題吧,如果主的DNS死了,從的可以用嗎?
@馬哥教育:我的理解,從DNS只有主DNS的只讀副本,自己不能更新記錄,但如果客戶端設置了從DNS服務器的指向,在向主DNS查詢超時后,會向從DNS發起查詢請求,對客戶端來說,從的也可用。備用。