马哥linux作业第9周

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了马哥linux作业第9周相关的知识,希望对你有一定的参考价值。

1、详细描述一次加密通讯的过程,结合图示最佳。

技术分享

SSL安全套接层协议,使用公钥和私钥组合,加密网页和服务器之间传输的数据。
OIS模型中介于应用层和传输层之间,
表示层:SSL握手协议(协商密钥)
会话层:SSL记录协议(定义传输格式)
握手过程如下:
(1)SSL客户端通过Client Hello消息将它支持的SSL版本、加密算法、密钥交换算法、MAC算法等信息发送给SSL
服务器。
(2)SSL服务器确定本次通信采用的SSL版本和加密套件,并通过Server Hello消息通知给SSL客户端。如果SSL服
务器允许SSL客户端在以后的通信中重用本次会话,则SSL服务器会为本次会话分配会话ID,并通过Server Hello消息发送给SSL客户端。
(3)SSL服务器将携带自己公钥信息的数字证书通过Certificate消息发送给SSL客户端。
(4)SSL服务器发送Server Hello Done消息,通知SSL客户端版本和加密套件协商结束,开始进行密钥交换。
(5)SSL客户端验证SSL服务器的证书合法后,利用证书中的公钥加密SSL客户端随机生成的premaster secret,
并通过Client Key Exchange消息发送给SSL服务器。
(6)SSL客户端发送Change Cipher Spec消息,通知SSL服务器后续报文将采用协商好的密钥和加密套件进行加密
和MAC计算。
(7)SSL客户端计算已交互的握手消息(除Change Cipher Spec消息外所有已交互的消息)的Hash值,利用协商
好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL服务器。SSL服
务器利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且
MAC值验证成功,则证明密钥和加密套件协商成功。
(8)同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报文将采用协商好的密钥和加密套件
进行加密和MAC计算。
(9)SSL服务器计算已交互的握手消息的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、
加密等),并通过Finished消息发送给SSL客户端。SSL客户端利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。


2、描述创建私有CA的过程,以及为客户端发来的证书请求进行办法证书。

创建ca证书申请及签署步骤:
 1 生成申请请求:
 2 RA核验
 3 CA签署
 4 获取证书
具体创建CA证书如下:
openssl的默认配置文件:/etc/pki/tls/openssl.cnf 
1 创建所需要的的文件
  cd /etc/pki/CA 
  touch index.txt 
  echo 01 > serial
2 ca自签证书
生成私钥:(umask 077;openssl genrsa -out private/cakey.pem 2048)
提取公钥:openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
          -new:生成新的证书签署请求
  -x509:专用于CA自签证书
  -key:生成请求时用到的私钥文件
  -days:证书的有效期,默认单位是天
  -out:公钥的保存路径
回车之后的交互输入信息
 国家
     省份
   城市
 公司名,组织名
 部门名
 服务器名字
 邮件地址
发证过程:
  a 用到证书的主机生成证书请求
  b 把请求文件传输给ca
  c ca签署
  d 发送证书给服务器
  
  
  以hhtps为例:
  cd /etc/httpd
  mkdir ssl
  cd ssl 
  生成客户端私钥:(umask 077;openssl genrsa -out http.key 2048)
  提取客户端公钥:openssl req -new -key http.key -days 365 -out httpd.csr
  回车之后的交互输入信息
 国家
     省份
   城市
 公司名,组织名
 部门名
 服务器名字
 邮件地址
  
  httpd.csr并不是证书,只是是证书请求,需要把这个请求给ca服务器验证
  上传给CA服务器:scp httpd.scr [email protected]服务器ip:/tmp 
  
  ca服务器:
  cd /tmp 
  ls
  openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
  把验证通过的证书发送给客户端:scp /etc/pki/CA/certs/httpd.crt 客户端ip:/etc/httpd/ssl/


 

 

3、搭建一套DNS服务器,负责解析magedu.com域名(自行设定主机名及IP)

(1)、能够对一些主机名进行正向解析和逆向解析;

正向解析:
1 编辑主配置文件
vim /etc/named.conf
listen-on port 53 { any; };表示监听本地IP的53端口,允许所用地址访问本地53端口
allow-query{ any; };允许所有地址查询
recursion yes;是否递归,如果是no那么这台DNS服务器将不会递归解析,yes或注释掉不写,表是允许,默认是允许
一般把dnssec选项改no,注释也是默认的开启
dnssec-enable no;
dnssec-validation no;
2 编辑区域配置文件:
vim /etc/named.rfc1912.zones
//加入一个新的需要解析的区域:
zone "magedu.com" IN {
       type master;
       file "magedu.com.zone";
};
3 编辑区域解析库文件
//新的解析库文件一般都是需要自己手动创建
cd /var/named/  区域解析库文件目录
vim magedu.com.zone 创建解析库文件,此文件名和区域配置文件中的名应该一致,并添加解析数据
$TTL 1D
$ORIGIN magedu.com.
@   IN    SOA  ns1.magedu.com. admin.magedu.com. (
               20161017001
               1H
               5M
               7D
               1D
)
      IN      NS  ns1
      IN      NS  ns2
      IN      MX 10  mx1
ns1   IN      A  192.168.2.110
ns2   IN      A  192.168.2.111
mx1   IN      A  192.168.2.112
www   IN      A  192.168.2.113
ftp   IN      A  192.168.2.114
修改解析库文件权限和属组:
#chmod 640 magedu.com.zone 
#chown :named magedu.com.zone
4 测试
检查配置文件是否存在错误:
[[email protected] named]# named-checkconf 
[[email protected] named]# named-checkzone "magedu.com" magedu.com.zone 
zone magedu.com/IN: loaded serial 2981147817
OK
重启服务器:
[[email protected] named]# service named restart
Stopping named: .                                          [  OK  ]
Starting named:
测试:
# dig -t A www.magedu.com @192.168.2.110
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t A www.magedu.com @192.168.2.110
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23132
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com.INA
;; ANSWER SECTION:
www.magedu.com.86400INA192.168.2.113
;; AUTHORITY SECTION:
magedu.com.86400INNSns2.magedu.com.
magedu.com.86400INNSns1.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com.86400INA192.168.2.110
ns2.magedu.com.86400INA192.168.2.111
;; Query time: 1 msec
;; SERVER: 192.168.2.110#53(192.168.2.110)
;; WHEN: Fri Oct 28 05:51:23 2016
;; MSG SIZE  rcvd: 116
反向解析:
1 编辑区域配置文件:
//加入一个新的需要反向解析的网络地址区域:
zone "2.168.192.in-addr.arpa" IN {
      type master;
      file "2.168.192.zone";
};
2 编辑反向区域解析库文件:
cd /var/named/
vim 2.168.192.zone
$TTL 1D
$ORIGIN 2.168.192.in-addr.arpa.
@   IN    SOA  ns1.magedu.com. admin.magedu.com. (
               20161018001
               1H
               5M
               7D
               1D
)
      IN      NS  ns1.magedu.com.
      IN      NS  ns2.magedu.com.
110   IN      PTR  ns1.magedu.com.
111   IN      PTR  ns2.magedu.com.
112   IN      PTR  mail.magedu.com.
113   IN      PTR  www.magedu.com.
114   IN      PTR  ftp.magedu.com.
修改解析库文件权限和属组:
#chmod 640 2.168.192.zone
#chown :named 2.168.192.zone
3 测试:
检查配置文件是否存在错误:
[[email protected] named]# named-checkconf 
[[email protected] named]# named-checkzone "2.168.192.in-addr.arpa" 2.168.192.zone 
zone 2.168.192.in-addr.arpa/IN: 2.168.192.in-addr.arpa/MX ‘mail.magedu.com‘ (out of zone) has no addresses records (A or AAAA)
zone 2.168.192.in-addr.arpa/IN: loaded serial 2981148817
OK
重新加载服务:
[[email protected] named]# rndc reload
server reload successful
测试:
[[email protected] named]# dig -x 192.168.2.114 @192.168.2.110
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -x 192.168.2.114 @192.168.2.110
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6316
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;114.2.168.192.in-addr.arpa.INPTR
;; ANSWER SECTION:
114.2.168.192.in-addr.arpa. 86400 INPTRftp.magedu.com.
;; AUTHORITY SECTION:
2.168.192.in-addr.arpa.86400INNSns1.magedu.com.
2.168.192.in-addr.arpa.86400INNSns2.magedu.com.
;; ADDITIONAL SECTION:
ns1.magedu.com.86400INA192.168.2.110
ns2.magedu.com.86400INA192.168.2.111
;; Query time: 0 msec
;; SERVER: 192.168.2.110#53(192.168.2.110)
;; WHEN: Fri Oct 28 06:07:26 2016
;; MSG SIZE  rcvd: 140
(2)、对子域cdn.magedu.com进行子域授权,子域负责解析对应子域中的主机名;
1 在父域解析库文件中增加子域的NS和A记录
vim vim magedu.com.zone
    IN      NS  ns1.cdn
    IN      NS  ns2.cdn
ftp   IN      A  192.168.2.114
ns1.cdn   IN   A   192.168.2.109
ns2.cdn   IN   A   192.168.2.100
2 子域服务器:
yum -y install bind
vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
3 编辑区域配置文件:
# 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.110; };
};
4 编辑子域解析库文件:
[[email protected] named]# vim /var/named/cdn.magedu.com
$TTL 1D
$ORIGIN cdn.magedu.com.
@        IN       SOA    ns1.cdn.magedu.com. admin.cdn.magedu.com.(
                         2016110201
                         1H
                         10M
                         3D
                         1D )
          IN       NS   ns1
          IN       NS   ns2
  IN       MX 10 mail
ns1       IN       A    192.168.2.109
ns2       IN       A    192.168.2.100
www       IN       A    192.168.2.10
ftp       IN       A    192.168.2.11
mail      IN       A 192.168.2.12
mail1     IN       CNAME  mail
*         IN       A     192.168.2.109
5 测试:                                   
[[email protected] named]# named-checkconf 
[[email protected] named]# named-checkzone "cdn.magedu.com" cdn.magedu.com 
zone cdn.magedu.com/IN: loaded serial 2016110201
OK
[[email protected] named]# service named restart
Stopping named:                                            [  OK  ]
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]
子域解析:
[[email protected] named]# dig -t A www.cdn.magedu.com @192.168.2.109
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t A www.cdn.magedu.com @192.168.2.109
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30310
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.cdn.magedu.com.INA
;; ANSWER SECTION:
www.cdn.magedu.com.86400INA192.168.2.10
;; AUTHORITY SECTION:
cdn.magedu.com.86400INNSns1.cdn.magedu.com.
cdn.magedu.com.86400INNSns2.cdn.magedu.com.
;; ADDITIONAL SECTION:
ns1.cdn.magedu.com.86400INA192.168.2.109
ns2.cdn.magedu.com.86400INA192.168.2.100
;; Query time: 0 msec
;; SERVER: 192.168.2.109#53(192.168.2.109)
;; WHEN: Mon Oct 24 15:06:57 2016
;; MSG SIZE  rcvd: 120
父域解析:
[[email protected] named]# dig -t A www.magedu.com @192.168.2.109
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t A www.magedu.com @192.168.2.109
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53661
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4
;; QUESTION SECTION:
;www.magedu.com.INA
;; ANSWER SECTION:
www.magedu.com.85257INA192.168.2.113
;; AUTHORITY SECTION:
magedu.com.85257INNSns2.magedu.com.
magedu.com.85257INNSns2.cdn.magedu.com.
magedu.com.85257INNSns1.magedu.com.
magedu.com.85257INNSns1.cdn.magedu.com.
;; ADDITIONAL SECTION:
ns1.cdn.magedu.com.86400INA192.168.2.109
ns2.cdn.magedu.com.86400INA192.168.2.100
ns1.magedu.com.85257INA192.168.2.110
ns2.magedu.com.85257INA192.168.2.111


(3)、为了保证DNS服务系统的高可用性,请设计一套方案,并写出详细的实施过程

1 借助主从DNS系统可实现快速有效的灾备切换操作,提升系统切换操作的效率,简化灾备切换流程。
2 dnc服务器使用缓存,降低服务器消耗;
3 考虑安全性因素,DNS系统的部署遵循内外分开的原则,对于内部DNS系统与Internet保持隔离;
4 智能DNS应用模式,以实现应用多点接入,跨数据中心的负载分流等功能;

4、请描述一次完整的http请求处理过程;

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 
1. 建立TCP连接
在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,
该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。
HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,
因此,首先要建立TCP连接,一般TCP连接的端口号是80。
2. Web浏览器向Web服务器发送请求命令 
一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET/sample/hello.jsp HTTP/1.1。
3. Web浏览器发送请求头信息 
浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了
一空白行来通知服务器,它已经结束了该头信息的发送。 
4. Web服务器应答 
客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部分是协议的版本
号和应答状态码。
5. Web服务器发送应答头信息 
正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求
的文档。 
6. Web服务器向浏览器发送数据 
Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以
Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
7. Web服务器关闭TCP连接 
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其
头信息加入了这行代码:
Connection:keep-alive 
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为
每个请求建立新连接所需的时间,还节约了网络带宽。


5、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。

prefork:(预派生,生成一个请求,过1秒再生成一个请求,再过一秒生成2个,然后按照指数方式生成。)
多进程模型,每个进程响应一个请求;
一个主进程:负责生成子进程及回收子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处
理;
n个子进程:每个子进程处理一个请求;
工作模型:会预先生成几个空闲进程,随时等待用于响应用户请求;最大空闲和最小空闲;
(一个请求一个进程,稳定可靠,性能差)
worker:多进程多线程模型,每线程处理一个用户请求;    
一个主进程:负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;
多个子进程:每个子进程负责生成多个线程;
每个线程:负责响应用户请求;
并发响应数量:m*n
 m:子进程数量
 n:每个子进程所能创建的最大线程数量;
(web生成多个进程,每个进程生成多个线程,一个请求用一个线程,多个线程共享一个资源,效率高,但写入
时会造成竞争)
event:事件驱动模型,多进程模型,每个进程响应多个请求;
一个主进程 :负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;
子进程:基于事件驱动机制直接响应多个请求;
(基于事件一个进程处理多个请求)httpd-2.2: 仍为测试使用模型;httpd-2.4:event可生产环境中使用;
event :机制解释。内部并没有什么线程来为每一个连接创建一个独立的处理逻辑。但在其内部是基于事件
驱动的机制(当请求到来的时候,请求需要等待的时候,请求找了一个内存空间记录状态 ,I/O完成时,会
继续进行操作)



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);

编译前先准备系统的开发环境:
[[email protected] /]#yum -y groupinstall "Development tools" "Server Platform Development"
创建一个下载目录,用于下载所需软件:(apache需要的依赖pcre,apr及apr-util)
[[email protected] /]# mkdir /lamp
[[email protected] /]# cd /lamp/
[[email protected] lamp]# wget http://mirrors.hust.edu.cn/apache//apr/apr-1.5.2.tar.gz
[[email protected] lamp]# wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.gz
[[email protected] lamp]# wget http://ncu.dl.sourceforge.net/project/pcre/pcre/8.39/pcre-8.39.tar.gz
编译安装Apache:
1 编译安装apr:
[[email protected] lamp]# tar zxf apr-1.5.2.tar.gz
[[email protected] lamp]# cd apr-1.5.2
[[email protected] apr-1.5.2]# ./configure --prefix=/usr/local/apr
[[email protected] apr-1.5.2]# make && make install
2 编译安装arp-util 
[[email protected] lamp]# tar -zxf apr-util-1.5.4.tar.gz 
[[email protected] lamp]# cd apr-util-1.5.4
[[email protected] apr-util-1.5.4]#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[[email protected] apr-util-1.5.4]#make && make install
3 编译安装pcre
[[email protected] lamp]# tar -zxf pcre-8.39.tar.gz 
[[email protected] lamp]# cd pcre-8.39
[[email protected] pcre-8.39]# ./configure --enable-utf8 
[[email protected] pcre-8.39]#make && make install
4 安装Apache
[[email protected] lamp]# tar -zxf httpd-2.4.23.tar.gz
[[email protected] lamp]# cd httpd-2.4.23
[[email protected] httpd-2.4.23]#./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd 
--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=worker
[[email protected] httpd-2.4.23]## make && make install
检测是否安装成功:
[[email protected] httpd-2.4.23]# /usr/local/apache/bin/httpd -v
Server version: Apache/2.4.23 (Unix)
Server built:   Nov  3 2016 07:41:40
把apache服务加到系统service里面去:
[[email protected] httpd]# cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
[[email protected] httpd]# vim /etc/rc.d/init.d/httpd 
修改httpd,在文件头加入如下内容:
# chkconfig: 345 85 15(第一行3个数字参数意义分别为:哪些Linux级别需要启动httpd(3,4,5);启动序号(85);关闭序号(15))
[[email protected] apr-1.5.2]# chkconfig --add httpd
[[email protected] apr-1.5.2]# chkconfig httpd on
[[email protected] apr-1.5.2]# chkconfig --list httpd
httpd          0:off1:off2:on3:on4:on5:on6:off
[[email protected] apr-1.5.2]# service httpd restart
[[email protected] apr-1.5.2]# ss -tunl
Netid State      Recv-Q Send-Q          Local Address:Port            Peer Address:Port 
tcp   LISTEN     0      128                        :::80                        :::*
配置虚拟主机:
[[email protected] ~]# vim /etc/httpd/httpd.conf 
#DocumentRoot "/usr/local/apache/htdocs" 
Include /etc/httpd24/extra/httpd-vhosts.conf 
[[email protected] ~]# vim /etc/httpd/extra/httpd-vhosts.conf 
<VirtualHost 192.168.2.105:80>
    ServerAdmin admin.stuX.com
    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/">
    <RequireAll>
        Require all granted
    </RequireAll>
  </Directory>
</VirtualHost>
<VirtualHost 192.168.2.105:80>
    ServerAdmin admin.stuX.com
    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/">
      <RequireAll>
        Require all granted
    </RequireAll>
  </Directory>
</VirtualHost>
[[email protected] ~]# mkdir -p /web/vhost/{www1,www2}
[[email protected] ~]# echo "www1.test" > /web/vhost/www1/index.html && echo "www2.test"  /web/vhost/www2/index.html
[[email protected] ~]# service httpd restart
测试:
[[email protected] ~]# vim /etc/hosts
192.168.2.105 www1.stuX.com
192.168.2.105 www2.stuX.com
[[email protected] ~]# curl www1.stuX.com
www1.test
[[email protected] ~]# curl www2.stuX.com
www2.test
修改第一个虚拟主机:
[[email protected] ~]# /usr/local/apache/bin/htpasswd -m -c /usr/local/apache/.htpasswd status
New password: 
Re-type new password: 
Adding password for user status
[[email protected] ~]# vim /etc/httpd/extra/httpd-vhosts.conf 
<VirtualHost 192.168.2.105:80>
    ServerAdmin admin.stuX.com
    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/">
    <RequireAll>
        Require all granted
    </RequireAll>
  </Directory>
   <Location /server-status>
    SetHandler server-status
    AuthType Basic
    AuthName "Only for status"
    AuthUserFile "/usr/local/apache/.htpasswd"
    Require valid-user
   </Location>
</VirtualHost>
[[email protected] ~]# service httpd restart
测试:
测试客户端也要修改hosts文件

技术分享




技术分享



7、为第6题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;

(1)要求使用证书认证,证书中要求使用的国家(CN)、州(HA)、城市(ZZ)和组织(MageEdu);

(2)设置部门为Ops,主机名为www2.stuX.com,邮件为[email protected]

自建CA:
1 创建所需文件
[[email protected] ~]# cd /etc/pki/CA/
[[email protected] CA]# touch index.txt
[[email protected] CA]# touch serial
[[email protected] CA]# echo 01 > serial  
2 ca自签证书
[[email protected] CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
[[email protected] CA]# openssl req -new -x509 -key private/cakey.pem -days 7300 -out 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) [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]
3 httpd生成私钥,创建证书签署请求,然后由CA签署
[[email protected] CA]# mkdir /usr/local/apache/ssl
[[email protected] CA]# (umask 077; openssl genrsa -out /usr/local/apache/ssl/http.key 2048)
Generating RSA private key, 2048 bit long modulus
[[email protected] ssl]# openssl req -new -key http.key -days 365 -out httpd.csr
[[email protected] ssl]# scp httpd.csr -P 6006 [email protected]:/tmp
[[email protected] CA]# openssl ca -in /tmp/httpd.csr -out certs/httpd.crt -days 365
[[email protected] CA]# scp certs/httpd.crt 192.168.2.105:/usr/local/apache/ssl/
4 httpd置文件修改
[[email protected] httpd]# vim /etc/httpd/httpd.conf
LoadModule ssl_module modules/mod_ssl.so #开启
Include /etc/httpd24/extra/httpd-ssl.conf #开启
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so#开启
[[email protected] httpd]# vim /etc/httpd/extra/httpd-ssl.conf 
<VirtualHost *:443>
#   General setup for the virtual host
DocumentRoot "/web/vhosts/www2/"
ServerName www2.stuX.com
ServerAdmin [email protected]
ErrorLog "/var/log/httpd/www2.err"
CustomLog "/var/log/httpd/www2.access" common
SSLCertificateFile "/usr/local/apache/ssl/http.crt"
SSLCertificateKeyFile "/usr/local/apache/ssl/http.key"
[[email protected] httpd]# service httpd restart


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网络的主机访问;

1 安装samba
[[email protected] httpd]# yum -y install samba samba-client
2 创建组,用户及samba用户:
[[email protected] httpd]# groupadd develop
[[email protected] httpd]# useradd -G develop gentoo
[[email protected] httpd]# useradd -G develop centos
[[email protected] httpd]# useradd ubuntu
[[email protected] httpd]# echo gentoo | passwd --stdin gentoo && echo centos | passwd --stdin centos &&  echo ubuntu | passwd --stdin ubuntu
[[email protected] httpd]# smbpasswd -a gentoo        
[[email protected] httpd]# smbpasswd -a centos
[[email protected] httpd]# smbpasswd -a ubuntu
3 修改配置文件
[[email protected] /]# vim /etc/samba/smb.conf
hosts allow = 192.168.2.0/24
[share]
     comment = test shared
     path= /data
     guest ok = yes
     valid users = gentoo,centos,ubuntu
     write list = @develop
     writable = yes
[[email protected] /]# mkdir /data
[[email protected] /]# chmod g+w /data/
[[email protected] /]# chown :develop /data/
[[email protected] httpd]# /etc/init.d/smb restart
[[email protected] /]# smbclient -L 192.168.2.105 -U gentoo
Enter gentoo‘s password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
Sharename       Type      Comment
---------       ----      -------
share           Disk      test shared
IPC$            IPC       IPC Service (Samba Server Version 3.6.23-33.el6)
gentoo          Disk      Home Directories
[[email protected] modules]#  smbclient //192.168.2.105/share -U centos
Enter centos‘s password: 
smb: \> lcd /etc/
smb: \> put fstab 
putting file fstab as \fstab (210.0 kb/s) (average 210.0 kb/s)
[[email protected] modules]#  smbclient //192.168.2.105/share -U ubuntu
Enter ubuntu‘s password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
smb: \> lcd /etc/
smb: \> put fstab 
NT_STATUS_ACCESS_DENIED opening remote file \fstab


9、搭建一套文件vsftp文件共享服务,共享目录为/ftproot,要求:(描述完整的过程)

1)基于虚拟用户的访问形式;

2)匿名用户只允许下载,不允许上传;

3)禁锢所有的用户于其家目录当中;

4)限制最大并发连接数为200:;

5)匿名用户的最大传输速率512KB/s

6)虚拟用户的账号存储在mysql数据库当中。

7)数据库通过NFS进行共享。

1 安装服务器端:
[[email protected] data]# yum -y install nfs-utils
[[email protected] data]# mkdir /ftproot
[[email protected] data]# id mysql
uid=498(mysql) gid=499(mysql) groups=499(mysql)
[[email protected] data]# chown mysql:mysql /ftproot/
[[email protected] data]# vim /etc/exports 
/ftproot   192.168.2.110/24(no_root_squash,rw,sync)
[[email protected] data]# /etc/init.d/nfs restart
2 安装客户端:
[[email protected] yum.repos.d]# mkdir /mydata
[[email protected] yum.repos.d]# vim /etc/fstab
192.168.2.105:/ftproot   /mydata                nfs     defaults        0 0
[[email protected] yum.repos.d]# mount -a
[[email protected] yum.repos.d]# yum -y install mysql mysql-server mysql-devel
[[email protected] yum.repos.d]# yum -y install vsftpd
[[email protected] yum.repos.d]# vim /etc/my.cnf
[mysqld]
datadir=/mydata
[[email protected] yum.repos.d]# mysql_install_db --datadir="/mydata"
[[email protected] yum.repos.d]# /etc/init.d/mysqld restart
配置数据库,和vsftpd
创建数据库:vsftpd,用户:vsftp 表名:users 并插入两条(虚拟用户)数据
mysql> create database vsftpd;
mysql> grant select on vsftpd.* to [email protected] identified by ‘magedu‘;
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));
mysql> insert into users(name,password) values(‘magedu1‘,password(‘magedu‘)),(‘magedu2‘,password(‘magedu‘));
mysql> select * from users;
mysql> flush privileges
配置vsftp
1.建立pam认证所需文件
#vi /etc/pam.d/vsftpd.mysql
添加如下两行
auth required /lib/security/pam_mysql.so user=vsftp passwd=magedu host=192.168.137.30 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 ##用于用户认证
account required /lib/security/pam_mysql.so user=vsftp passwd=magedu host=192.168.137.30 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 ##用于检查用户时效性
2.修改vsftpd的配置文件,使其适应mysql认证
建立虚拟用户映射的系统用户及对应的目录
useradd -s /sbin/nologin -d /var/ftproot vuser
 chmod go+rx /var/ftproot/
请确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES ##禁锢所有本地用户于家目录下
pam_service_name=vsftpd.mysql ##认证文件
max_clients=200 ##并发连接数
anon_max_rate=524288 ##单位是字节每秒,512KB/s 512*1024
启动vsftpd,并测试
service vsftpd start
到服务器上安装ftp客户端工具
# yum install -y ftp lftp
# ftp 192.168.2.110
验证magedu1,magedu2两个用户


本文出自 “给自己充电” 博客,请务必保留此出处http://zengzeyang.blog.51cto.com/6129531/1870003

以上是关于马哥linux作业第9周的主要内容,如果未能解决你的问题,请参考以下文章

马哥linux第8周作业

马哥Linux第五周作业

马哥linux第五周作业

马哥linux第六周作业

马哥linux第七周作业

马哥2016全新Linux+Python高端运维班第五周作业