首页 > 代码库 > 【linux基础】第九周作业
【linux基础】第九周作业
1、详细描述一次加密通讯的过程,结合图示最佳。
加密通讯:A <——> B
1)A与 B通信,首先A、B双方都应该持有对方的公钥,即证书,并验证证书的合法性。
2)加密:
i. A将要发送的数据进行散列计算,并提取特征码(又叫指纹信息)
ii. A对明文数据的指纹信息使用自己的私钥加密,生成数字签名,并将数字签名附加到明文数据之后。
iii. A再使用一个一次性的对称加密算法对明文和数字签名进行加密,生成对应的密文。
iv. A再使用B的公钥对对称加密的密钥进行加密,生成数字信封。
v. A将密文和数字信封打包发送给B。加密完成。
3)解密:
i. B收到A发送过来数据包,进行解密,首先使用B的私钥对数字信封进行解密,取得钥匙(A对明文和数字签名加密的一次性对称密钥);
ii. B取得打开密文的一次性秘钥后,对密文进行解密操作,解开后即可得到明文数据和数字签名;若无法解密则说明数据被更改,不可信;
iii. B使用A的公钥解密数字签名,得到明文数据的特征码,能解出说明数据是A所发送,否则不可信。
iv. B对取得的明文数据进行散列计算,提取特征码,并与A所发送过来的特征码进行比较,相同则说明数据正确未被更改;不同则说明数据不是A所发,不可信。
v. B通过一层层解密得到A发送的明文数据并验证其真实性,至此解密完成。
2、描述创建私有CA的过程,以及为客户端发来的证书请求进行办法证书。
第一步:自建私有CA主机1
openssl的配置文件:www.qixoo.qixoo.com/etc/pki/tls/openssl.cnf
1)创建所需要的文件:cd /etc/pki/CA/
touch index.txt
echo 01 > serial
[ CA]# tree
. ├── cacert.pem ├── certs ├── crl ├── index.txt ├── newcerts │ ├── 01httpd.pem │ └── 01.pem ├── private │ └── cakey.pem ├── serial └── serial.old
2)CA自签证书
#(umask 077 ;opensslgenrsa -out private/cakey.pem 2048)
#openssl req -new -x509-key qkxue.net/private/cakey.pem -days 3650 -out cacert.pem
-new:生成新证书签署请求
-x509:专用于CA生成自签证书
-key:生成请求时用到的私钥文件
-days ###:证书有效期限###
-out/PATH/TO/SOMEWCERTFILE :证书保存路径
[ CA]# openssl x509 -in cacert.pem -noout -text Certificate: Data: Version: 3 (0x2) Serial Number: 15788607697337265536 (0xdb1c670c91c92d80) Signature Algorithm: sha1WithRSAEncryption Issuer: C=cn, ST=hubei, L=hubei, O=longjingcun, OU=Ops, Validity Not Before: Sep 24 01:43:32 2016 GMT Not After : Sep 22 01:43:32 2026 GMT Subject: C=cn, ST=hubei, L=hubei, O=longjingcun, OU=Ops, Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:c2:3a:c0:a0:b2:fe:9b:0f:d5:91:43:31:e9:85: 47:a8:ad:b7:16:06:c7:04:6a:46:67:c4:41:e7:05: 6c:4b:8f:6a:dd:94:48:a5:04:93:20:cb:f6:ec:65: b2:49:12:76:f3:e8:a5:b6:0c:80:0b:d9:ae:9d:23: b1:3f:c3:6a:3c:00:d9:36:bb:da:4e:24:3b:71:f6: f0:c5:28:2a:24:72:c9:ac:c8:6e:5a:aa:0c:21:60: b5:f1:ff:3f:7c:d6:a8:a0:4c:42:b8:c1:f5:d5:de: b7:37:be:38:6a:bf:6d:a1:0a:97:be:b9:22:25:d6: 6c:f0:fd:af:5e:27:aa:cf:7e:64:e9:8e:0d:a9:b0: 0b:5b:95:cd:20:7b:8d:23:64:2f:0a:07:86:2b:32: 2f:13:0b:66:f1:35:f3:75:37:c9:a0:3e:49:40:5f: e6:6a:89:58:d4:77:c3:cc:db:aa:46:e3:8e:b1:3d: d3:5b:22:bf:1e:4d:48:7f:a5:0b:eb:6e:a9:b7:5b: e1:10:80:0d:7d:38:21:ac:60:a1:95:5e:2c:d7:72: ee:b1:fd:52:df:70:a5:6f:6e:aa:4c:cb:82:bb:8c: a7:0a:e8:b4:f7:ea:06:7a:fd:b3:00:b9:8c:6a:17: 7d:69:d7:c6:2f:83:c6:35:12:1c:f5:ff:d2:0a:cf: 1e:6d Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: 01:E4:14:ED:C7:E3:1A:24:17:DE:15:F2:45:D3:1C:FD:D4:E3:52:A3 X509v3 Authority Key Identifier: keyid:01:E4:14:ED:C7:E3:1A:24:17:DE:15:F2:45:D3:1C:FD:D4:E3:52:A3 X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption 86:b8:78:0b:af:02:1b:de:4c:d8:fb:56:cc:3c:48:e8:0a:2a: f3:26:7e:33:b5:b0:3b:b8:b7:c1:66:aa:f2:a6:7a:42:82:6a: 22:76:64:b3:5c:25:4f:c4:1e:24:0c:51:48:56:58:1d:ae:83: 66:bf:50:6f:81:97:2e:69:3d:fa:35:c3:b0:0f:7f:2f:3f:40: 99:be:1a:ca:5c:67:b6:7e:bd:b8:67:2d:62:42:8f:b3:fb:e2: c3:5f:80:fb:07:ab:69:10:db:5f:13:b3:61:bd:23:aa:f9:13: 0b:1d:e6:df:98:37:51:a5:f9:9f:e8:e1:f5:13:a7:96:7c:c2: 20:cf:b4:22:d3:d0:90:a2:65:a7:1f:b9:06:6a:5d:8e:00:ac: 55:6b:cd:3a:10:e5:f0:3e:d3:9f:59:a8:f6:a9:2a:cd:70:a8: 21:d7:7d:bc:41:a9:3a:66:13:3f:63:e3:be:fe:3d:be:7c:06: 33:3e:f5:7e:e6:68:7f:a7:60:5d:f8:0a:80:a7:6d:3a:36:b0: 97:71:7a:f5:2c:a1:35:d5:1a:f3:f3:a0:b3:34:58:88:39:36: fd:48:4b:2c:9b:20:b7:82:10:5d:77:ca:77:20:9c:39:94:bb: 3a:9f:05:0a:54:66:62:f2:3a:c0:3a:1a:83:6b:78:11:d6:ee: f1:b7:78:59
第二步:发证
1)用到证书的主机2生成证书请求:
#(umask 077; opensslgenrsa -out /etc/httpd/ssl/httpd.key 2048)
#openssl req -new -key/etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
2)把请求文件传输给CA主机
#scp _IP:/tmp/
3)CA 签证,并发还给主机2
#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/
查看证书中的信息:
#openssl x509 -in/PATN/FROM/CERT_FILE -noout -text |-subject |-serial
第三步:吊销证书
1)客户端获取要吊销的证书serial
#openssl x509 -in/PATN/FROM/CERT_FILE -noout -serial
[ ~]# openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial serial=01 [ ~]# openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -subject subject= /C=cn/ST=hubei/O=longjingcun/OU=OP\x08ps/CN=lanli\x08\x08in/emailAddress=lani\
2)CA
先根据客户提交的serial和subject信息,对比检验是否与index.txt 文件中的信息一致。
吊销证书:
#openssl ca -revoke/etc/pki/CA/newcerts/SERIAL.pem
3)生成吊销证书的编号(第一次吊销一个证书)
#echo 01 >/etc/pki/CA/crlnumber
4)更新证书吊销列表
#openssl ca -gencrl -out thiscrl.crl
查看吊销证书
#openssl crl -in/PATH/FROM/CRL_FILE.crl -noout -text
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 启动服务
至此,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主节点的配置就是在/etc/named.rfc1912.zones文件中定义解析区域时, 保证type master;即可。还有一点,主节点的区域解析文件中要有从节点的NS记录和A记录。
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请求处理过程;
大致分为两个请求过程:请求连接和请求数据
1) 域名解析,client与server三次握手,建立连接
2) 建立TCP连接后发起http请求
3) 服务器响应http请求,进行业务逻辑分析,server寻找client请求的页面并处理,将对应的数据响应给client浏览器得到html代码
4) 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
5) 浏览器对页面进行渲染呈现给用户
6) 短连接即可断开连接,也有另一种长连接方式,会保持连接一段时间。
5、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。
1)prefork模型
2)worker模型
3)event模型
prefork 模型:多进程模型,每个进程响应一个请求;一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;子进程数最大不会超过1024个。
worker 模型:多线程模型,每个线程响应一个请求;一个主进程:生成多个子进程,每个子进程负责生成多个线程,每个线程响应一个请求。m进程,n线程:最大的并发响应数是m*n。
event 模型:事件驱动模型,每个线程响应n个请求;一个主进程:生成m个子进程,每个进程直接响应n个请求;最大并发响应数是m*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);
建立httpd服务器:
1.准备相应版本的安装包:
#安装编译环境包组:Development Tools , Desktop Platform Development #查看包组:yumgrouplist #安装包组:yumgroupinstall Development Tools #yum groupinstall Desktop Platform Development #apr和apr-util应在1.4版本以上 #pcre安装包 #httpd2.4.x
2.解压apr并安装
tar xf apr-1.4.6.tar.gz # cd apr-1.4.6 # ./configure --prefix=/usr/local/apr # make && make install
3.解压apr-util并安装
tar xf apr-util-1.4.1.tar.gz # cd apr-util-1.4.1 # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr # make && make install
4.解压pcre并安装
tar xf pcre-8.20.tar.bz2 # cd pcre-8.20 # ./configure --prefix=/usr/local/pcre # make && make install
5.解压httpd24并安装
tar xf httpd-2.4.3.tar.gz # cd httpd-2.4.3 #./configure --prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-prce=/usr/local/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
a)编辑配置文件/etc/httpd/httpd.conf
# Virtual hosts Include /etc/httpd/conf.d/*.conf [ ~]# vim /etc/httpd/conf.d/stuX.com.conf #配置www1.stuX.com <VirtualHost 10.18.11.30:80> #虚拟主机监听地址 ServerName www1.stuX.com #虚拟主机域名 DocumentRoot /vhosts/www1.stuX.com #网站根目录 CustomLog /var/log/httpd/www1.access combined #配置访问日志路径 ErrorLog "/var/log/httpd/www1.err" #配置错误日志路径 <Directory "/vhosts/www1.stuX.com"> #允许所有访问请求/vhosts/www1.stuX.com <RequireAll> Require all granted </RequireAll> </Directory> </VirtualHost> <VirtualHost 10.18.11.30:80> #配置www2.stuX.com ServerName www2.stuX.com DocumentRoot /vhosts/www2.stuX.com CustomLog /var/log/httpd/www2.access combined ErrorLog "/var/log/httpd/www2.err" <Directory "/vhosts/www2.stuX.com"> <RequireAll> Require all granted </RequireAll> </Directory> </VirtualHost>
[ httpd]# echo www1.stuX.com > /vhosts/www1.stuX.com/index.html #生成主页文件
[ httpd]# echo www2.stuX.com > /vhosts/www2.stuX.com/index.html [ conf.d]# cp /etc/httpd/extra/httpd-info.conf ../conf.d/
[ conf.d]# vim /etc/httpd/conf.d/httpd-info.conf #修改其中server-status配置 <Location /server-status> SetHandler server-status Authtype Basic #设置认证类型 Authname "status" #定义受保护的领域名称,在浏览器访问的时候会显示 AuthUserFile /etc/httpd/conf.d/.htpasswd #要求只有认证文件中的合法用户才能访问 Require valid-user #valid-user表示所有合法用户,若只授权给单个用户,则改为指定的用户名 </Location> [ conf.d]# htpasswd -c -m /etc/httpd/conf.d/.htpasswd status #创建用户认证的数据库文件
7、为第6题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
(1)要求使用证书认证,证书中要求使用的国家(CN)、州(HA)、城市(ZZ)和组织(MageEdu);
(2)设置部门为Ops,主机名为www2.stuX.com,邮件为admin@stuX.com;
1、生成一个自签署证书
[ 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 []:
2、需要使用证书的主机上生成CA请求.
[ 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) []: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 []: Please enter the following ‘extra‘ attributes to be sent with your certificate request A challenge password []: An optional company name []: [ ssl]# scp httpd.csr :/tmp #将请求文件传输给CA所在主机
3、CA签署证书
[ CA]# openssl ca -in /tmp/httpd.csr -out certs/www2.stuX.com.crt -days 3650 Using configuration from /etc/pki/tls/openssl.cnf Check that the request matches the signature Signature ok Certificate Details: Serial Number: 2 (0x2) Validity Not Before: Oct 21 14:10:05 2016 GMT Not After : Oct 19 14:10:05 2026 GMT Subject: countryName = CN stateOrProvinceName = HA organizationName = MageEdu organizationalUnitName = Ops commonName = www2.stuX.com emailAddress = X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 16:5A:7B:84:A7:5F:7D:EA:CC:0D:1D:CB:5F:D3:A0:AD:29:20:98:63 X509v3 Authority Key Identifier: keyid:C7:83:51:96:AC:82:AF:DA:35:58:02:CD:B3:75:B2:37:B8:5D:59:38 Certificate is to be certified until Oct 19 14:10:05 2026 GMT (3650 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]# scp certs/www2.stuX.com.crt 10.18.11.30:/etc/httpd/ssl/ #将证书文件传到httpd服务中
4、添加httpd中ssl配置
[ conf.d]# vim /etc/httpd/conf.d/httpd_ssl.conf #编辑ssl配置文件 LoadModule ssl_module modules/mod_ssl.so #添加需要加载的模块 LoadModule socache_shmcb_module modules/mod_socache_shmcb.so ServerName www2.stuX.com DocumentRoot "/vhosts/www2.stuX.com" <Directory "/vhosts/www2.stuX.com"> <RequireAll> Require all granted </RequireAll> </Directory> SSLCertificateFile "/etc/httpd/ssl/www2.stuX.com.crt" #定义证书文件路径 SSLCertificateKeyFile /etc/httpd/ssl/httpd.key #定义证书文件私钥
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 -G develop gentoo [ /]# useradd -G develop centos [ /]# useradd ubuntu [ /]# echo gentoo | passwd --stdin gentoo [ /]# echo centos | passwd --stdin centos [ /]# echo ubuntu | passwd --stdin ubuntu [ /]# smbpasswd -a gentoo [ /]# smbpasswd -a centos [ /]# smbpasswd -a ubuntu [ /]# vim /etc/samba/smb.conf hosts allow = 172.16.0.0/16 [share] comment = share path = /share public = no writable = yes write list = +develop [ ~]# smbclient //172.16.1.123/share -U centos Enter centos‘s password: Domain=[MYGROUP] OS=[Windows 6.1] Server=[Samba 4.2.10] smb: \> ls . D 0 Sat Oct 22 17:20:02 2016 .. DR 0 Sat Oct 22 17:20:02 2016 77931220 blocks of size 1024. 71904540 blocks available smb: \> lcd /etc smb: \> put passwd putting file passwd as \passwd (946.6 kb/s) (average 946.6 kb/s) [ ~]# smbclient //172.16.1.123/share -U ubuntu Enter ubuntu‘s password: Domain=[MYGROUP] OS=[Windows 6.1] Server=[Samba 4.2.10] smb: \> lcd 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进行共享。
【linux基础】第九周作业