第九周作業

第九周作業

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


2、描述創建私有CA的過程,以及爲客戶端發來的證書請求進行辦法證書。
第一步:在準備創建私有CA的主機上創建私有密鑰

[root@TESTSVR1 ~]# cd /etc/pki/CA
[root@TESTSVR1 CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
........................................................+++
.........................................................................................+++
e is 65537 (0x10001)

第二步:創建作爲CA主機所需要的文件

[root@TESTSVR1 CA]# touch {index.txt,serial}
[root@TESTSVR1 CA]# echo 01 > serial

第三步:CA主機自身生成證書請求,也就是爲自己頒發證書

[root@TESTSVR1 CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300
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) []:guangdong
Locality Name (eg, city) [Default City]:guangzhou                            
Organization Name (eg, company) [Default Company Ltd]:trans
Organizational Unit Name (eg, section) []:si
Common Name (eg, your name or your server's hostname) []:ca.trans.com
Email Address []:[email protected]

第四步:要使用證書的主機生成頒發證書請求

[root@TESTSVR2 tmp]# mkdir ssl
[root@TESTSVR2 tmp]# cd ssl
[root@TESTSVR2 ssl]# (umask 077;openssl genrsa -out httpd.key 1024)
Generating RSA private key, 1024 bit long modulus
.++++++
..++++++
e is 65537 (0x10001)
[root@TESTSVR2 ssl]# openssl req -new -key httpd.key -out 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) []:guangdong
Locality Name (eg, city) [Default City]:guangzhou
Organization Name (eg, company) [Default Company Ltd]:trans
Organizational Unit Name (eg, section) []:si
Common Name (eg, your name or your server's hostname) []:web.trans.com
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@TESTSVR2 ssl]# ll
總用量 8
-rw-r--r--. 1 root root 700 10月 29 15:59 httpd.csr
-rw-------. 1 root root 887 10月 29 15:57 httpd.key

第五步:將請求文件傳輸給CA所在主機;使用scp命令

[root@TESTSVR2 ssl]# scp httpd.csr [email protected]:/tmp/
The authenticity of host '192.168.2.41 (192.168.2.41)' can't be established.
RSA key fingerprint is 82:b3:88:c4:e5:5a:99:79:0c:44:60:a3:ed:b1:3f:0b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.41' (RSA) to the list of known hosts.
[email protected]'s password: 
httpd.csr                                               100%  700     0.7KB/s   00:00

第六步:CA所在主機簽署證書,迴應證書請求

[root@TESTSVR1 CA]#  openssl ca -in /tmp/httpd.csr -out certs/web.trans.com.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Oct 29 08:05:06 2016 GMT
            Not After : Oct 29 08:05:06 2017 GMT
        Subject:
            countryName               = cn
            stateOrProvinceName       = guangzhou
            organizationName          = trans
            organizationalUnitName    = si
            commonName                = web.trans.com
            emailAddress              = [email protected]
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                EF:50:FF:9C:6F:BC:23:04:6B:B7:AA:67:46:BD:42:34:B5:B5:4B:31
            X509v3 Authority Key Identifier: 
                keyid:49:5C:E2:87:2E:39:1B:C8:0E:DF:6E:39:4E:68:E4:01:2E:F4:C4:4B
Certificate is to be certified until Oct 29 08:05:06 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

第七步:CA所在的主機將簽署完成的證書,發送回請求主機

[root@TESTSVR1 CA]# scp certs/web.trans.com.crt 192.168.2.42:/tmp/ssl/
The authenticity of host '192.168.2.42 (192.168.2.42)' can't be established.
RSA key fingerprint is a2:e7:82:94:f3:5d:47:10:27:12:b5:17:f2:e8:06:09.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.42' (RSA) to the list of known hosts.
[email protected]'s password: 
web.trans.com.crt                                       100% 3850     3.8KB/s   00:00


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

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

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

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

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

①安裝bind

[root@TESTSVR3 ~]# yum install bind

②修改主配置文件

[root@TESTSVR3 ~]# vim /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.
//
options {
        listen-on port 53 { any; };     //修改監聽所有地址上的53端口
        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; };       //修改允許來自所有地址的查詢請求
        recursion yes;
        dnssec-enable no;       //關閉dnssec相關功能
        dnssec-validation no;   //關閉dnssec相關功能
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";


③添加正反向解析區域

[root@TESTSVR3 ~]# vim /etc/named.rfc1912.zones


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

zone "magedu.com." IN {
        type master;
        file "magedu.com.zone";
        allow-transfer { 192.168.2.44; };
};    //正向解析區域
zone "2.168.192.in-addr.arpa" IN {
        type master;
        file "2.168.192.zone";
        allow-transfer { 192.168.2.44; };
};    //反向解析區域



④配置正向區域文件

[root@TESTSVR3 ~]# vim /var/named/magedu.com.zone
$TTL 1D
$ORIGIN magedu.com.
@       IN      SOA     ns1.magedu.com.          admin.magedu.com.(
                        2016102901
                        1H
                        5M
                        7D
                        12H )
        IN      NS      ns
        IN      NS      ns2            //輔助DNS使用
        IN      MX  10  mx1
ns1     IN      A       192.168.2.43    
ns2     IN      A       192.168.2.44    //輔助DNS使用
mx1     IN      A       192.168.2.43
www     IN      A       192.168.2.43
ftp     IN      CNAME   www

⑤配置反向區域文件

[root@TESTSVR3 ~]# vim /var/named/2.168.192.zone
$TTL 86400
$ORIGIN 2.168.192.in-addr.arpa.
@   IN  SOA     ns1.magedu.com.  admin.magedu.com. (
                2016102601
                1H
                5M
                7D
                12H )
    IN  NS      ns1.magedu.com.
@   IN  NS      ns2.magedu.com.    //輔助DNS使用
43 IN  PTR      ns1.magedu.com.    
44 IN  PTR      ns2.magedu.com.    //輔助DNS使用
43 IN  PTR      www.magedu.com.
43 IN  PTR      mx1.magedu.com.


⑥檢查正反向區域文件

[root@TESTSVR3 ~]# named-checkzone magedu.com /var/named/magedu.com.zone
zone magedu.com/IN: loaded serial 2016102901
OK
[root@TESTSVR3 ~]# named-checkzone 2.168.192.in-addr.arpa /var/named/2.168.192.zone 
zone 2.168.192.in-addr.arpa/IN: loaded serial 2016102601
OK


⑦啓動域名解析服務

[root@TESTSVR3 ~]# service named start
啓動 named:                                               [確定]

⑧正向解析檢查

[root@TESTSVR3 ~]# dig @192.168.2.43 www.magedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2 <<>> @192.168.2.43 www.magedu.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46452
;; 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.        86400    IN    A    192.168.2.43
;; 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    192.168.2.43
ns2.magedu.com.        86400    IN    A    192.168.2.44
;; Query time: 1 msec
;; SERVER: 192.168.2.43#53(192.168.2.43)
;; WHEN: Sun Oct 30 05:59:03 2016
;; MSG SIZE  rcvd: 116


⑨反向解析測試

[root@TESTSVR3 ~]# dig -x 192.168.2.43 @192.168.2.43
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2 <<>> -x 192.168.2.43 @192.168.2.43
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65223
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;43.2.168.192.in-addr.arpa.    IN    PTR
;; ANSWER SECTION:
43.2.168.192.in-addr.arpa. 86400 IN    PTR    www.magedu.com.
43.2.168.192.in-addr.arpa. 86400 IN    PTR    mx1.magedu.com.
43.2.168.192.in-addr.arpa. 86400 IN    PTR    ns1.magedu.com.
;; AUTHORITY SECTION:
2.168.192.in-addr.arpa.    86400    IN    NS    ns2.magedu.com.
2.168.192.in-addr.arpa.    86400    IN    NS    ns1.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com.        86400    IN    A    192.168.2.43
ns2.magedu.com.        86400    IN    A    192.168.2.44
;; Query time: 1 msec
;; SERVER: 192.168.2.43#53(192.168.2.43)
;; WHEN: Sun Oct 30 06:00:22 2016
;; MSG SIZE  rcvd: 171


(2)保證DNS服務系統的高可用性
在正向解析庫和反向解析庫文件中添加輔助DNS服務器的信息,上述配置中已經標記出來了。輔DNS只需要創建區域文件,不需要創建區域數據文件,它的數據文件會從主服務器哪裏同步過來。同步的數據在/var/named/slaves/目錄中。
編輯輔DNS服務器上的/etc/named.rfc1912.zones文件,最後面添加如下內容:

zone "magedu.com" IN {
      type slave;
      masters { 192.168.2.43; };
      file "slaves/magedu.com.zone";
      allow-transfer { none; };
};
zone "2.168.192.in-addr.arpa" IN {
      type slave;
      masters { 192.168.2.43; };
      file "slaves/2.168.192.zone";
      allow-transfer { none; };
};

指定type類型爲slave(輔助)類型,並指定主服務器master { 192.168.2.43; };,allow-transter { none; };表示該從服務器不允許其他主機再同步DNS的數據。然後named-checkconf檢查語法錯誤,然後# service named start即可

(3)子域授權
父域的IP爲192.168.2.43,父域的從IP是192.168.2.44,子域的IP爲192.168.2.45
①在父域的區域文件中添加NS和A記錄

[root@TESTSVR3 ~]# vim /var/named/magedu.com.zone
cdn.magedu.com. IN      NS      ns.cdn.magedu.com.
ns.cdn.magedu.com.      IN      A       192.168.2.45

②現在開始配置子域的DNS

[root@TESTSVR5 ~]# vim /etc/named.rfc1912.zones
zone "cdn.magedu.com" IN {
      type master;
      file "cdn.magedu.com";
};
zone "magedu.com" IN {
      type forward;
      forward only;
      forwarders { 192.168.2.43; };
};

③編輯子域的服務器上區域文件

[root@TESTSVR5 ~]# vim /var/named/cdn.magedu.com.zone
$TTL 86400
@       IN      SOA     ns.cdn.magedu.com.          admin.cdn.magedu.com.(
                        2016102901
                        2H
                        5M
                        7D
                        12H )
        IN      NS      ns.cdn.magedu.com.
        IN      MX  10  mx1.cdn.magedu.com.
ns.cdn.magedu.com.      IN      A       192.168.2.45
mx1.cdn.magedu.com.     IN      A       192.168.2.45
www     IN      A       192.168.2.45

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

4、請描述一次完整的http請求處理過程;

①向根域名服務器請求解析域名,然後根服務器返回相應的IP信息;

②用戶的Web瀏覽器向服務器端的80端口通過三次握手建立TCP連接;

③建立完TCP連接後發送HTTP請求,請求的格式包括請求方法、URL和協議版本號,方法有GET、HEAD、POST、PUT、DELETE、OPTIONS、TRACE,如:

    起始行:如 GET / HTTP/1.0 (請求的方法  請求的URL 請求所使用的協議)

    頭部信息:User-Agent  Host等成對出現的值

    主體

④服務器向客戶端相應http的頭信息,客戶端收到後確認,然後http服務器發送數據;

⑤瀏覽器接收到數據後,解析數據並通過瀏覽器把畫面呈現給用戶;

⑥數據傳送完成後,四次斷開TCP連接;

5、httpd所支持的處理模型有哪些,他們的分別使用於哪些環境。
httpd所支持的事務處理模型主要有:prefork、worker、event
prefork:多進程模型,每個進程響應一個請求。一個主進程:負責生成n個子進程,子進程也稱爲工作進程,每個子進程處理一個用戶請求;即便沒有用戶請求,也會預先生成多個空閒進程, 隨時等待請求到達;最大不會超過1024個;
worker:多線程模型,每個線程響應一個請求;一個主進程:生成多個子進程,每個子進程負責生個多個線程,每個線程響應一個請求;
event:事件驅動模型,每個線程響應n個請求;一個主進程:生成m個子進程,每個子進程直接響應n個請求;
適合的場景:
perfork:它適合於沒有線程安全庫,需要避免線程兼容性問題的系統;
worker:適合內存佔用量比較小,適合高流量的http服務器。缺點是假如一個線程崩潰,整個進程就會連同其任何線程一起死掉;prefork方式速度要稍高於worker,然而它需要的cpu和memory資源也稍多於woker。


6、建立httpd服務器(基於編譯的方式進行),要求:

提供兩個基於名稱的虛擬主機:

(a)www1.stuX.com,頁面文件目錄爲/web/vhosts/www1;錯誤日誌爲/var/log/httpd/www1.err,訪問日誌爲/var/log/httpd/www1.access;

(b)www2.stuX.com,頁面文件目錄爲/web/vhosts/www2;錯誤日誌爲/var/log/httpd/www2.err,訪問日誌爲/var/log/httpd/www2.access;

(c)爲兩個虛擬主機建立各自的主頁文件index.html,內容分別爲其對應的主機名;

(d)通過www1.stuX.com/server-status輸出httpd工作狀態相關信息,且只允許提供帳號密碼才能訪問(status:status);

一、編譯安裝httpd
①編譯安裝apr

[root@TESTSVR6 apr-1.5.1]# ./configure --prefix=/usr/local/apr
[root@TESTSVR6 apr-1.5.1]#make && make install

②編譯安裝apr-util

[root@TESTSVR6 ]# cd apr-util-1.5.4
[root@TESTSVR6 apr-util-1.5.4]# ./configure  --with-apr=/usr/local/apr --prefix=/usr/local/apr-util 
[root@TESTSVR6 apr-util-1.5.4]# make && make install

③編譯安裝htppd

[root@TESTSVR6 ]# cd httpd-2.4.23
[root@TESTSVR6 httpd-2.4.23]# ./configure --prefix=/usr/local/apache --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most  --enable-mpms-shared=all --with-mpm=prefork
[root@TESTSVR6 httpd-2.4.23]# make && make install


二、創建站點

①創建站點目錄

[root@TESTSVR6 httpd-2.4.23]# mkdir -pv /web/vhosts/{www1,www2}/
mkdir: 已創建目錄 "/web"
mkdir: 已創建目錄 "/web/vhosts"
mkdir: 已創建目錄 "/web/vhosts/www1/"
mkdir: 已創建目錄 "/web/vhosts/www2/"

②創建站點文件

[root@TESTSVR6 httpd-2.4.23]# echo "www1.stuX.com" > /web/vhosts/www1/index.html
[root@TESTSVR6 httpd-2.4.23]# echo "www2.stuX.com" > /web/vhosts/www2/index.html

三、創建虛擬主機
①編譯主配置文件

[root@TESTSVR6 httpd-2.4.23]# vim /usr/local/apache/conf/httpd.conf 
#DocumentRoot "/usr/local/apache/htdocs"
Include conf/extra/httpd-vhosts.conf

②編譯虛擬主機文件

[root@TESTSVR6 httpd-2.4.23]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf 
<VirtualHost *:80>
 #   ServerAdmin [email protected]
    DocumentRoot "/web/vhosts/www1"
    ServerName www1.stuX.com
 #   ServerAlias www.dummy-host.example.com
    ErrorLog "/var/log/httpd/www1.err"
    CustomLog "/var/log/httpd/www1.access" common
 
<Directory "/web/vhosts/www1">
  options none
  allowoverride none
  Require all granted
</Directory>
 
</VirtualHost>
 
<VirtualHost *:80>
 #   ServerAdmin [email protected]
    DocumentRoot "/web/vhosts/www2"
    ServerName www2.stuX.com
    ErrorLog "/var/log/httpd/www2.err"
    CustomLog "/var/log/httpd/www2.access" common
 
<Directory "/web/vhosts/www2">
  options none
  allowoverride none
  Require all granted
</Directory>
 
</VirtualHost>

③創建status監控頁面並添加認證功能

[root@TESTSVR6 apache]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf 
<VirtualHost *:80>
 #   ServerAdmin [email protected]
    DocumentRoot "/web/vhosts/www1"
    ServerName www1.stuX.com
 #   ServerAlias www.dummy-host.example.com
    ErrorLog "/var/log/httpd/www1.err"
    CustomLog "/var/log/httpd/www1.access" common
 
  <location /server-status>
    SetHandler server-status
    AuthType Basic
    AuthName "Server-Status"
    AuthUserFile "/usr/local/apache/.htpasswd"
    Require valid-user
  </location>

<Directory "/web/vhosts/www1">
  options none
  allowoverride none
  Require all granted
</Directory>
 
</VirtualHost>

④創建虛擬用戶

[root@TESTSVR6 ]#htpasswd -c -m  /usr/local/apache/.htpasswd status

 
⑤重啓並測試

[root@TESTSVR6]# /usr/local/apache/bin/apachectl restart
[root@TESTSVR6 apache]# curl www1.stuX.com
www1.stuX.com
[root@TESTSVR6 apache]# curl www2.stuX.com
www2.stuX.com


7、爲第6題中的第2個虛擬主機提供https服務,使得用戶可以通過https安全的訪問此web站點;

(1)要求使用證書認證,證書中要求使用的國家(CN)、州(HA)、城市(ZZ)和組織(MageEdu);

(2)設置部門爲Ops,主機名爲www2.stuX.com,郵件爲[email protected]

第一步:在準備創建私有CA的主機上創建私有密鑰

[root@TESTSVR1 ~]# cd /etc/pki/CA
[root@TESTSVR1 CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
........................................................+++
.........................................................................................+++
e is 65537 (0x10001)

第二步:創建作爲CA主機所需要的文件

[root@TESTSVR1 CA]# touch {index.txt,serial}
[root@TESTSVR1 CA]# echo 01 > serial

第三步:CA主機自身生成證書請求,也就是爲自己頒發證書

[root@TESTSVR1 CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
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) []:HA
Locality Name (eg, city) [Default City]:ZZ                            
Organization Name (eg, company) [Default Company Ltd]:MageEdu
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server's hostname) []:www2.stux.com
Email Address []:[email protected]

第四步:要使用證書的主機生成頒發證書請求

[root@www etc]# mkdir /etc/httpd/certs
[root@www etc]# cd /etc/httpd/certs
[root@www certs]# (umask 077;openssl genrsa -out httpd.key 2048)
Generating RSA private key, 1024 bit long modulus
.++++++
..++++++
e is 65537 (0x10001)
[root@www certs]# openssl req -new -key httpd.key -out httpd.csr -days 3650
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) []:HA
Locality Name (eg, city) [Default City]:ZZ
Organization Name (eg, company) [Default Company Ltd]:MageEdu
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server's hostname) []:www2.stux.com
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

第五步:配置httpd服務使用數字證書

[root@www certs]# ls
httpd.csr httpd.key
[root@www certs]# openssl ca -in httpd.csr-out httpd.crt -days 3650
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches thesignature
Signature ok
Certificate Details:
       Serial Number: 1 (0x1)
       Validity
           Not Before: Oct 29 09:15:06 2016 GMT
           Not After : Oct 29 09:15:06 2017 GMT
       Subject:
            countryName               = CN
           stateOrProvinceName       = HA
           organizationName          = MageEdu
           organizationalUnitName    = Ops
           commonName                =www2.stux.com
           emailAddress              = [email protected]
       X509v3 extensions:
           X509v3 Basic Constraints:
                CA:FALSE
           Netscape Comment:
                OpenSSL Generated Certificate
           X509v3 Subject Key Identifier:
               9A:84:73:63:C0:82:7F:45:21:9C:BA:2B:4C:FB:C3:87:7C:BA:63:58
           X509v3 Authority Key Identifier:
               keyid:1C:57:C2:12:E4:D3:A6:4F:9A:7A:C6:53:7F:5B:7B:86:1E:75:0D:57
  
Certificate is to be certified until Oct 29 09:15:06 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

第六步:配置https服務器加密傳輸

[root@www certs]# yum install mod_ssl -y
[root@www ~]# rpm -qa mod_ssl
mod_ssl-2.2.15-39.el6.centos.x86_64
[root@www conf.d]# ls
mod_dnssd.conf  README ssl.conf  welcome.conf
[root@www conf.d]#vim  /etc/httpd/conf.d/ssl.conf
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost 192.168.0.130:443>
         DocumentRoot"/web/vhosts/www2"
         ServerName  www2.stuX.com:443
         SSLEngineon
         SSLCertificateFile  /etc/httpd/certs/httpd.crt
         SSLCertificateKeyFile  /etc/httpd/certs/httpd.key
</VirtualHost>


8、建立samba共享,共享目錄爲/data,要求:(描述完整的過程)

1)共享名爲shared,工作組爲magedu;

2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop爲附加組,ubuntu不屬於develop組;密碼均爲用戶名;

3)添加samba用戶gentoo,centos和ubuntu,密碼均爲“mageedu”;

4)此samba共享shared僅允許develop組具有寫權限,其他用戶只能以只讀方式訪問;

5)此samba共享服務僅允許來自於172.16.0.0/16網絡的主機訪問;

第一步:安裝samba服務

[root@TESTSVR7 ~]# yum -y install samba*

第二步:添加用戶並創建密碼

[root@TESTSVR7 ~]# groupadd develop
[root@TESTSVR7 ~]# useradd -G develop gentoo
[root@TESTSVR7 ~]# useradd -G develop centos
[root@TESTSVR7 ~]# useradd ubuntu
[root@TESTSVR7 ~]# echo "gentoo" | passwd --stdin gentoo
[root@TESTSVR7 ~]# echo "centos" | passwd --stdin centos
[root@TESTSVR7 ~]# echo "ubuntu" | passwd --stdin ubuntu
[root@TESTSVR7 ~]# smbpasswd -a gentoo
New SMB password:
Retype new SMB password:
Added user gentoo.
[root@TESTSVR7 ~]# smbpasswd -a centos
New SMB password:
Retype new SMB password:
Added user centos.
[root@TESTSVR7 ~]# smbpasswd -a ubuntu
New SMB password:
Retype new SMB password:
Added user ubuntu.

第三步:編輯/etc/samba/smb.conf

workgroup = magedu
hosts allow = 192.168.2
[shared]
        comment = Haosmb
        path = /data
        guest = yes
        writable = no
        write list = +develop

使用service smb restart重啓服務

9、搭建一套文件vsftp文件共享服務,共享目錄爲/ftproot,要求:(描述完整的過程)

1)基於虛擬用戶的訪問形式;

2)匿名用戶只允許下載,不允許上傳;

3)禁錮所有的用戶於其家目錄當中;

4)限制最大併發連接數爲200:;

5)匿名用戶的最大傳輸速率512KB/s

6)虛擬用戶的賬號存儲在mysql數據庫當中。

7)數據庫通過NFS進行共享。

第一步:安裝所需要程序
 
安裝mysql和pam_mysql

[root@TESTSVR8 ~]# yum -y install vsftpd mysql-server mysql-devel pam_mysql

第二部:創建虛擬用戶賬號
①準備數據庫及相關表
首先請確保mysql服務已經正常啓動。而後,按需要建立存儲虛擬用戶的數據庫即可,這裏將其創建爲vsftpd數據庫。

mysql> create database vsftpd;
 
mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'www.magedu.com';
mysql> grant select on vsftpd.* to [email protected] identified by 'www.magedu.com';
mysql> flush privileges;
 
mysql> use vsftpd;
mysql> create table users (
    -> id int AUTO_INCREMENT NOT NULL,
    -> name char(20) binary NOT NULL,
    -> password char(48) binary NOT NULL,
    -> primary key(id)
    -> );

②添加測試的虛擬用戶
根據需要添加所需要的用戶,需要說明的是,這裏將其密碼爲了安全起見應該使用PASSWORD函數加密後存儲。

mysql> insert into users(name,password) values('tom',password('magedu'));
mysql> insert into users(name,password) values('jerry',password('magedu'));

第三步:配置vsftpd
①建立pam認證所需文件

[root@TESTSVR8 ~]#vi /etc/pam.d/vsftpd.mysql

添加如下兩行

auth required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
account required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0


注意:由於mysql的安裝方式不同,pam_mysql.so基於unix sock連接mysql服務器時可能會出問題,此時,建議授權一個可遠程連接的mysql並訪問vsftpd數據庫的用戶。
②修改vsftpd的配置文件,使其適應mysql認證
建立虛擬用戶映射的系統用戶及對應的目錄

[root@TESTSVR8 ~]# useradd -s /sbin/nologin -d /var/ftproot vuser
[root@TESTSVR8 ~]# chmod go+rx /var/ftproot

請確保/etc/vsftpd.conf中已經啓用了以下選項

anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES 
chroot_local_user=YES 
local_root=/ftproot
anon_root=/ftproot

而後添加以下選項

guest_enable=YES
guest_username=vuser

並確保pam_service_name選項的值如下所示

pam_service_name=vsftpd.mysql

第四步:啓動vsftpd服務

[root@TESTSVR8 ~]# service vsftpd start
[root@TESTSVR8 ~]# chkconfig vsftpd on

第五步:配置虛擬用戶具有不同的訪問權限
vsftpd可以在配置文件目錄中爲每個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可。
①配置vsftpd爲虛擬用戶使用配置文件目錄

[root@TESTSVR8 ~]# vim vsftpd.conf

添加如下選項

user_config_dir=/etc/vsftpd/vusers_config

②創建所需要目錄,併爲虛擬用戶提供配置文件

[root@TESTSVR8 ~]# mkdir /etc/vsftpd/vusers_config/
[root@TESTSVR8 ~]# cd /etc/vsftpd/vusers_config/
[root@TESTSVR8 ~]# touch tom jerry


③配置虛擬用戶的訪問權限
虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。比如,如果需要讓tom用戶具沒有上傳,刪除文件的權限,可以修改/etc/vsftpd/vusers_config/tom文件,
在裏面添加如下選項即可。

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章