首页 > 代码库 > 第九周作业

第九周作业

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

技术分享

例如两者A,B进行加密通信:

    双方建立TCP连接,B将自己的CA证书用经过私钥加密后发送给A,A使用存留本机的CA证书库中找到其公钥进行解密,如果能解密说明证书可信任,下一步比对其主机名,如果主机名正确可以进行交换,下一步使用单向加密,加密其特征码与证书中的特征码进行比对,如果正则,则保证了证书的完整性,下一步进行数据交换!

    A将发送的内容进行编写而后发送给B;

    使用单向加密算法提取数据的特征码,用自己的私钥加密这段特征码附加在这段数据后面

    A再用对称密钥将这整段数据进行加密,此时B是没有这段对称加密的密钥的,那么可以使用B的公钥加密这段对称密钥附加在上一段数据后面。

    B使用自己的私钥解密对称加密得到对称加密密钥,使用对称解密算法得到明文数据和特征码,使用对方的公钥解密特征码,使用同样的算法提取特征码,说明数据完整性得到验证;   

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

1.首先在CA服务器上创建所需要的文件/etc/pki/CA中,新建两个文件

touch index.txt

echo 01 > serial

2.CA服务器自签证书

先生成私钥:(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

再生成自签证书:openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out cacert.pem

选项说明:  new: 生成新证书签署请求;

-x509:专用于CA生成子签证书;

-key:生成请求时用到的私钥文件;

-out:/path/to/somecertfile:证书的保存路径;

3.请求证书的服务器生成证书请求

先生成私钥:(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)

再生成证书请求: openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr    

###我这是做的https服务器,所以起名httpd.csr

4.把情求文件传输给CA

scp /etc/httpd/ssl/httpd.csr  root@CAIPADRESS:/tmp/httpd.csr

 5.CA签署证书并放证书发还给请求者;

#openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

scp /tmp/httpd.csr root@HTTPIPADRESS:/etc/httpd/ssl/httpd.crt

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

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

(2)、对子域cdn.magedu.com进行子域授权,子域负责解析对应子域中的主机名;

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

]#  yum install bind
~]# yum install bind-utils   用于dns测试使用
]# setenforce 0
~]# service iptables stop
]# vim /etc/named.conf  
 listen-on port 53 { any;};  修改为any;表示监听所有地址的53端口
      //      listen-on-v6 port 53 { ::1; };   注释掉了IPV6的监听功能
  allow-query  { any; };  修改为any;表示允许所有主机进行dns查询
 recursion yes;  默认yes不改动,表示是否允许递归
 dnssec-enable no;   改为no; 
         dnssec-validation no; 改为no;
保存退出
 service named start    启动服务
 dig -t A www.souhu.com @192.168.1.111    dns查询测试。我的dns服务器IP为192.168.1.111

技术分享

至此,dns缓存服务配置成功。

下边配置区域解析文件:

# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
        type master;
        file "magedu.com.zone";
        allow-update { none;};表示不允许任何主机更新解析文件,安装考虑
};
保存退出
]# vim /var/named/magedu.com.zone


技术分享

保存退出;

service named restart  重启服务

技术分享

经测试都能够成功解析

下边创建反向解析文件:

]# vim /etc/named.rfc1912.zones 
zone "168.192.in-addr.arpa" IN {
         type master;
         file "192.168.zone";
};
]# vim 192.168.zone


技术分享

]# service named restart


技术分享

反映解析成功

下面进行子域授权;

首先在父域dns服务器上添加子域dns服务器的区域解析

技术分享

 添加一条子域dnsNS记录和A记录。我的子域dns服务器IP192.168.1.110

然后子域节点安装bind程序包,配置主配置文件首先成为dns缓存服务器,配置和父域节点一样。

再在子域中添加区域解析文件

# vim /etc/named.rfc1912.zones
zone "cdn.magedu.com" IN {
        type master;
        file "cdn.magedu.com.zone";
        allow-update { none; };
};


技术分享

保存退出后启动dns服务,]# service named start  

 最后在子域节点上进行dns测试,能够解析自己的域,父域不能解析。

技术分享

在父域节点上,可以查询自己域的记录也可以查询子域记录

技术分享

至此,完成子域授权操作。

下面介绍下高可用性,dns的服务器可以是一个主服务多个从服务器。每当主服务器发生解析文件变更时,会主动通知从节点,从而把变更后的解析库文件传递给从服务器。当有一台dns服务器不能提供服务时,可暂时由另外一台dns服务器提供服务。从而实现了高可用性。

Dns主节点的配置就是在/etc/named.rfc1912.zones文件中定义解析区域时, 保证type master;即可。还有一点,主节点的区域解析文件中要有从节点的NS记录和A记录。

我的从节点的IP192.168.1.112

技术分享


ns从节点的配置首先是定义区域

]# vim /etc/named.rfc1912.zones 
zone "magedu.com" IN {区域名称必须和主节点一致
        type slave;类型为从节点
        masters { 192.168.1.111; };   给定主节点的IP地址
        file "slaves/magedu.com.zone";区域解析文件的保存位置在slaves文件夹下
};


还有一点就是要保证主从节点的时间同步,和保证主从节点的通信。

两边重启服务后,查看日志信息就能看到是否成功。

技术分享

主节点发送了通知

下面是从节点的日志信息;

技术分享


至此,dns主从同步实现。

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

一次完整的http请求的过程:

1 建立连接或处理连接;接收请求或拒绝请求

2接受请求 接受来自于网络的请求报文中对某资源的一次请求的过程;

3处理请求:对请求报文进行分析,并获取请求的资源及请求方法等相关信息元数据:请求报文首部

4访问资源;获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求这提供对方请求的静态资源,或动态生成后的资源;这些资源放置于本地文件系统某路径下,此路径通常称为docroot

5创建响应报文;

6发送响应报文

7记录日志

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

prefork :多进程模型,每个进程响应一个请求; 一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求,即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;最大不会超过1024个;

worker:多线程模型,每个线程响应一个请求;一个主进程,生成多个子进程;每个子进程负责生成多个线程,每个线程响应一个请求 

event:事件驱动模型,每个线程响应n个请求;

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

首先下载源码包。

# wget http://apache.fayea.com/httpd/httpd-2.4.23.tar.gz
]# wget http://apache.fayea.com/apr/apr-1.5.2.tar.gz
# wget http://apache.fayea.com/apr/apr-util-1.5.4.tar.gz
安装开发工具
]# yum -y groupinstall "Development tools" "Server Platform Development"
解决依赖关系
]# tar zxvf apr-1.5.2.tar.gz 
# cd apr-1.5.2
]# ./configure --prefix=/usr/local/apr
# make && make install
# tar zxvf apr-util-1.5.4.tar.gz
]# cd apr-util-1.5.4
]# ./configure --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr
# make && make install
]# yum install pcre-devel
添加用户和用户组
#groupadd -r apache
#useradd -r -g apache apache
编译安装http2.4
]# tar zvxf httpd-2.4.23.tar.gz 
]# cd httpd-2.4.23
]#./configure --prefix=/usr/apache --sysconf=/etc/httpd24 --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
]# make && make install
启动服务 # cd /usr/apache/bin; ./apachectl -k start


然后访问网站

技术分享

安装启动成功

下边建立两个虚拟主机;

先创建两个虚拟主机的网页目录

]# mkdir -vp /web/vhosts/www{1,2}

在两个目录下分别创建各自的主页文件index.html

然后新增两个虚拟主机配置

<VirtualHost *:80>
  DocumentRoot "/web/vhosts/www1/"#定义网页文件路径
  ServerName www1.stuX.com
  ErrorLog "/var/log/httpd/www1.err"#定义错误日志
  TransferLog "/var/log/httpd/www1.access"             ##定义访问日志
<Directory "/web/vhosts/">
    Require all granted          ##允许所有用户访问
</Directory>
</VirtualHost>
 
<VirtualHost *:80>
  DocumentRoot "/web/vhosts/www2/"
  ServerName www2.stuX.com
  ErrorLog "/var/log/httpd/www2.err"
  TransferLog "/var/log/httpd/www2.access"
<Directory "/web/vhosts/">
    Require all granted
</Directory>
</VirtualHost>


然后重启服务 # /usr/apache/bin/apachectl -k restart

物理机上添加上两个虚拟主机的hosts记录。就可以访问了。

技术分享技术分享

然后查看日志信息

技术分享

至此,两个虚拟主机创建完成。

下面创建www1.stuX.comserver-status页面。

www1的虚拟主机配置段中,新增如下配置

技术分享

保存退出后,重启服务。

浏览器访问查看效果

技术分享

技术分享


会要求你输入用户名和帐号。Stausstatus

技术分享

至此,支持身份验证的状态信息页就完成了。

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

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

(2)设置部门为Ops,主机名为www2.stuX.com,邮件为admin@stuX.com;

CA服务器上子签证书;

1,首先/etc/pki/tls/openssl.conf配置文件创建serialindex.txt文件

 

2,生成CA的私钥文件:
# (umask 077; openssl genrsa -out private/cakey.pem 2048)
3,生成子签证书:
]# openssl req -x509 -new -key private/cakey.pem -days 7300 -out cacert.pem 
然后安装题目要求填入相应信


技术分享

httpd服务器上获得证书

1,首先生成私钥
#(umask 077; openssl genrsa -out httpd.key 2048)
2,生成证书请求文件
 openssl req -new -key httpd.key -days 365 -out httpd.csr


此处要和CA服务器上填写的内容一致。

技术分享

3.将请求文件发送给CA服务器
]# scp httpd.csr root@192.168.1.112:/tmp
  4.CA服务器签发证书
]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365


技术分享

把证书传给htppd服务器即可。# scp httpd.crt root@192.168.1.111:/etc/httpd24/extra

现在就可以配置www2.satux.com的ssl功能了
   vim /etc/httpd/conf.d/ssl.conf
在末尾添加以下内容
<VirtualHost 192.168.1.111:443>
DocumentRoot /web/vhosts/www2/
ServerName  www2.stuX.com:443
SSLEngine on
SSLCertificateFile /etc/httpd24/extra/httpd.crt
SSLCertificateKeyFile /etc/httpd24/extra/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网络的主机访问;

 


    [root@nod1 ~]#yum install samba -y        #新增用户和组
    [root@nod1 ~]#groupadd develop
    [root@nod1 ~]# useradd -G develop gentoo
    [root@nod1 ~]# useradd -G develop centos
    [root@nod1 ~]# useradd ubuntu
    [root@nod1 ~]# echo "gentoo"|  passwd --stdin gentoo   #更改用户 gentoo 的密码
    [root@nod1 ~]# echo "centos"|  passwd --stdin centos
    [root@nod1 ~]# echo "ubuntu"|  passwd --stdin ubuntu
     
#增加samba用户,新增的samba用户必须是系统中已经存在的
    [root@nod1 ~]# smbpasswd -a gentoo
    New SMB password:
    Retype new SMB password:
    Added user gentoo.
    [root@nod1 ~]# smbpasswd -a centos
    New SMB password:
    Retype new SMB password:
    Added user centos.
    [root@nod1 ~]# smbpasswd -a ubuntu
    New SMB password:
    Retype new SMB password:
    Added user ubuntu.


     

#编辑配置文件

   

 [root@nod1 ~]# vim /etc/samba/smb.conf
    [global]
    workgroup = magedu
    server string = Samba Server Version %v
    security = user
    passdb backend = tdbsam
    load printers = yes
    cups options = raw
    hosts allow = 172.16.
    [shared]
    comment = my samba
    path = /data
    public = no
    valid users = gentoo,centos,ubuntu,@develop
    read list = ubuntu
    write list = @develop
    writable = yes
    printable = no 
#启动服务 
    [root@nod1 ~]# service nmb start
    [root@nod1 ~]# service smb start


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

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

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

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

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

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

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

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

安装程序包:

# yum -y install  mysql-server mysql-devel pam_mysql
创建vsftpd数据库和虚拟用户账号
 mysql> create database vsftpd;
    mysql> grant select on vsftpd.* to centos@localhost identified by ‘centos‘;
    mysql> grant select on vsftpd.* to centos@127.0.0.1 identified by ‘centos‘;
    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)
     );
配置vsftpd
先建立pam认证所需文件
    #vi /etc/pam.d/vsftpd.mysql
    添加如下两行
    auth required /lib/security/pam_mysql.so user=centos passwd=centos  host=localhost db=vsftpd table=users usercolumn=centos passwdcolumn=centos crypt=2
    account required /lib/security/pam_mysql.so user=centos  passwd=centos  host=localhost db=vsftpd table=users usercolumn=gentoo passwdcolumn=gentoo crypt=2
 建立虚拟用户映射的系统用户及对应的目录
    # useradd -s /sbin/nologin -d /var/ftproot vuser
# chmod go+rx /var/ftproot
修改vsftpd的配置文件,使其适应mysql认证
    anonymous_enable=UES
    local_enable=YES
    write_enable=NO
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO
    chroot_local_user=YES    将用户禁锢在自己的家目录中
    guest_enable=YES
    guest_username=vuser    指明虚拟用户映射到的系统用户
    listen=YES
    pasv_min_port=30000
    pasv_max_port=30999
    pam_service_name=vsftpd.mysql  指明使用/etc/pam.d/vsftpd.mysql 来认证



第九周作业