本周作业内容:
1、详细描述一次加密通讯的过程,结合图示最佳。
(1) 客户端发送可供选择的加密方式,并向服务器请求证书;
(2) 服务器端发送证书以及选定的加密方式给客户端;
(3) 客户端取得证书并进行证书验正:
如果信任给其发证书的CA:
(a) 验正证书来源的合法性;用CA的公钥解密证书上数字签名;
(b) 验正证书的内容的合法性:完整性验正
(c) 检查证书的有效期限;
(d) 检查证书是否被吊销;
(e) 证书中拥有者的名字,与访问的目标主机要一致;
(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;
(5) 服务用此密钥加密用户请求的资源,响应给客户端;
--------------------------------------------------------------------------
2、描述创建私有CA的过程,以及为客户端发来的证书请求进行办法证书。
服务器端创建CA
创建CA需要的目录和文件
使用命令行工具生成证书
客户端配置密钥并提请服务器签证
生成密钥,并提交服务器端完成证书生成
服务器给客户端签证
收到客户提交的证书申请,利用客户端提交的申请生成证书
将生成的证书保存一份到本地,并将证书传回客户端
客户端使用证书
将收到的证书放到本地的目录中
客户端和服务器端相互验证则可以使用加密传输
---------------------------------------------------------------
3、搭建一套DNS服务器,负责解析magedu.com域名(自行设定主机名及IP)
(1)、能够对一些主机名进行正向解析和逆向解析;
(2)、对子域cdn.magedu.com进行子域授权,子域负责解析对应子域中的主机名;
(3)、为了保证DNS服务系统的高可用性,请设计一套方案,并写出详细的实施过程
准备说明:
为保证服务使用一主两备,主DNS提供查询,副DNS配置成只缓存服务器
主服务器的地址为192.168.80.133
从服务器的地址为192.168.80.131 192.168.80.132
客户端的电脑一部分以131为主 132为从, 另一部分则相反,这样充分利用两台DNS提供服务
从服务器的配置(两台从服务器相同)
vim /etc/named.conf 添加以下的内容,其他不需要配置
options {
forwarders { 192.168.80.133; };
forward only;
allow-query { any; };
};
主服务器
编辑主配置文件增加和修改以下内容
acl trans_ip {
192.168.80.131;
192.168.80.132;
};
options {
allow-query { trans_ip; };
recursion yes;
};
编辑另一个配置文件添加以下区域,并开启区域传送
vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
allow-update { none; };
allow-transfer { trans_ip; };
};
zone "80.168.192.in-addr.arpa" IN {
type master;
file "80.168.192.zone";
allow-update { none; };
allow-transfer { trans_ip; };
};
在/var/named/添加以下两个文件用来解析对应的服务器
vim /var/named/magedu.com.zone
$TTL 86400
$ORIGIN magedu.com.
@ IN SOA magedu.com. admin.magedu.com. (
20161010;
1D;
1H;
5D;
1H;
);
IN NS ns1
IN NS ns2
IN MX 10 mx
ns1 IN A 192.168.80.100
ns2 IN A 192.168.80.101
mx IN A 192.168.80.200
www IN A 192.168.80.100
www IN A 192.168.80.101
web IN CNAME www
IN NS ns1.cdn //子域授权
IN NS ns2.cdn
ns1.cdn IN A 192.168.80.110
ns2.cdn IN A 192.168.80.111
www.cdn IN A 192.168.80.110
www.cdn IN A 192.168.80.111
vim /var/named/80.168.192.zone
$TTL 86400
80.168.192.in-addr.arpa. IN SOA magedu.com. admin.magedu.com. (
20161010;
1D;
1H;
5D;
1H;
);
80.168.192.in-addr.arpa. IN NS ns1.magedu.com.
80.168.192.in-addr.arpa. IN NS ns2.magedu.com.
200.80.168.192.in-addr.arpa. IN PTR mx.magedu.com.
100.80.168.192.in-addr.arpa. IN PTR www.magedu.com.
101.80.168.192.in-addr.arpa. IN PTR www.magedu.com.
80.168.192.in-addr.arpa. IN NS ns1.cdn.magedu.com.
80.168.192.in-addr.arpa. IN NS ns2.cdn.magedu.com.
110.80.168.192.in-addr.arpa. IN PTR www.cnd.magedu.com.
111.80.168.192.in-addr.arpa. IN PTR www.cnd.magedu.com.
---------------------------------------------------------------------------------------
4、请描述一次完整的http请求处理过程;
(1)客户端请求HTTP资源,服务器收到数据包发现是HTTP请求,则首先与客户端建立TCP的三次握手,
(2)如果需要加密传输则在TCP建立后再次建立SSl的三次握手
(3)连接建立后则开始传输数据
(4)服务器依据用户请求的数据,构建响应报文
(5)服务器首先查看本地缓存是否有用户需要的数据,如果有且没有过期则取出数据构建响应报文
(6)本地缓存没有或已经过期,则查询后端缓存服务器有则取回本地,需要缓存则缓存,不需要则直接构建响应报文
(7)如果缓存服务器没有则向后端服务器查询,后端服务器由则取回本地,并构建缓存,响应用户的请求
(8)当用户请求的资源为动态时,可能需要查询后端的数据库服务器或则PHP服务器,
同样能缓存则构建缓存不能则取回本地构建响应报文
(9)如果后端服务器也没有则构建请求资源不存在通常错误代码为404
(10)如果资源存在前端服务器构建响应报文并发送给客户端
(11)客户端如果任然需要请求则只要在配置的超时时间内就可继续响应
(12)当请求完毕,则结束建立的连接,依次为SSl 的三次握手, TCP三次握手
-------------------------------------------------------------------------------------
5、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。
http支持的处理模块有 prefork , worker 和 event
prefork:
一个进程下负责n个子进程,每个子进程一次处理一个请求,可同时处理的能力为N
突发处理是效果好,在大并发时反而慢了
worker:
一个进程创建n个子进程,每个子进程又可以创建m个线程 每个线程一次处理一个请求,可同时处理的能力为 n*m
平稳的处理能力,数据流叫平均
event:
一个进程创建N个子进程, 每个子进程同时处理多个请求, 可同时处理的能力n*m
承受更高的并发负载
------------------------------------------------------------------------------
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);
新建需要用到的目录文件
mkdir /web/vhsots/{www1,www2} -pv
添加用户
useradd status
生成密码w文件
htpasswd -c /etc/httpd24/.htpasswd jim
配置主页文件
vim /web/vhosts/www1/index.html
vim /web/vhosts/www2/index.html
更改创建文件和目录的属主和属组
chown apache.apache /web/vhosts/ -r
chwon apache.apache /etc/httpd24/.htpasswd
编辑虚拟机的主配置文件/etc/httpd24/http.conf
使用虚拟主机时,要关闭系统全局下提供的路径等而使用虚拟机自己专用的
编辑配置文件添加两个虚拟主机
ServerName www1.stu5.com
DocumentRoot "/web/vhosts/www1"
ErrorLog /var/log/httpd/www1.err
CustomLog /vr/log/httpd/www1.access
options None
#AllowOverride None
AuthType Basic
AuthName "enter a name"
AuthUserFile "/web/vhosts/www1/.htpasswd"
require valid-user
ServerName www2.stu5.com
DocumentRoot "/web/vhosts/www2"
ErrorLog /var/log/httpd/www2.err
CustomLog /var/log/httpd/www2.access
--------------------------------------------------------------------------
7、为第6题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
(1)要求使用证书认证,证书中要求使用的国家(CN)、州(HA)、城市(ZZ)和组织(MageEdu);
(2)设置部门为Ops,主机名为www2.stuX.com,邮件为[email protected];
服务器端配置CA
cd /etc/pki/CA
(umask 077; openssl genrsa -out private/cakey.pem 2048)
touch index.txt
echo 01 > serial
openssl req -new -x509 -in private/cakey.pem -out cacrt.pem -days 1000
根据系统的提示输入证书信息
配置客户端
cd /etc/httpd/ssl/
(umask 077; openssl -genrsa -out httpd.key 1024)
openssl req -new -in httpd.key -out httpd.csr -days 365
根据系统的提示输入证书的信息 (两次输入的信息要一致)
scp httpd.csr [email protected]:/tmp
服务器端下发证书
openssl ca -in /tmp/httpd.csr -out certs/www2.stu5.com.crt/ -days 365
scp certs/www2.stu5.com.crt 192.168.80.132/tmp
客户端使用证书
cp /tmp/www2.stu5.com.crt /etc/http/ssl/
http端安装SSL模块
yum -y install mod-ssl.x86_64
配置SSL 修改相关的路径
由于编译安装所以修改vim /etc/http24/extra/httpd-ssl.conf
ServerName www2.stu5.com
DocumentRoot "/web/vhosts/www2"
SSlEngin on
sslprotocl all -SSlv2
SSLCertificateFile /etc/http/ssl/www.magedu.com.crt
SSLCertificateKeyFile /etc/http/ssl/httpd.key
编辑http服务器的配置
增加SSL模块
并将SSL的路径添加主配置中
Include /etc/httpd24/extra/httpd-ssl.conf
重启服务器
---------------------------------------------------------------------------
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网络的主机访问;
新建用户和组
groupadd develop
useradd gentoo -g develop
useradd centos -g develop
useradd ubuntu
给SAMBA添加密码
smbpasswd -a gentoo
smbpasswd -a centos
smbpasswd -a ubuntu
使用命令后提示输入密码,输入两次后即可
验证
pdbedit -l
新建用到的工作目录
mkdir /data/
给共享的目录授权
setfacl -m g:develop:rxw /data/
vim /etc/samba/smb.conf增加
[shared]
comment = share the /data/
path = /data/
wirte list = @develop
编辑/etc/exports配置共享所允许的主机
/data 172.16.0.0/16(rw)
挂载文件
mount -t nfs //172.16.0.100:/shared /mnt/nfs
要是挂载文件一直生效编辑配置文件
vim /etc/fstab
172.16.0.100:/shared /nfs/data nfs defaults,_netdev 0 0
验证
smbstatus -b
登录
smbclient //172.16.0.100/shared -U gentoo
---------------------------------------------------------------------------
9、搭建一套文件vsftp文件共享服务,共享目录为/ftproot,要求:(描述完整的过程)
1)基于虚拟用户的访问形式;
2)匿名用户只允许下载,不允许上传;
3)禁锢所有的用户于其家目录当中;
4)限制最大并发连接数为200:;
5)匿名用户的最大传输速率512KB/s
6)虚拟用户的账号存储在mysql数据库当中。
7)数据库通过NFS进行共享。
使用YUM安装vsftpd包,nfs包,pam_mysql包
编译安装mysql数据包
一、创建所有要的用户和组
1、创建数据库管理用户和组
在数据库安装的主机和共享数据目录的主机都需要安装
两处的数据库组和用户必须拥有相同的用户ID和组ID
如果不一样修改配置文件/etc/passwd, /etc/group
groupadd -r mysql
groupadd -g mysql -r mysql -d /mysql/data
2、创建映射的账号
useradd -s /sbin/nologin -d /ftproot ftpuser
chmod go+rw /ftproot
二、编辑NFS共享(该目录为数据库的数据目录,编译MYSQL时要指定为位置在本地的挂在)
vim /etc/exports
/mysql/data 192.168.80.131(rw,no_root_squash)
三、在数据库程序的编译安装主机上挂载NFS共享
NFS服务要已经启动
挂载要注意防火墙和SELinux的拦截,配置允许通过
并注意用户和组的ID是否一致,共享目录MYSQL组和用户是否有访问权限
mount -t nfs 192.168.80.130:/mysql/data /mysql/data
安装Mysql服务器并配置虚拟用户
tar xf mysql-5.5.24-linux2.6-i686.tar.gz -C /usr/local
cd /usr/local
ln -s mysql-5.5.24-linux2.6-i686 mysql
cd mysql
chown -R mysql:mysql .
scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/mysql/data
CREATE DATABASE vsftpd;
GRANT SELECT ON vsftpd.* TO vsftpd@'127.0.0.1' IDENTIFIED BY 'magedu';
GRANT SELECT ON vsftpd.* TO vsftpd@'localhost' IDENTIFIED BY 'magedu';
FLUSH PRIVILEGES;
CREATE TABLE users (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) BINARY NOT NULL,
passwd CHAR(48) BINARY NOT NULL );
INSERT INTO users(name, passwd) VALUES('centos', password('magedu')),('fedora',password('magedu'));
四、配置PAM
要查看数据包中PAM-MYSQL的生成的模块的位置,在配置文件总指定
vim /etc/pam.d/vsftpd.mysql
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=magedu host=localhost db=vsftpd table=users usercolumn=name passwdcoloum=passwd crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=magedu host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=2
五、编辑vsftpd服务并配置
vim /etc/vsftpd/vsftpd.conf
local_enable=YES
anonymous_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
anon_max_rate=512000
max_clients=200
pam_service_name=vsftpd
guest_enable=YES
guest_username=ftpuser
六、启动服务即可开始共享
新的数据库只要挂载NFS的共享数据目录,编译安装指定数据目录为挂在的位置即可