全面分析RHCE7(红帽认证工程师)考试题目之 ----WEB 服务器 篇

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

HTTP服务基础

独立Web服务

  Web通信基本概念

基于B/S

  服务端提供网页

  浏览器下载并显示网页

Hyper Text Markup Language (HTML)超文本标记语言

Hyper Text Transfer Protocol(http)超文本传输协议 

  RHEL7中的Web服务

软件包:httpd

系统服务:httpd

提供的默认配置

Listen:监听地址:端口(80)

ServerName:本站点注册的DNS名称

DcocumentRoot:网页根目录(/var/www/html)

DirectoryIndex:起始页/首页文件名(index.html)

  一.搭建Web服务器

1.安装httpd软件

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

2.启动httpd服务,并设置为开机自启

 [root@server0 ~]# systemctl restart httpd

 [root@server0 ~]# systemctl enable httpd.service 

3.书写网页文件

 [root@server0 ~]# echo My First Web > /var/www/html/index.html

4.安装elinks软件,并使用elinks浏览Web网站

 [root@desktop0 ~]# yum -y install elinks.x86_64 

 [root@server0 ~]# elinks -dump 172.25.0.11

    My First Web


二.配置DNS解析

1.修改主配置文件内容/etc/httpd/conf/httpd.conf 

 [root@server0 ~]# vim /etc/httpd/conf/httpd.conf 

/ServerName

 ...

 ServerName server0.example.com:80  #95行

 ...


2.重启服务,并验证

 [root@server0 ~]# systemctl restart httpd

 [root@desktop0 ~]# elinks -dump server0.example.com:80

    My First Web


三.网页根目录(/var/www/html)

查看主配置文件内容/etc/httpd/conf/httpd.conf 

 [root@server0 ~]# vim /etc/httpd/conf/httpd.conf 

/Docu

    ...

  DocumentRoot "/var/www/html" #119行

  ...

例如:

客户端访问路径:#elinks -dump server0.example.com/abc

服务端查找路径:/var/www/html/abc/index.html





虚拟Web主机

由同一台服务器提供多个不同的Web站点


区分方式

基于域名的虚拟主机

基于端口的虚拟主机

基于IP地址的虚拟主机(没有人用 )


配置一个虚拟站点

配置文件路径

/etc/httpd/conf/httpd.conf #主配置文件

/etc/httpd/conf.d/*.conf #从配置文件

[root@server0 ~]# vim /etc/httpd/conf/httpd.conf 

 ...

 # Load config files in the "/etc/httpd/conf.d" directory, if any.

 IncludeOptional conf.d/*.conf

主配置文件最后调用所有从配置文件

目的:

 为了配置方便

 为了精简主配额文件


为每个虚拟站点添加配置

 <VirtualHost IP地址:端口>

  ServerName 此站点的DNS名称

DocumentRoot 此站点的网页根目录

 </VirtualHost>


1.在帮助文档中找到虚拟站点配置文件模版

 [root@server0 ~]# vi /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf 

2.建立配置文件 test01.conf

 [root@server0 ~]# vi /etc/httpd/conf.d/test01.conf

  <VirtualHost *:80>

     DocumentRoot /var/www/test

     ServerName www0.example.com

  </VirtualHost>


  <VirtualHost *:80>

     DocumentRoot /var/www/nsd

     ServerName webapp0.example.com

  </VirtualHost>

2.建立目录及相应的网页内容

 [root@server0 ~]# mkdir /var/www/test

 [root@server0 ~]# mkdir /var/www/nsd

 [root@server0 ~]# echo 'wo shi test' > /var/www/test/index.html

 [root@server0 ~]# echo 'wo shi nsd' > /var/www/nsd/index.html

3.重启httpd 服务

 [root@server0 ~]# systemctl restart httpd.service 

4.用elinks验证

 [root@desktop0 ~]# elinks -dump www0.example.com

    wo shi test

 [root@desktop0 ~]# elinks -dump webapp0.example.com

    wo shi nsd

启用虚拟Web主机,所有的站点都必须用虚拟Web主机来实现


保证 server0.example.com可以访问


1.修改从配置文件

[root@server0 ~]# vim /etc/httpd/conf.d/test01.conf

 <VirtualHost   *:80>

    DocumentRoot   /var/www/test

    ServerName   www0.example.com

 </VirtualHost>


 <VirtualHost   *:80>

    DocumentRoot   /var/www/nsd

    ServerName   webapp0.example.com

 </VirtualHost>


 <VirtualHost   *:80>

    DocumentRoot   /var/www/abc

    ServerName   server0.example.com

 </VirtualHost>


2. 重起httpd服务


httpd服务访问控制

客户集地址限制

    使用<Directory>配置区段

每个文件夹自动继承其父目录的ACL访问权限

除非针对子目录有明确设置

  <Directory 目录的绝对路径>

..  ..

Require all denied|granted

Require ip IP或网段地址

  </Directory>


例:

Require all denied #禁止任何客户机访问

Require all granted  #允许任何客户机访问

Require ip 172.0.0.1 ::1 172.25.0.11 #仅允许部分客户机访问


    实现客户集地址限制

1.创建目录与网页文件

 [root@server0 ~]# mkdir /var/www/abc/private

 [root@server0 ~]# echo 'xiao ke duo zhao 妈妈'> /var/www/abc/private/index.html

2.建立新的配置文件

 [root@server0 ~]# vim /etc/httpd/conf.d/test02.conf

  <Directory "/var/www/abc/private">

      Require ip 172.25.0.11 172.0.0.1  #仅允许本机访问

  </Directory>


3.重启httpd服务

 [root@server0 ~]# systemctl restart httpd

 [root@server0 ~]# elinks -dump server0.example.com/private

    xiao ke duo zhao 妈妈


 [root@desktop0 ~]# elinks -dump server0.example.com/private

                            Forbidden

   You don't have permission to access /private on this server.


思路:客户端是否能够访问服务端资源

1.防火墙是否限制

2.服务本身的访问控制

3.SELinux 是否限制




SELinux策略保护

1.安全上下文(标签)

  SELinux 会为文件打上标签

[root@server0 ~]# semanage fcontext -l  #查看SELinux给所有文件打的标签

例:

[root@server0 ~]# ls -Zd /var/www/

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/


使用自定义Web根目录

题目: 调整Web站点http://server0.example.com的网页 使用/webroot,作为此站点新的网页目录

1.修改配置文件

[root@server0 ~]# vim /etc/httpd/conf.d/test01.conf 

 ...

 <VirtualHost *:80>

    DocumentRoot /webroot

    ServerName server0.example.com

 </VirtualHost>

 ...

2.创建目录与网页文件

[root@server0 ~]# mkdir /webroot

[root@server0 ~]# echo 'wo shi webroot'> /webroot/index.html

3.修改访问控制配置文件

[root@server0 ~]# vim /etc/httpd/conf.d/test02.conf 

 ...

 <Directory "/webroot">

    Require all granted

 </Directory>

 ...

4.修改SELinux标签值

[root@server0 ~]# chcon -R --reference=/var/www /webroot/

 #将/var/www 的文件标签 给 /webroot 文件目录

[root@server0 ~]# ls -Zd /webroot/

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /webroot/


5.重启httpd服务验证

[root@server0 ~]# systemctl restart httpd.service 

[root@desktop0 ~]# elinks -dump server0.example.com

   wo shi webroot



安全Web服务

https 安全的超文本协议 端口号:443


数字证书基础

   PKI公钥基础设施 Public Key Infrastructure

公钥:主要用来加密数据

私钥:主要用来解密数据(与相应的公钥匹配)

数字证书:证明拥有着的合法性/权威性(单位名称,有效期,公钥,颁发机构及签名)

Certificate Authority (CA)  数字证书授权中心:负责证书的申请/审核/颁发/鉴定/撤销等管理工作

//本文使用的数字证书 ,公钥,私钥 均为网上下载

//如果想要了解如何搭建 CA服务器 可以浏览 http://blog.51cto.com/13558754/2057718


搭建https        

可以访问https://server0.example.com 

1.安装mod_ssl软件包

 [root@server0 ~]# yum -y install mod_ssl.x86_64

2.部署网站的证书

 [root@server0 tls]# cd /etc/pki/tls/certs/A

 [root@server0 certs]# wget http://172.25.254.254/pub/tls/certs/server0.crt

3.部署网站的根证书

 [root@server0 tls]# cd /etc/pki/tls/certs/

 [root@server0 certs]# wget http://172.25.254.254/pub/example-ca.crt

4.部署私钥

 [root@server0 certs]# cd /etc/pki/tls/private/

 [root@server0 private]# wget http://172.25.254.254/pub/tls/private/server0.key

5.修改配置文件

 [root@server0 private]# vim /etc/httpd/conf.d/ssl.conf 

 ...

 DocumentRoot "/webroot" #59行

 ServerName server0.example.com:443

 ...

 SSLCertificateFile /etc/pki/tls/certs/server0.crt #100行

 ...

 SSLCertificateKeyFile /etc/pki/tls/private/server0.key #107行

 ...

 SSLCACertificateFile /etc/pki/tls/certs/example-ca.crt #122行

 ...


6.重启服务

 [root@server0 private]# systemctl restart httpd.service 


7.验证

 [root@desktop0 ~]# firefox https://server0.example.com


//如果想要了解更多关于 搭建https服务的知识可以浏览 http://blog.51cto.com/13558754/2057837


部署动态网站

部署并测试WSGI站点

题目: 为站点webapp0.example.com配置提供动态Web

  要求:

此虚拟主机监听在端口8909

测试网页为webinfo.wsgi

从浏览器访问 http://webapp0.example.com:8909 可以接收到动态生成的Web界面



1.安装mod_wsgi软件

 [root@server0 /]# yum -y install mod_wsgi.x86_64 

2.切换到相应/var/www/nsd目录下下载动态页面

 [root@server0 /]# cd /var/www/nsd/

 [root@server0 nsd]# wget http://172.25.254.254/pub/materials/webinfo.wsgi

 [root@server0 nsd]# cat webinfo.wsgi 


3.在Desktop0上查看,可以看到源代码

 [root@desktop0 ~]# firefox webapp0.example.com/webinfo.wsgi

4.server0上修改

 [root@server0 nsd]# vim /etc/httpd/conf.d/test01.conf 

  ...

 <VirtualHost *:80>

    DocumentRoot /var/www/nsd

    ServerName webapp0.example.com

    wsgiscriptalias / /var/www/nsd/webinfo.wsgi

 </VirtualHost>

 ...

5.重启服务,验证

 [root@server0 nsd]# systemctl restart httpd.service 

 [root@desktop0 ~]# elinks -dump webapp0.example.com

 UNIX EPOCH time is now: 1509700659.44

#UINX 时间戳:自1970-1-1 0:0:0 到达当前所经过的秒数

 6.修改webapp0.example.com端口号8909

 [root@server0 nsd]# vim /etc/httpd/conf.d/test01.conf 

  Listen 8909

  <VirtualHost *:8909>

     DocumentRoot /var/www/nsd

     ServerName webapp0.example.com

     wsgiscriptalias / /var/www/nsd/webinfo.wsgi

  </VirtualHost>

 

7.重启服务,(发现不能启动)

[root@server0 nsd]# systemctl restart httpd.service 

Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

SELinux策略保护

标配Web端口

使用semanage工具可查看

当尝试监听非标配端口时,SELinux会阻止

导致httpd 服务启动失败

查看/var/log/messages文件中会有记录

8.SELinux限制8909端口

[root@server0 nsd]# semanage port -l | grep http #查看http允许的端口

 http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010

 http_cache_port_t              udp      3130

 http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

 pegasus_http_port_t            tcp      5988

 pegasus_https_port_t           tcp      5989

[root@server0 nsd]# semanage port -a -t http_port_t  -p tcp 8909 #添加8909端口加入http允许端口中 

[root@server0 nsd]# semanage port -l | grep http

 http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010

 http_cache_port_t              udp      3130

 http_port_t                    tcp      8909, 80, 81, 443, 488, 8008, 8009, 8443, 9000

 pegasus_http_port_t            tcp      5988

 pegasus_https_port_t           tcp      5989

[root@server0 nsd]# systemctl restart httpd.service #重启成功

验证

[root@desktop0 ~]# elinks -dump webapp0.example.com:8909

UNIX EPOCH time is now: 1509767472.39

关于web服务器 在RHCE7的考试中有这么5道题 :

实现一个Web服务器


为 http://server0.example.com 配置 Web 服务器:

从URL地址 http://classroom.example.com/pub/materials/station.html 下载一个主页文件,并将该文件重命名为 index.html

将文件 index.html 拷贝到您的 web 服务器的 DocumentRoot 目录下

不要对文件 index.html 的内容进行任何修改


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

[root@system1 ~]#vim /usr/local/share/

[root@system1 ~]#vim /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf  #寻找虚拟主机模版

[root@system1 ~]#vim /etc/httpd/conf.d/test01.conf

<VirtualHost *:80>

    DocumentRoot /var/www/html

    ServerName server0.example.com

</VirtualHost>

[root@system1 ~]#wget -O /var/www/html/index.html http://classroom/pub/materials/station.html

[root@system1 ~]#systemctl restart httpd

[root@system1 ~]#systemctl enable httpd


[root@system2 ~]# curl  http://server0.example.com



配置安全Web服务



为站点 http://server0.example.com 配置TLS加密:

一个已签名证书从 http://classroom.example.com/pub/tls/certs/server0.crt 获取

此证书的密钥从 http://classroom.example.com/pub/tls/private/server0.key 获取

此证书的签名授权信息从 http://classroom.example.com/pub/example-ca.crt 获取


[root@system1 ~]# yum -y install mod_ssl.x86_64 

[root@system1 ~]# cd /etc/pki/tls/certs/

[root@system1 ~]# wget http://classroom/pub/example-ca.crt

[root@system1 ~]# wget http://classroom/pub/tls/certs/server0.crt

[root@system1 ~]# cd ../private/

[root@system1 ~]# wget http://classroom/pub/tls/private/server0.key

[root@system1 ~]# vim /etc/httpd/conf.d/ssl.conf 

<VirtualHost _default_:443>


# General setup for the virtual host, inherited from global configuration

DocumentRoot "/var/www/html"

ServerName www.example.com:443

...


SSLCertificateFile /etc/pki/tls/certs/server0.crt


SSLCertificateKeyFile /etc/pki/tls/private/server0.key



SSLCACertificateFile /etc/pki/tls/certs/example-ca.crt


[root@system1 ~]# systemctl restart httpd

[root@system2 ~]# firefox https://server0.example.com


实现一个Web服务器


为 http://server0.example.com 配置 Web 服务器:

从URL地址 http://classroom.example.com/pub/materials/station.html 下载一个主页文件,并将该文件重命名为 index.html

将文件 index.html 拷贝到您的 web 服务器的 DocumentRoot 目录下

不要对文件 index.html 的内容进行任何修改



[root@system1 ~]# mkdir /var/www/virtual

[root@system1 ~]# wget -O /var/www/virtual/index.html http://classroom/pub/materials/www.html

[root@system1 ~]# vim /etc/httpd/conf.d/test01.conf 

<VirtualHost *:80>

    DocumentRoot /var/www/virtual

    ServerName www0.example.com

</VirtualHost>

[root@system1 ~]# useradd fleyd

[root@system1 ~]# setfacl -m u:fleyd:rwx /var/www/virtual/

[root@system1 ~]# systemctl restart httpd

[root@system2 ~]# curl www0.example.com


配置Web内容访问


在您的 server0 web服务器的 DocumentRoot 目录下创建一个名为 private 的目录,要求如下:

从 http://classroom.example.com/pub/materials/private.html 下载一个文件副本到这个目录,并且命名为 index.html

不要对这个文件的内容做任何修改

从 system1 上,任何人都可以浏览 private 的内容,但是从其他系统不能访问这个目录的内容


[root@system1 ~]# wget -O /var/www/html/private/index.html http://classroom/pub/materials/private.html

[root@system1 ~]# vim /etc/httpd/conf/httpd.conf  #寻找模版

[root@system1 ~]# vim /etc/httpd/conf.d/test02.conf

<Directory "/var/www/html/private">

    Require ip 127.0.0.1 ::1 172.25.0.11

</Directory>

[root@system1 ~]# systemctl restart httpd.service 

[root@system1 ~]# firefox http://server0.example.com/private


[root@system2 ~]# firefox http://server.example.com/private


实现动态Web内容


在system1 上配置提供动态Web内容,要求如下:

动态内容由名为 webapp0.example.com 的虚拟主机提供

虚拟主机侦听在端口 8909

从 http://classroom.example.com/pub/materials/webinfo.wsgi 下载一个脚本,然后放在适当的位置,无论如何不要修改此文件的内容

客户端访问 http://webapp0.example.com:8909 可接收到动态生成的 Web 页

此 http://webapp0.example.com:8909/必须能被 example.com 域内的所有系统访问


[root@system1 ~]#mkdir /var/www/webapp0

[root@system1 ~]#cd /var/www/webapp0

[root@system1 ~]#wget http://classroom/pub/materials/webinfo.wsgi

[root@system1 ~]#vim /etc/httpd/conf.d/test01.conf 

listen 8909

<VirtualHost *:8909>

    DocumentRoot /var/www/webapp0

    wsgiscriptalias / /var/www/webapp0/webinfo.wsgi

    ServerName webapp0.example.com

</VirtualHost>

[root@system1 ~]#yum -y install mod_wsgi              

[root@system1 ~]#semanage port -l | grep http

[root@system1 ~]#semanage port -a -t http_port_t -p tcp 8909

[root@system1 ~]#vim /etc/httpd/conf.d/test01.conf 

[root@system1 ~]#systemctl restart httpd


[root@system2 ~]# firefox http://webapp0.example.com:8909










本文转自 Xuenqlve 51CTO博客,原文链接:http://blog.51cto.com/13558754/2058772,如需转载请自行联系原作者
目录
相关文章
|
22小时前
|
安全 程序员 PHP
实验室信创平台上几道经典的web-php有关的题目wp
本内容介绍了多个CTF题目及其解题思路,涵盖正则表达式、PHP函数、代码审计等方面。例如,通过POST提交和正则匹配获取flag,利用PHP的松散比较和数组特性绕过验证,以及通过恢复VIM临时文件和SVN隐藏文件夹获取关键信息。每个题目都提供了详细的解题步骤和相关链接,适合初学者学习和实践。
9 1
|
26天前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
40 3
|
2月前
|
机器学习/深度学习 弹性计算 缓存
阿里云服务器经济型e实例与通用算力型u1实例对比分析与选择指南
在阿里云服务器的实例规格中,经济型e实例和通用算力型u1实例是很多个人和普通企业级用户常见的选择,经济型e实例与通用算力型u1实例的主要区别在于性能、应用场景及价格策略。本文将详细对比这两种实例的性能、应用场景及价格策略,以供参考。
|
2月前
|
人工智能 运维 Kubernetes
87cloud案例分析:阿里云国际服务器如何支持在线教育
87cloud案例分析:阿里云国际服务器如何支持在线教育
|
2月前
|
弹性计算 安全 Linux
阿里云国际版ECS云服务器ping不通的原因分析
阿里云国际版ECS云服务器ping不通的原因分析
|
2月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
53 3
|
2月前
|
域名解析 弹性计算 缓存
阿里云国际云服务器全局流量分析功能详细介绍
阿里云国际云服务器全局流量分析功能详细介绍
|
3月前
|
存储 安全 算法
服务器数据恢复—Raid磁盘阵列的安全性分析及常见故障
出于尽可能避免数据灾难的设计初衷,RAID解决了3个问题:容量问题、IO性能问题、存储安全(冗余)问题。从数据恢复的角度讨论RAID的存储安全问题。 常见的起到存储安全作用的RAID方案有RAID1、RAID5及其变形。基本设计思路是相似的:当部分数据异常时,可通过特定算法将数据还原出来。以RAID5为例:如果要记录两个数字,可以通过再多记录这两个数字的和来达到记录冗余性的目的。例如记录3和5,同时再记录这2个数字的和8。在不记得到底是几和5的情况下,只需要用8-5就可以算出这个丢失的数字了,其余情况依此类推。
|
4月前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
197 0
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
150 3