首页 > 代码库 > 第九周作业
第九周作业
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服务器的区域解析
添加一条子域dns的NS记录和A记录。我的子域dns服务器IP为192.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记录。
我的从节点的IP是192.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.com的server-status页面。
在www1的虚拟主机配置段中,新增如下配置
保存退出后,重启服务。
浏览器访问查看效果
会要求你输入用户名和帐号。Staus:status
至此,支持身份验证的状态信息页就完成了。
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配置文件创建serial和index.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 来认证
第九周作业