第十周

180 阅读8分钟

1、简述DNS服务,并搭建DNS服务器,实现主从,子域授权。

DNS:domain name system,域名系统。一般指的是Internet 上的一项服务,即域名解析服务,具体来说就是提供网站域名与对应IP 地址相互转换的一项服务。它分为两种,正向解析:将给定的网站域名转化为对应IP 地址;反向解析:将IP地址转化为对应的网站域名。

DNS的查询方式

DNS的查询方式有两种,分别为递归查询和迭代查询。通常递归查询这种方式用于PC机与本地DNS服务器之间的查询,而迭代查询则多用于DNS服务器之间的查询。

DNS工作原理:  

第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。  

第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。  

第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域) 的主域名服务器的地址。  

第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。  

第五步:重复第四步,直到找到正确的纪录。  

第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

主域搭建:

[root@localhost httpd]# yum install bind

[root@localhost httpd]# vim /etc/named.conf

options {

listen-on port 53 { 127.0.0.1; 192.168.0.104; };

allow-query { any; };

}

[root@localhost httpd]# vim /etc/named.rfc1912.zones

zone "dnstest.com" IN {

type master;

file "dnstest.com.zone";

};

[root@localhost httpd]# vim /var/named/dnstest.com.zone

$TTL 3600

$ORIGIN dnstest.com.

@ IN SOA dns1.dnstest.com. admin.dnstest.com. (

2019090101

1H

10M

3D

1D )

IN NS dns1

IN NS dns2

dns1 IN A 192.168.0.104

dns2 IN A 192.168.0.114

www IN A 192.168.0.104

web IN CNAME www

[root@localhost httpd]# named-checkconf /etc/named.conf

[root@localhost httpd]# chown :named /var/named/dnstest.com.zone

[root@localhost httpd]# chmod o= /var/named/dnstest.com.zone

[root@localhost httpd]# vim /etc/hosts

192.168.0.104 dns1.dnstest.com

[root@localhost httpd]# vim /etc/resolv.conf

nameserver 192.168.0.104

[root@localhost httpd]# systemctl restart named

[root@localhost httpd]# dig -t A www.dnstest.com

从域搭建:

[root@www ~]# yum install bind

[root@www ~]# vim /etc/named.conf

options {

listen-on port 53 { 127.0.0.1; 192.168.0.114; };

allow-query { any; };

}

[root@www ~]# vim /etc/named.rfc1912.zones

zone "dnstest.com" IN {

type slave;

file "slaves/dnstest.com.zone";

masters { 192.168.0.104; };

};

[root@localhost httpd]# named-checkconf /etc/named.conf

[root@localhost httpd]# vim /etc/resolv.conf

nameserver 192.168.0.114

[root@www ~]# systemctl restart named

[root@www ~]# dig -t A www.dnstest.com

子域搭建:

[root@www ~]# yum install bind

[root@www ~]# vim /etc/named.conf

options {

listen-on port 53 { 127.0.0.1; 192.168.0.108; };

forward only;

forwarders { 192.168.0.104; };

allow-query { any; };

[root@www ~]# vim /etc/named.rfc1912.zones

zone "sub.dnstest.com" IN {

type master;

file "sub.dnstest.com.zone";

};

[root@www ~ ]# vim /var/named/sub.dnstest.com.zone

TL 3600

$ORIGIN sub.dnstest.com.

@ IN SOA dns1.sub.dnstest.com. admin.sub.dnstest.com. (

2019090101

1H

10M

3D

1D )

IN NS dns1

dns1 IN A 192.168.0.108

www IN A 192.168.0.108

web IN CNAME www

[root@www ~ ]# chmod o= /var/named/sub.dnstest.com.zone

[root@www ~ ]# chgrp named /var/named/sub.dnstest.com.zone

[root@localhost httpd]# vim /var/named/dnstest.com.zone ## 在主域上修改区域配置文件

$TTL 3600

$ORIGIN dnstest.com.

@ IN SOA dns1.dnstest.com. admin.dnstest.com. (

2019090101

1H

10M

3D

1D )

IN NS dns1

IN NS dns2

dns1 IN A 192.168.0.104

dns2 IN A 192.168.0.114

www IN A 192.168.0.104

web IN CNAME www

sub IN NS dns1.sub.dnstest.com.

dns1.sub IN A 192.168.0.108

[root@www ~ ]# systemctl restart named

[root@www ~ ]# dig -t A www.sub.dnstest.com

[root@www ~ ]# dig -t A www.sub.dnstest.com

[root@www ~ ]# dig -t A www..dnstest.com


2、简述HTTP服务,并实现基于用户的访问控制,虚拟主机,https。

HTTP(超文本传输协议):是一种用于分布式、协作式和超媒体信息系统的应用层协议,是万维网的数据通信的基础。HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

原理:

HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。

执行流程:

客户端(浏览器)通过url 发送请求;tcp/ip 把ip 加到数据中传输到以太网中;经过tcp3次握手后建立tcp连接;服务器响应客户端。

HTTP 特点:

1.支持客户/服务器模式。

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

虚拟主机实现:

[root@localhost ~]# yum -y install httpd

[root@localhost ~]# mkdir /data/web/http/apache-test

[root@localhost ~]# vim /data/web/http/apache-test/index.html ##编辑主页内容

<h1>this is test</h1>

vm-master

httpd-2.4.6

[root@localhost ~]#vim /etc/httpd/conf.d/apache-test.conf ##编辑虚拟主机配置文件

<VirtualHost 192.168.0.104:80>

DocumentRoot "/data/web/http/apache-test"

ServerName www.master-test.co

<Directory "/data/web/http/apache-test">

Options None

AllowOverride None

Require all granted

</Directory>

CustomLog "logs/apache-test_access_log" combined

CustomLog "logs/apache-test_error_log" combined

</VirtualHost>

[root@localhost ~]# httpd -t

[root@localhost ~]# vim /etc/hosts

192.168.0.104 www.master-test.co

[root@localhost ~]# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak ##将欢迎页备份,使自建的主页显示生效

[root@localhost ~]# /usr/sbin/httpd -k stop

[root@localhost ~]# /usr/sbin/httpd -k start


用户的访问控制实现:

[root@localhost httpd]# htpasswd -c -b -m /etc/httpd/conf.d/.htpasswd meigui meigui

##第一次需要用 -c 生成 .htpasswd 文件

Adding password for user meigui

[root@localhost httpd]# htpasswd -b -m /etc/httpd/conf.d/.htpasswd moli moli

Adding password for user moli

[root@localhost httpd]# htpasswd -b -m /etc/httpd/conf.d/.htpasswd yujinxiang yujinxiang

Adding password for user yujinxiang

[root@localhost httpd]# mkdir /data/web/http/apache-test/admin

[root@localhost httpd]# vim /data/web/http/apache-test/admin/index.html ##编辑 admin 的主页

this is admin user area

1 2 3

[root@localhost httpd]# vim /etc/httpd/conf.d/admin.conf ##编辑 admin 的配置文件

<Directory " /data/web/http/apache-test/admin">

AllowOverride None

Options None

AuthType basic

AuthName "Admin Area, please enter username and password."

AuthUserFile "/etc/httpd/conf.d/.htpasswd"

Require user meigui moli

</Directory>

[root@localhost httpd]# httpd -t ##检查语法错误

[root@localhost ~]# /usr/sbin/httpd -k stop

[root@localhost ~]# /usr/sbin/httpd -k start

在浏览器输入: http://192.168.0.104/admin


https实现:

[root@localhost ouyang]# httpd -M | grep ssl ##确保openssl已安装,因为要使用openssl生成自签名证书

配置CA服务器:

初始化CA服务,创建所需要的文件:

[root@localhost ~]# cd /etc/pki/CA/

[root@localhost CA]# touch index.txt serial ## 创建索引文件

[root@localhost CA]# echo 01 > serial ## 创建序列号文件

CA自签证书:

[root@localhost CA]# ( umask 077;openssl genrsa -out private/cakey.pem 2048) ##生成私钥

Generating RSA private key, 2048 bit long modulus

..........................+++

.........................+++

e is 65537 (0x10001)

[root@localhost CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365 ## 使用私钥生成签名证书

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) []:wuhan

Locality Name (eg, city) [Default City]:wuhan

Organization Name (eg, company) [Default Company Ltd]:royal

Organizational Unit Name (eg, section) []:it

Common Name (eg, your name or your server's hostname) []:ca.slave-test.co

Email Address []:

申请证书(实现https服务器):

创建一个存放证书的目录:

[root@localhost ouyang]# cd /etc/httpd

[root@localhost httpd]# mkdir ssl

[root@localhost httpd]# ( umask 077;openssl genrsa -out httpd_key.pem 1024) ##生成秘钥

Generating RSA private key, 1024 bit long modulus

................................++++++

..............++++++

e is 65537 (0x10001)

[root@localhost httpd]# openssl req -new -key httpd_key.pem -out httpd_csr.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) []:wuhan

Locality Name (eg, city) [Default City]:wuhan

Organization Name (eg, company) [Default Company Ltd]:royal

Organizational Unit Name (eg, section) []:it

Common Name (eg, your name or your server's hostname) []:www.master-test.co

Email Address []:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

[root@localhost httpd]# scp httpd_csr.pem root@192.168.0.108:/tmp/ ##把生成的文件发送到CA服务器

root@192.168.0.108's password:

httpd_csr.pem 100% 651 309.2KB/s 00:00

CA服务器:

[root@localhost CA]# openssl ca -in /tmp/httpd_csr.pem -out certs/httpd_crt.pem ##签署证书

Using configuration from /etc/pki/tls/openssl.cnf

Check that the request matches the signature

Signature ok

Certificate Details:

Serial Number: 1 (0x1)

Validity

Not Before: Sep 1 03:40:49 2019 GMT

Not After : Aug 31 03:40:49 2020 GMT

Subject:

countryName = cn

stateOrProvinceName = wuhan

organizationName = royal

organizationalUnitName = it

commonName = www.master-test.co

X509v3 extensions:

X509v3 Basic Constraints:

CA:FALSE

Netscape Comment:

OpenSSL Generated Certificate

X509v3 Subject Key Identifier:

B0:A5:3A:AD:67:8E:87:23:73:F1:6D:08:A1:28:98:A2:09:DF:74:E5

X509v3 Authority Key Identifier:

keyid:B6:6D:EA:3C:91:07:10:E5:DA:F2:08:CC:04:AA:15:98:44:57:A6:91

Certificate is to be certified until Aug 31 03:40:49 2020 GMT (365 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

[root@localhost CA]# scp certs/httpd_crt.pem root@192.168.0.104:/etc/httpd/ssl ##将生成的crt传回https服务器

root@192.168.0.104's password:

httpd_crt.pem 100% 3700 2.0MB/s 00:00

https服务器:

[root@localhost httpd]# cp ./httpd_key.pem ./ssl/httpd_key.pem

[root@localhost CA]# vim /etc/httpd/conf.d/ssl.conf ##编辑修改ssl.conf

<VirtualHost _default_:443>

SSLCertificateFile /etc/httpd/ssl/httpd_crt.pem ##证书位置

SSLCertificateKeyFile /etc/httpd/ssl/httpd_key.pem ##私钥位置

DocumentRoot "/data/web/ilinux"

ServerName www.master-test.co:443

<Directory "/data/web/ilinux">

Options None

AllowOverride None

Require all granted

</Directory>

[root@localhost ~]# httpd -t ##检查配置文件语法错误

[root@localhost ~]# /usr/sbin/httpd -k stop

[root@localhost ~]# /usr/sbin/httpd -k start

在浏览器导入CA证书