马哥2016全新Linux+Python高端运维班第四期-第六次作业

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

以Bob和Alice安全通讯为例:

Bob<--------->Alice

1. Bob要和Alice安全通信首先要取得对方的公钥,即对方的证书,并验证证书的合法性。验证过程和内容:

1)、用CA的公钥(双方已知)解密对方证书中CA的签名;能解密说明证书来原可靠;

2)、用证书中标记的“签名算法”来计算证书的相关信息,并将散列计算的结果与证书“发行者签名”解密的结果(证书特征码)进行比较,如果一致说明证书完整性可靠;

3)、检查证书的有效期限是否在合法范围内,防止证书过期;

4)、验证证书的“主体名称”和预通信的人是否对应;

5)、检查证书是否被吊销;

以上验证成功则说明对方证书可靠,并信任该证书。

2. 取得对方证书(即公钥)后进行如下操作:

加密:

1)、Bob对明文数据进行散列计算,提取出数据指纹(特征码,也叫信息摘要);

2)、Bob使用自己的私钥对该数据指纹进行加密,生成数字签名,并将该数字签名附加在明文数据之后;

3)、Bob使用一个一次性的对称加密算法密钥对明文和数字签名进行加密,生成密文;

4)、Bob再使用Alice的公钥对对称加密算法的密钥进行加密,生成数字信封;

5)、Bob将密文和数字信封打包发送给Alice;

解密:

1)、Alice收到数据(密文+数字信封)后,使用自己的私钥解密数字信封,得到对称加密算法的密钥;

2)、使用对称加密密钥解密密文,得到明文数据和数字签名。保证了数据的私密性;

3)、使用Bob的公钥解密数字签名,得到明文的数据指纹(特征码)。如果能解出,说明数据为Bob发送,保证了数据的不可否认性;

4)、Alice使用同样的散列算法对明文计算得出数据指纹(特征码),并与Bob计算的数据指纹进行比对,如果一致,说明数据没有被篡改。保证的数据的完整性;

 

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  [email protected]:/tmp/httpd.csr

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

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

scp /tmp/httpd.csr [email protected]:/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

下边配置区域解析文件:

# vim /etc/named.rfc1912.zones

zone "magedu.com" IN {

type master;

file "magedu.com.zone";

allow-update { none;};表示不允许任何主机更新解析文件,安装考虑

};

保存退出

]# vim /var/named/magedu.com.zone

 

下边创建反向解析文件:

]# vim /etc/named.rfc1912.zones

zone "168.192.in-addr.arpa" IN {

type master;

file "192.168.zone";

};

]# vim 192.168.zone

下面进行子域授权;

首先在父域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记录。

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

]# vim /etc/named.rfc1912.zones

zone "magedu.com" IN {区域名称必须和主节点一致

type slave;类型为从节点

masters { 192.168.1.111; };   给定主节点的IP地址

file "slaves/magedu.com.zone";区域解析文件的保存位置在slaves文件夹下

};

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

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

 

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

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

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

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

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

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

5创建响应报文;

6发送响应报文

7记录日志

 

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

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

 

 

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

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

(2)设置部门为Ops,主机名为www2.stuX.com,邮件为[email protected]

在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

3.将请求文件发送给CA服务器

]# scp httpd.csr [email protected]:/tmp

4.CA服务器签发证书

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

把证书传给htppd服务器即可。#scp httpd.crt [email protected]:/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,centosubuntu,其中gentoocentosdevelop为附加组,ubuntu不属于develop组;密码均为用户名;

3)添加samba用户gentoo,centosubuntu,密码均为“mageedu”;

4)samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问;

5)samba共享服务仅允许来自于172.16.0.0/16网络的主机访问;

[[email protected] moban ~]#yum install samba -y        #新增用户和组

[[email protected] moban ~]#groupadd develop

[[email protected] moban ~]# useradd -G develop gentoo

[[email protected] moban ~]# useradd -G develop centos

[[email protected] moban ~]# useradd ubuntu

[root@ moban ~]# echo "gentoo"|  passwd --stdin gentoo   #更改用户 gentoo 的密码

[[email protected] moban ~]# echo "centos"|  passwd --stdin centos

[[email protected] moban ~]# echo "ubuntu"|  passwd --stdin ubuntu

#增加samba用户,新增的samba用户必须是系统中已经存在的

[[email protected] moban ~]# smbpasswd -a gentoo

New SMB password:

Retype new SMB password:

Added user gentoo.

[[email protected] ~]# smbpasswd -a centos

New SMB password:

Retype new SMB password:

Added user centos.

[[email protected] ~]# smbpasswd -a ubuntu

New SMB password:

Retype new SMB password:

Added user ubuntu.

#编辑配置文件

[[email protected] moban ~]# 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

#启动服务

[[email protected] moban ~]# service nmb start

[[email protected] moban ~]# 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 [email protected] identified by ‘centos‘;

mysql> grant select on vsftpd.* to [email protected] 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 来认证

 

 

 

时间: 2024-08-06 07:57:11

马哥2016全新Linux+Python高端运维班第四期-第六次作业的相关文章

马哥2016全新Linux+Python高端运维班第四期-第五次作业

1.写一个脚本,完成如下功能 (1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在: (2) 如果存在,则显示此设备上的所有分区信息: [[email protected] ~]# vi week5-01.sh[[email protected]moban ~]# cat week5-01.sh#!/bin/bash#author:Wangyafei#read -p "Please enter a disk device path:" path while [ -z"$

马哥2016全新Linux+Python高端运维班第四期-第一次作业

一.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别 主流发行版有Slackware.Debian和Redhat,它们都属于GNU计划,特点如下: Slackware:  目录结构严谨:版本追求稳定而非追新:软件包管理器采用tgz/txz格式文件加安装脚本编译安装:SUSE Linux原是以Slackware Linux为基础,并提供完整德文使用界面的产品.SUSE集成管理界面不仅仅是软件,SUSE可以使管理员不需要对组件进行深入研究而进行配置,SUSE可以配置管理需要或者不需要的

马哥2016全新Linux+Python高端运维班第四期-第四次作业

1.创建一个10G分区,并格式为ext4文件系统: (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl: [[email protected] ~]# fdisk /dev/sdc Command (m for help): n Command action e   extended p   primary partition (1-4) e Partition number (1-4): 1 First cylinder (1-2610

马哥2016全新Linux+Python高端运维班第三周作业作答

                    马哥2016全新Linux+Python高端运维班第三周作业                                           1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.     [[email protected] ~]# who | awk '{print $1 $NF}'| uniq -d     [[email protected] ~]# who     yicx     :0  

马哥2016全新Linux+Python高端运维班第八周作业

1.请描述网桥.集线器.二层交换机.三层交换机.路由器的功能.使用场景与区别. 答: 网桥:双端口的二层设备,可以隔离冲突域,一般用于划分LAN,或者链接LAN. 集线器:物理层设备,多端口,无法隔离冲突域,用于连接主机. 二层交换机:数据链路层设备,多端口,与网桥相比,交换机可学习MAC地址,根据MAC地址转发数据,可隔离冲突域,用于在路由设备与主机之间架设,接入层与汇聚层皆可使用. 三层交换机:相当于是带路由功能的二层交换机,工作在网络层,有更高的带宽,可做核心层使用,用于大中型网络的路由交

马哥2016全新Linux+Python高端运维班-Linux服务 DNS,httpd,加密通讯,vsftp,NFS,samba服务练习

本周作业内容: 1.详细描述一次加密通讯的过程,结合图示最佳. 一次加密通讯的过程: 首先Bob用单向加密的方法提取数据的特征码,用自己的私钥加密这段特征码,并附加到数据的后面. Bob用对称加密算法把数据及特征码整个进行加密. Bob用接收方的公钥加密对称密钥并附加到数据后面. Alice用私钥解密对称密钥. Alice用对称密钥解密出数据及加密的特征码. Alice用发送方的公钥解密特征码,并用相同的算法算出数据的特征码,比较两个特征码是否一致,若一致即可获得Bob的数据. 如图所示: 单向

马哥2016全新Linux+Python高端运维班第三周作业

本周作业内容: 1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可. # who | cut -d' ' -f1 | sort -u 2.取出最后登录到当前系统的用户的相关信息. # id $(who | sort -t' ' -k3,4 | tail -1 | cut -d' ' -f1) 3.取出当前系统上被用户当作其默认shell的最多的那个shell. # cut -d: -f7 /etc/passwd | sort | uniq -c | sort

马哥2016全新Linux+Python高端运维班十一次作业

一.源码编译安装LNMP架构环境: 安装编译工具及库文件 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl 

马哥2016全新Linux+Python高端运维班第九周作业

1.详细描述一次加密通讯的过程,结合图示最佳. SSL协议基础: SSL协议位于TCP/IP协议与各种应用层协议之间,本身又分为两层: 1)SSL记录协议:建立在可靠传输层协议(TCP)之上,为上层协议提供数据封装.压缩.加密等基本功能. 2)SSL握手协议:在SSL记录协议之上,用于实际数据传输前,通讯双方进行身份认证.协商加密算法.交换加密密钥等. SSL协议通信过程: 1)浏览器发送一个连接请求给服务器:服务器将自己的证书(包含服务器公钥S_PuKey).对称加密算法种类及其他相关信息返回