1、简述DNS服务,并搭建DNS服务器,实现主从,子域授权
DNS Domain Name Service, 应用层协议,是一个C/S架构模型,在红帽系上实现这一协议的应用是BIND : Berkeley Internet Name Domain。Client:发起应用请求的程序,Server:响应请求(提供服务)的程序。
Sockets:服务器进程向系统内核申请注册套接字并监听端口。53/udp, 53/tcp。udp用作dns解析查询之用,TCP是为主从DNS区域传送之用。
DNS查询类型:递归查询,迭代查询。
DNS名称解析方式:名称 --> IP:正向解析 IP --> 名称:反向解析。
DNS服务器类型:负责解析至少一个域和不负责解析
负责解析至少一个域:主名称服务器,辅助名称服务器。
不负责解析:缓存名称服务器。
程序包组成:
named:bind程序的运行的进程名
bind-libs:被bind和bind-utils包中的程序共同用到的库文件;
bind-utils:bind客户端程序集,例如dig, host, nslookup等;
bind:提供的dns server程序、以及几个常用的测试程序;
bind-chroot:选装,让named运行于jail模式下;
一次完整的查询请求经过的流程:
主机端Client --> 查询自身hosts文件 --> 查询自身DNS Local Cache --> 客户端配置的首选DNS Server (recursion递归) -->自己负责解析的域:直接查询数据库并返回答案,不是自己负责解析域:Server Cache --> iteration(迭代)
搭建DNS服务器,实现主从
在各主机上安装程序yum install bind
主配置文件:/etc/named.conf
其它文件;
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
解析库文件:/var/named/目录下;一般名字为:ZONE_NAME.zone
修改主DNS服务器上的DNS主配置文件/etc/named.conf
options {
listen-on port 53 { any; }; 监听端口
directory "/var/named"; 数据库文件的目录位置
allow-query { any; }; 允许哪所有主机请求查询
recursion yes; 递归
zone "." IN {
type hint;
file "named.ca"; 根区域解析库文件
};
zone "abc.com" IN {
type master;
file "abc.com";
allow-transfer{192.168.2.177;} ;
} ;
修改从DNS服务器上的DNS主配置文件/etc/named.conf
zone "abc.com" IN {
type slave;
file "slaves/abc.com";
masters{192.168.2.176;} ;
} ;
创建主DNS服务器的域名的解析库文件,从DNS服务器不需要定义。
文件为:/var/named/abc.com.zone
$TTL 3600
$ORIGIN magedu.com.
@ IN SOA ns1.abc.com. admin.abcc.com. (
201909999 ; serial
1H ; refresh
10M ; retry
3D ; expire
1D ; negative answer ttl
)
IN NS ns1
ns1 IN A 172.16.2.167
www IN A 172.16.2.167
web IN CNAME www
权限及属组修改: # chgrp named /var/named/abc.com.zone
# chmod o= /var/named/abc.com.zone
重启主DNS服务器和从DNS服务器上的named服务
子域授权
在主域名服务器上的正向解析文件定义子域:子域还需要有对应的子域的解析库文件,这样才能对子域进行解析。
ops.abc.com. IN NS ns1.abc.magedu.com.
ns1.ops.magedu.com. IN A 192.168.2.178
定义转发:
注意:被转发的服务器必须允许为当前服务做递归;
(1) 区域转发:仅转发对某特定区域的解析请求;
zone "ZONE_NAME" IN {
type forward;
forward {first|only};
forwarders { SERVER_IP; };
};
first:首先转发;转发器不响应时,自行去迭代查询;
only:只转发;
(2) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;
options {
... ...
forward {only|first};
forwarders { SERVER_IP; };
.. ...
};
2、简述HTTP服务,并实现基于用户的访问控制,虚拟主机,https
HTTP协议为应用层协议 hyper text transfer protocol, 是一个C/S架构模型,管理员以root身份发起内核请求创建套接字文件并监听特权80端口。然后按不同模式生成子进程相应用户请求(prefork、worker、event)传输明文名本格式,早期http/1.0前不支持其他格式。1.0版本开始引入MIME:Multipurpose Internet Mail Extesion丰富了网页呈现方式。客户端请求资源的方法有method:GET, POST, HEAD,PUT, DELETE,TRACE, OPTIONS等。
工作模式:http请求报文:http request http响应报文: http response
一次http事务:请求<-->响应
一次完整的http请求处理过程:
(1) 建立或处理连接:接收请求或拒绝请求;
(2) 接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程;
(3) 处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息;
(4) 访问资源:获取请求报文中请求的资源;
(5) 构建响应报文:
(6) 发送响应报文:
(7) 记录日志:
实现基于用户的访问控制
创建编辑/etc/httpd/conf.d/admin.conf配置文件,不影响主配置文件
Options None
AllowOverride None
AuthType basic
AuthName "Admin Area."
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
AuthGroupFile "/etc/httpd/conf.d/.htgroup"
Require group animals
创建用户和组实现验证
htpasswd 创建密码文件保存至 /etc/httpd/conf.d/.htpasswd
vim /etc/httpd/conf.d/.htgroup
j添加一下这行内容
animals:tom jerry
实现虚拟主机:
NameVirtualHost 192.168.2.176:80 apache2.2需要写这行配置并注释ServerName DocumentRoot。
ServerName www.a.com
DocumentRoot "/www/a.com/htdocs"
ServerName www.b.net
DocumentRoot "/www/b.net/htdocs"
实现https:
SSL会话的简化过程
(1) 客户端发送可供选择的加密方式,并向服务器请求证书;
(2) 服务器端发送证书以及选定的加密方式给客户端;
(3) 客户端取得证书并进行证书验正:
如果信任给其发证书的CA:
(a) 验正证书来源的合法性;用CA的公钥解密证书上数字签名;
(b) 验正证书的内容的合法性:完整性验正
(c) 检查证书的有效期限;
(d) 检查证书是否被吊销;
(e) 证书中拥有者的名字,与访问的目标主机要一致;
(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;
(5) 服务用此密钥加密用户请求的资源,响应给客户端;
注意:SSL会话是基于IP地址创建;所以单IP的主机上,仅可以使用一个https虚拟主机;
配置httpd支持https:
(1) 为服务器申请数字证书;
测试:通过私建CA发证书并自签证书
(a) 创建私有CA
# cd /etc/pki/CA
# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
为CA提供所需的目录及文件;
~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
~]# touch /etc/pki/CA/{serial,index.txt}
~]# echo 01 > /etc/pki/CA/serial
(b) 在服务器创建证书签署请求
(1) 用到证书的主机生成私钥;
~]# mkdir /etc/httpd/ssl
~]# cd /etc/httpd/ssl
~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
(2) 生成证书签署请求
~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
(3) 将请求通过可靠方式发送给CA主机;
(c) CA签证
在CA主机上签署证书;
~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
然后拷贝至httpd主机
查看证书中的信息:
~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
(2) 配置httpd支持使用ssl,及使用的证书;
# yum -y install mod_ssl
配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot "/var/www/html"
ServerName www.abc.com:443
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
重启服务
最后在游览器导入CA证书 cacert.pem