目录
3.使用httpd服务演示安全上下文值的设定(selinux)
4.使用web服务端口的改变来演示端口的设定(selinux)
1.DNS的解析流程
浏览器缓存检查
浏览器会首先搜索浏览器自身的 DNS 缓存,缓存时间比较短,大概只有1分钟,且只能容纳 1000 条缓存,看自身的缓存中是否有对应的条目,而且没有过期,如果有 且没有过期则解析到此结束。
操作系统缓存检查 + 本机hosts 解析
如果浏览器的缓存里没有找到对应的条目,操作系统也会有一个域名解析的过程,那么浏览器先搜索操作系统的 DNS 缓存中是否有这个域名对应的解析结果,如果找到且没有过期则停止搜索,解析到此结束。
在 Linux 中可以通过 /etc/hosts 文件来设置,可以将任何域名解析到任何能够访问的IP 地址。如果在这里指定了一个域名对应的 IP 地址,那么浏览器会首先使用这个 IP地址。当解析到这个配置文件中的某个域名时,操作系统会在缓存中缓存这个解析结果,缓存的时间同样是受这个域名的失效时间和缓存的空间大小控制的。
第一步
客户端通过浏览器访问域名为 www.baidu.com (http://www.baidu.com) 的网站,发起查询该域名的 IP 地址的 DNS 请求。该请求发送到了本地 DNS 服务器上。本地 DNS 服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地 DNS 服务器还要向 DNS 根服务器进行查询。
第二步
本地 DNS 服务器向根服务器发送 DNS 请求,请求域名为 www.baidu.com (http://www.baidu.com) 的 IP 地址。
第三步
根服务器经过查询,没有记录该域名及 IP 地址的对应关系。但是会告诉本地 DNS 服务器,可以到顶级域名服务器上继续查询,并给出域名服务器的地址(.com 服务器)。
第四步
本地 DNS 服务器向 .com 服务器发送 DNS 请求,请求域名 www.baidu.com (http://www.baidu.com) 的 IP 地址。
第五步
com 服务器收到请求后,不会直接返回域名和 IP 地址的对应关系,而是告诉本地DNS 服务器,该域名可以在 baidu.com 域名服务器上进行解析获取 IP 地址,并告诉 baidu.com 域名服务器的地址。
第六步
本地 DNS 服务器向 baidu.com 域名服务器发送 DNS 请求,请求域名 www.baidu.com (http://www.baidu.com) 的 IP 地址。
第七步
baidu.com 服务器收到请求后,在自己的缓存表中发现了该域名和 IP 地址的对应关系,并将 IP 地址返回给本地 DNS 服务器。
第八步
本地 DNS 服务器将获取到与域名对应的 IP 地址返回给客户端,并且将域名和 IP 地址的对应关系保存在缓存中,以备下次别的用户查询时使用。
- 图源自网络
2.DNS主从配置
需要两台机器: 一台为主dns服务器,一台为从DNS服务器
主服务器:
[root@server named]# vim /etc/named.conf
从服务器:
[root@server etc]# yum install bind -y #安装DNS服务软件
[root@server slaves]# vim /etc/named.conf
[root@server slaves]# named-checkconf #检查配置文件
[root@server slaves]# systemctl restart named
[root@server slaves]# cd /var/named/slaves/
[root@server slaves]# ll #两个文件都是从主服务器同步过来的
total 8
-rw-r--r--. 1 named named 347 Jul 30 21:00 30.168.192.zone
-rw-r--r--. 1 named named 502 Jul 30 21:00 openlab.zone[root@server slaves]# nslookup dhcp.openlab.com. 192.168.30.133
Server: 192.168.30.133
Address: 192.168.30.133#53Name: dhcp.openlab.com
Address: 192.168.30.100
如果主服务器上的openlab.zone 中的 serial的值大于从服务器的serial的值,那么从服务器会从主服务器上自动同步文件,一般按照我们设定的一天同步($TTL 1D),我们也可以通过强制重启服务来快速达到同步的目的。
SELINUX:
SELinux是Security-Enhanced Linux的缩写,意思是安全强化的linux。
SELinux 主要由美国国家安全局(NSA)开发,当初开发的目的是为了避免资源的误用。
系统资源都是通过程序进行访问的,如果将/var/www/html/权限设置为777,代表所有程序均可对该目录访问,如果已经启动www服务器软件,那么该软件触发的进程将可以写入该目录,而该进程是对整个internet提供服务的。NSA为了控制这方面的权限与进程的问题,就使用linux来作为研究目标,最后将研究的成果整合到linux内核里面去,也就是SELinux。
SELinux是对程序、文件等权限设置依据的一个内核模块。由于启动网络服务的也是程序,因此刚好也是能够控制网络服务能否访问系统资源的一道关卡。
3.使用httpd服务演示安全上下文值的设定(selinux)
[root@server 100]# cd /etc/httpd/conf.d
[root@server conf.d]# vim myhosts.conf
[root@server conf.d]# systemctl restart httpd
当我们关闭防火墙和设置了SELINUX的状态后,我们可以正常访问。但是当我们防火墙正常工作的时候包括SELINUX的状态为开机默认时,我们都无法访问到文件的内容。原因在于,SELINUX
处于targeted的策略,也就是httpd进程的domain和/www/ip/100/index.html的第三个字段不能匹配,就是type字段不能匹配。
[root@server sbin]# ls -Z /usr/sbin/httpd
system_u:object_r:httpd_exec_t:s0 /usr/sbin/httpd
[root@server sbin]# ls -Z /www/ip/100/index.html
unconfined_u:object_r:default_t:s0 /www/ip/100/index.html
[root@server sbin]# chcon -t httpd_sys_content_t /www/ -R #将/www/下的所有文件和目录的type改成httpd_sys-content_t,然后就可以和/usr/sbin/httpd的domain相匹配
这样就算我们的防火墙正常工作,SELINUX的状态为Enforcing的情况下,我们仍然可以通过httpd访问到我们的文件内容。
4.使用web服务端口的改变来演示端口的设定(selinux)
#打开防火墙和设置selinux的状态
[root@localhost ~]# vim /etc/httpd/conf.d/host.conf
#添加服务/www/8888的权限
#指定需要执行文件的路径
[root@localhost ~]# mkdir /www/8888
[root@localhost ~]# echo this is 8888 > /www/8888/index.html
[root@localhost ~]# systemctl restart httpd#添加8888为服务端口
[root@localhost ~]# semanage port -a -t http_port_t -p tcp 8888
[root@localhost ~]# systemctl restart httpd
这样就可以访问成功了!!!!