馬哥教育網絡19期+第十一周課程練習

1、詳細描述一次加密通訊的過程,結合圖示最佳。

SSL協議基礎:
    SSL協議位于TCP/IP協議與各種應用層協議之間,本身又分為兩層:
    (1)、SSL記錄協議:建立在可靠傳輸層協議(TCP)之上,為上層協議提供數據封裝、壓縮、加密等基本功能。
    (2)、SSL握手協議:在SSL記錄協議之上,用于實際數據傳輸前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。
SSL協議通信過程:
    (1)、瀏覽器發送一個連接請求給服務器;服務器將自己的證書(包含服務器公鑰S_PuKey)、對稱加密算法種類及其他相關信息返回客戶端;
    (2)、客戶端瀏覽器檢查服務器傳送到CA證書是否由自己信賴的CA中心簽發。若是,執行4步;否則,給客戶一個警告信息:詢問是否繼續訪問。
    (3)、客戶端瀏覽器比較證書里的信息,如證書有效期、服務器域名和公鑰S_PK,與服務器傳回的信息是否一致,如果一致,則瀏覽器完成對服務器的身份認證。
    (4)、服務器要求客戶端發送客戶端證書(包含客戶端公鑰C_PuKey)、支持的對稱加密方案及其他相關信息。收到后,服務器進行相同的身份認證,若沒有通過驗證,則拒絕連接;
    (5)、服務器根據客戶端瀏覽器發送到密碼種類,選擇一種加密程度最高的方案,用客戶端公鑰C_PuKey加密后通知到瀏覽器;
    (6)、客戶端通過私鑰C_PrKey解密后,得知服務器選擇的加密方案,并選擇一個通話密鑰key,接著用服務器公鑰S_PuKey加密后發送給服務器;
    (7)、服務器接收到的瀏覽器傳送到消息,用私鑰S_PrKey解密,獲得通話密鑰key。
    (8)、接下來的數據傳輸都使用該對稱密鑰key進行加密。
    上面所述的是雙向認證SSL協議的具體通訊過程,服務器和用戶雙方必須都有證書。由此可見,SSL協議是通過非對稱密鑰機制保證雙方身份認證,并完成建立連接,在實際數據通信
時通過對稱密鑰機制保障數據安全性。

2、描述創建私有CA的過程,以及為客戶端發來的證書請求進行辦法證書。

1. 頒發證書
1.1 修改CA的一些配置文件
CA要給別人頒發證書,首先自己得有一個作為根證書,我們得在一切工作之前修改好CA的配置文件、序列號、索引等等。
# vi /etc/pki/tls/openssl.cnf:
...
[ CA_default ]

dir             = /etc/pki/CA           # Where everything is keptcerts           = $dir/certs            # Where the issued certs are keptcrl_dir         = $dir/crl              # Where the issued crl are keptdatabase        = $dir/index.txt        # database index file.#unique_subject = no                    # Set to 'no' to allow creation of
                                        # several ctificates with same subject.new_certs_dir   = $dir/newcerts         # default place for new certs.certificate     = $dir/cacert.pem       # The CA certificateserial          = $dir/serial           # The current serial numbercrlnumber       = $dir/crlnumber        # the current crl number
                                        # must be commented out to leave a V1 CRLcrl             = $dir/crl.pem          # The current CRLprivate_key     = $dir/private/cakey.pem # The private keyRANDFILE        = $dir/private/.rand    # private random number file...
default_days    = 3650                  # how long to certify for...# For the CA policy[ policy_match ]
countryName             = match
stateOrProvinceName     = optional
localityName            = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional
...
[ req_distinguished_name ]
countryName                     = Country Name (2 letter code)
countryName_default             = CN
countryName_min                 = 2countryName_max                 = 2stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = GD
...
[ req_distinguished_name ] 部分主要是頒證時一些默認的值,可以不動
一定要注意[ policy_match ]中的設定的匹配規則,是有可能因為證書使用的工具不一樣,導致即使設置了csr中看起來有相同的countryName,stateOrProvinceName等,但在最終生成證書時依然報錯:
Using configuration from /usr/lib/ssl/openssl.cnfCheck that the request matches the signature
Signature ok
The stateOrProvinceName field needed to be the same in the
CA certificate (GuangDong) and the request (GuangDong)
touch index.txt serial:
在CA目錄下創建兩個初始文件:
# touch index.txt serial# echo 01 > serial
1.2 生成根密鑰
# cd /etc/pki/CA/# openssl genrsa -out private/cakey.pem 2048
為了安全起見,修改cakey.pem私鑰文件權限為600或400,也可以使用子shell生成( umask 077; openssl genrsa -out private/cakey.pem 2048 ),下面不再重復。
1.3 生成根證書
使用req命令生成自簽證書:
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem
會提示輸入一些內容,因為是私有的,所以可以隨便輸入(之前修改的openssl.cnf會在這里呈現),最好記住能與后面保持一致。上面的自簽證書cacert.pem應該生成在/etc/pki/CA下。
1.4 為我們的nginx web服務器生成ssl密鑰
以上都是在CA服務器上做的操作,而且只需進行一次,現在轉到nginx服務器上執行:
# cd /etc/nginx/ssl# openssl genrsa -out nginx.key 2048
這里測試的時候CA中心與要申請證書的服務器是同一個。
1.5 為nginx生成證書簽署請求
# openssl req -new -key nginx.key -out nginx.csr...Country Name (2 letter code) [AU]:CNState or Province Name (full name) [Some-State]:GDLocality Name (eg, city) []:SZOrganization Name (eg, company) [Internet Widgits Pty Ltd]:COMPANYOrganizational Unit Name (eg, section) []:IT_SECTIONCommon Name (e.g. server FQDN or YOUR name) []:your.domain.comEmail Address []:Please enter the following 'extra' attributes
to be sent with your certificate requestA challenge password []:An optional company name []:...
同樣會提示輸入一些內容,其它隨便,除了Commone Name一定要是你要授予證書的服務器域名或主機名,challenge password不填。
1.6 私有CA根據請求來簽署證書
接下來要把上一步生成的證書請求csr文件,發到CA服務器上,在CA上執行:
# openssl ca -in nginx.csr -out nginx.crt另外在極少數情況下,上面的命令生成的證書不能識別,試試下面的命令:# openssl x509 -req -in server.csr -CA /etc/pki/CA/cacert.pem -CAkey /etc/pki/CA/private/cakey.pem -CAcreateserial -out server.crt
上面簽發過程其實默認使用了-cert cacert.pem -keyfile cakey.pem,這兩個文件就是前兩步生成的位于/etc/pki/CA下的根密鑰和根證書。將生成的crt證書發回nginx服務器使用。
到此我們已經擁有了建立ssl安全連接所需要的所有文件,并且服務器的crt和key都位于配置的目錄下,剩下就是將證書添加到受信任的根證書頒發機構。

3、描述DNS查詢過程以及DNS服務器類別。

過程:
  1)瀏覽器緩存
    當用戶通過瀏覽器訪問某域名時,瀏覽器首先會在自己的緩存中查找是否有該域名對應的IP地址(若曾經訪問過該域名且沒有清空緩存便存在);
  2)系統緩存
    當瀏覽器緩存中無域名對應IP則會自動檢查用戶計算機系統Hosts文件DNS緩存是否有該域名對應IP;
  3)路由器緩存
  當瀏覽器及系統緩存中均無域名對應IP則進入路由器緩存中檢查,以上三步均為客服端的DNS緩存;
  4)ISP(互聯網服務提供商)DNS緩存
  當在用戶客服端查找不到域名對應IP地址,則將進入ISP DNS緩存中進行查詢。比如你用的是電信的網絡,則會進入電信的DNS緩存服務器中進行查找;
  5)根域名服務器
  當以上均未完成,則進入根服務器進行查詢。全球僅有13臺根域名服務器,1個主根域名服務器,其余12為輔根域名服務器。根域名收到請求后會查看區域文件記錄,若無則將其管轄范圍內
  頂級域名(如.com)服務器IP告訴本地DNS服務器;
  6)頂級域名服務器
  頂級域名服務器收到請求后查看區域文件記錄,若無則將其管轄范圍內主域名服務器的IP地址告訴本地DNS服務器;
  7)二級域名服務器
  主域名服務器接受到請求后查詢自己的緩存,如果沒有則進入下一級域名服務器進行查找,并重復該步驟直至找到正確紀錄;
  8)保存結果至緩存
  本地域名服務器把返回的結果保存到緩存,以備下一次使用,同時將該結果反饋給客戶端,客戶端通過這個IP地址與web服務器建立鏈接。
    DNS服務器類別:
 (1)主域名服務器:負責維護這個區域的所有域名信息,是特定的所有信息的權威信息源。也就是說,主域名服務器內所存儲的是該區域的正本數據,系統管理員可以對它進行修改。
 (2)輔助域名服務器:當主域名服務器出現故障、關閉或負載過重時,輔助域名服務器作為備份服務提供域名解析服務。輔助域名服務器中的區域文件內的數據是從另外一臺域名服務器
    復制過來的,并不是直接輸入的,也就是說這個區域文件只是一份副本,這里的數據是無法修改的。
 (3)緩存域名服務器:可運行域名服務器軟件但沒有域名數據庫。它從某個遠程服務器取得每次域名服務器查詢的回答,一旦獲取一個答案,就將它放在高速緩存中,以后查詢相同的信
    息時就用它予以回答。緩存域名服務器不是權威性服務器,因為提供的所有信息都是間接信息。
 (4)轉發域名服務器:負責所有非本地域名的本地查詢。轉發域名服務器接到查詢請求時,在其緩存中查找,如找不到就把請求依次轉發到指定的域名服務器,直到查詢到結果為止,否
    則返回無法映射的結果。

4、搭建一套DNS服務器,負責解析magedu.com域名(自行設定主機名及IP)

  (1)、能夠對一些主機名進行正向解析和逆向解析;

  (2)、對子域cdn.magedu.com進行子域授權,子域負責解析對應子域中的主機名;

  (3)、為了保證DNS服務系統的高可用性,請設計一套方案,并寫出詳細的實施過程

# yum -y install bind*
常用的配置文件有:
/etc/named.conf(DNS的配置文件)
/etc/named.rfc1912.zones(DNS的區域配置)
/etc/rc.d/init.d/named(服務腳本)
/var/named(存放區域數據文件)

# vim /etc/named.conf

1.png

其中“listen-on port 53 { 127.0.0.1; 192.168.0.130; };”表示監聽本地IP的53號端口;
“allow-query     { any; };”表示允許查詢;
recursion yes; 是否遞歸 如果是no 那么這臺DNS服務器講不會解析 yes或注釋掉不寫,默認是允許;
配置文件中還有“include "/etc/named.rfc1912.zones";”,這個是區域配置文件。

一、正向和反向區域解析

# vim /etc/named.rfc1912.zones

在配置文件的最后添加如下兩行配置,分別是正向和反向的配置。

zone "magedu.com" IN {
        type master;
        file "magedu.com.zone";
        allow-transter { 192.168.0.131; };
};

zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "0.168.192.zone";
        allow-transter { 192.168.0.131; };
};

allow-transter { 192.168.0.131; };表示只允許0.131這個主機同步數據,也就是做他的輔DNS,多個IP用“;”隔開即可

然后編輯正向的zone文件

# vim /var/named/magedu.com.zone

$TTL 1D
$ORIGIN magedu.com.
@       IN      SOA     ns.magedu.com.          admin.magedu.com.(
                        2016080801
                        2H
                        5M
                        7D
                        12H )
        IN      NS      ns
        IN      NS      ns2            //輔助DNS使用
        IN      MX  10  mx1
ns2     IN      A       192.168.0.131  //輔助DNS使用
ns      IN      A       192.168.0.130
mx1     IN      A       192.168.0.130
www     IN      A       192.168.0.130

反向zone文件如下:

$TTL 86400
$ORIGIN 0.168.192.in-addr.arpa.
@	IN	SOA		ns.magedu.com.	admin.magedu.com. (
				2016080801
				1H	
				5M
				7D
				1D )
	IN	NS		ns.magedu.com.
@       IN      NS              ns2.magedu.com.    //輔助DNS使用
131	IN	PTR		ns2.magedu.com.    //輔助DNS使用
130	IN	PTR		ns.magedu.com.
130	IN	PTR		www.magedu.com.
130	IN	PTR		mx1.magedu.com.

配置完成后,使用命令:named-checkzone檢查語法錯誤,然后reload服務看到如下結果,說明解析正常

[root@Hao named]# dig -t www.magedu.com@192.168.0.130
;; Warning, ignoring invalid type www.magedu.com@192.168.0.130

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t www.magedu.com@192.168.0.130
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35832
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;.				IN	NS

;; ANSWER SECTION:
.			316950	IN	NS	b.root-servers.net.
.			316950	IN	NS	m.root-servers.net.
.			316950	IN	NS	i.root-servers.net.
.			316950	IN	NS	e.root-servers.net.
.			316950	IN	NS	f.root-servers.net.
.			316950	IN	NS	d.root-servers.net.
.			316950	IN	NS	c.root-servers.net.
.			316950	IN	NS	g.root-servers.net.
.			316950	IN	NS	a.root-servers.net.
.			316950	IN	NS	k.root-servers.net.
.			316950	IN	NS	h.root-servers.net.
.			316950	IN	NS	l.root-servers.net.
.			316950	IN	NS	j.root-servers.net.

;; Query time: 3 msec
;; SERVER: 202.106.46.151#53(202.106.46.151)
;; WHEN: Mon Aug  8 12:49:26 2016
;; MSG SIZE  rcvd: 228

  反向的解析可以使用dig -x 192.168.0.130(我的解析的IP,到時候你們可以填自己的IP)進行測試

二、配置主從同步達到高可用效果

  分別在正向解析庫和反向解析庫文件中添加輔助DNS服務器的信息,上述文件中已經標記出來了。

  輔DNS只需要創建區域文件,不需要創建區域數據文件,它的數據文件會從主服務器哪里同步過來。同步的數據在/var/named/slaves/目錄中

        編輯輔DNS服務器上的/etc/named.rfc1912.zones文件,最后面添加如下內容:

zone "magedu.com" IN {
        type slave;
        masters { 192.168.0.130; };
        file "slave/magedu.com.zone";
        allow-transter { none; };
};

zone "0.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.0.130; };
        file "slave0.168.192.zone";
                allow-transter { none; };
};

該內容的意思是指定type類型為slave(輔助)類型,并指定主服務器“master { 192.168.0.130; };”;allow-transter { none; };表示該從服務器

不允許其他主機再同步DNS的數據。

然后named-checkconf檢查語法錯誤,然后# service named start即可

三、子域授權

  新增一臺IP為192.168.0.132的服務器為子域的主DNS(前面的父域的IP為0.130,父域的從是0.131)

  在父域的區域文件中添加NS和A記錄

test.magedu.com.    IN    NS    ns.test.magedu.com.
ns.test.magedu.com. IN    A     192.168.0.132

    現在開始配置子域的DNS,# vim /etc/named.rfc1912.zones

zone "test.magedu.com" IN {
	type master;
	file "test.magedu.com.zone";
};

###下面這個部分是做轉發的,不做轉發的話,子域是不能解析父域里的主機的###
zone "magedu.com" IN {
	type forward;
	forward only;
	forwarders { 192.168.0.130; };
};

  在子域的服務器上# vim /var/named/test.magedu.com.zone

$TTL 86400
@       IN      SOA     ns.test.magedu.com.          admin.test.magedu.com.(
                        2016080801
                        2H
                        5M
                        7D
                        12H )
        IN      NS      ns.test.magedu.com.
        IN      MX  10  mx1.test.magedu.com.
ns.test.magedu.com.      IN      A       192.168.0.132
mx1.test.magedu.com.     IN      A       192.168.0.132
www     IN      A       192.168.0.132

檢查語法,然后reload服務即可

原創文章,作者:Net19_口香糖,如若轉載,請注明出處:http://www.www58058.com/23930

(0)
Net19_口香糖Net19_口香糖
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • 文件權限

    首先簡單介紹一下文件的屬性: 使用ls -l 長列出-rw-r–r–. 1 root root 1302 Jul 25 10:23 group文件類型|owner權限group權限other權限|硬鏈接數|owner|group|文件大小(bytes)|mtime|文件名 文件類型:     &…

    2017-07-29
  • RAID及LVM的實現

    RAID及LVM的實現 第一部分 : RAID介紹及創建 1、mdadm工具 2、創建RAID 5及刪除RAID 第二部分 : LVM的實現 1、基本命令 2、LVM創建及擴容和縮減 3、LVM快照 RAID介紹及創建 1、mdadm工具 mdadm [mode] <raid device> [options] <任意塊設備> [mo…

    Linux干貨 2017-08-22
  • 用shell腳本實現每天定時收集全網日志到一臺服務器

    需求 現在公司有這樣一個需求,需要收集每天全網運行業務的設備上的某個特定目錄底下的日志到一臺服務器(這臺服務器我們簡稱logserver),這并在這臺logserver上生成以日期為名字的目錄 解決思路: 在logserver的crontab里設置兩個腳本,在當日晚上23:30執行腳本1收集當日即將被刪除的全網腳本;在并在早上8:30執行腳本2,收集昨日全網…

    Linux干貨 2015-07-27
  • 第四天作業

    1 、創建 用戶gentoo ,附加組為bin 和root ,默認shell為/bin/csh ,注釋信息為"Gentoo Distribution" 1 useradd -G bin,root -s /bin/csh -c "Gentoo Distribut…

    Linux干貨 2016-08-04
  • yum用法第一篇-簡介及常見用法使用總結

    一、簡介     yum( 全稱為:Yellow dog Updater, Modified),是紅帽(RedHat)家族(RedHat、Fedora、CentOS)中的前端shell的軟件包管理器,主要基于對RPM包的管理,能夠根據配置文件(類似于svn資源庫配置文件)從指定的服務器自動下載RPM包進行安裝,其最大的優勢就是可…

    Linux干貨 2015-09-22
  • raid,lvm,及sed命令的相關使用總結

    raid0 條帶化 chunk最小寫入單位 至少2塊盤 空間大小 單塊磁盤大小*nraid1 鏡像  1/n   讀性能提升,寫入比單塊盤慢  空間始終是一塊盤的大小   容錯率高  可以壞  n-1塊盤raid10 容錯高于raid01 但空間損失更多,讀寫性能 提升 造價高。raid4&nbsp…

    2017-08-26

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-17 13:54

    寫的很好,排版還可以在漂亮一點,加油,有的文字看不到了?下次在調整一下

欧美性久久久久