马哥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周的主要内容,如果未能解决你的问题,请参考以下文章