httpd服务器之——Apache的网页和安全优化

Posted 码海小虾米_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了httpd服务器之——Apache的网页和安全优化相关的知识,希望对你有一定的参考价值。

一、Apache网页优化

Apache网页优化的概述:

在企业中,部署Apache后只采用默认的配置参数,会发网防很多题,换言之照时认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代

为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容

1.1 网页压缩

启动网页压缩的步骤:
在这里插入图片描述

1)网页压缩的理论步骤

1.检查是否安装mod_deflate 模块:

apachectl -t -D DUMP_MODULES | grep "deflate"

2.如果没有安装mod deflate 模块,重新编译安装 Apache 添加 mod deflate 模块

systemctl stop httpd.service 
cd /usr/local/httpd/conf 
mv httpd.conf httpd.conf.bak

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel cd /opt/httpd-2.4.29/
./configure \\
--prefix=/usr/local/httpd \\-
--enable-so \\
--enable-rewrite \\
--enable-charset-lite \\
--enable-cgi \\
--enable-deflate							#加入mod_deflate 模块

make &s make install

3.配置 mod deflate 模块启用

vim /usr/local/httpd/conf/httpd.conf
--51--修改 注释52行
Listen 192.198.80.10:80
# Listen 80
--105--取消注释
LoadModule deflate module modules/mod deflate.so				#开启mod deflate 模块

--197--取消注释,修改 
ServerName www . clj. com: 80
--末行添加--
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png #代表对什么样的内容启用gzip压缩
DeflateCompressionLevel 9 				  #代表压缩级别,范围为1~9
SetOutputFilter DEFLATE    				  #代表启用deflate 模块对本站点的输出进行gzip压缩
</IfModule>

4.检查安装情况,启动服务

apachect1 -t											#验证配置文件的配置是否正确
apachectl_-t -D DUMP_ MODULES l grep "deflate"			#检查 mod deflate 模块是否已安装
deflate module (shared)									#已安装的正确结果
systemctl start httpd.service

5.测试 mod_deflate 压缩是否生效

cd /usr/local/httpd/htdocs
先将game.jpg文件传到/usr/local/httpd/htdocs目录下 
vim index.html
<html><body>
<hl>It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works!It works !</h1>
<img src="game. jpg"/></body></html>

2)网页压缩的具体实操步骤(图文)

第一步:检查是否安装 mod_deflate 模块:
在这里插入图片描述
第二步:没有安装 mod_deflate 模块,重新编译安装Apache添加该模块

1) 关闭服务,然后对httpd文件进行备份后,安装相关程序
在这里插入图片描述
2) 重新编译安装Apache添加 mod_deflate 模块
在这里插入图片描述
3)重新编译安装
在这里插入图片描述
第三步:配置 mod_deflate模块
1)修改第51行,然后52行注释掉
在这里插入图片描述

2)修改105行和197行
在这里插入图片描述
在这里插入图片描述
3)末行添加配置
在这里插入图片描述
第四步:检查安装情况,启动服务
在这里插入图片描述

第五步:测试 mod_deflate 压缩是否生效

  1. 拖入图片,然后编辑index.html文件
    在这里插入图片描述
    2)临时配置域名与IP地址的映射关系,然后在【火狐浏览器】中进行测试(网页内右键然后点击查看元素)
    在这里插入图片描述
    在这里插入图片描述

1.2 网页缓存

  • 通过mod_expire模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求。

  • 启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面,不需要向服务器再次发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的。

1)网页缓存 的理论步骤

1.检查是否安装 mod_expires 模块

apachectl -t -D DUMP_MODULES | grep "expires"

2.如果没有安装mod_expires 模块,重新编译安装 Apache 添加 mod_expires模块

systemctl stop httpd.service 					#停止服务

cd /usr/local/httpd/conf/						#切换目录
mv httpd.conf httpd.conf.bak2					#进行备份
yum install -y gcc gcc-c++ pcre pcre-devel zlib-devel			#安装相关程序

#安装mod_expires模块
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate --enable-expires	

make -j4 && make install						#重新编译安装

3.配置 mod_expires 模块启用

vim /usr/local/httpd/conf/httpd.conf			#修改配置文件

----52行修改-----
Listen 192.168.80.77:80

----111行取消注释----
LoadModule expires_module modules/mod_expires.so

----199行取消注释并修改-----
ServerName www.clj.com:80

----末行添加-----
<IfModule mod_expires.c>
  ExpiresActive On								#打开网页缓存功能
  ExpiresDefault "access plus 60 seconds"		#设置缓存60秒
</IfModule>

4.检查安装情况,启动服务

apachectl -t					#验证配置.文件的配置是否正确
apachectl -t -D DUMP_MODULES | grep "expires"		#检查 mod_deflate 模块是否已安装

systemctl start httpd.service				#开启服务

5.测试缓存是否生效
cat /usr/local/httpd/htdocs/index.html
方法一∶
在Linux系统中,打开火狐浏览器,右击点查看元素选择 网络 —> 选择 HTML、WS、其他
访问 http∶//192.168.80.10 ,双击200消息查看响应头中包含 Expires 项
方法二∶
在Windows系统中依次安装 Microsoft.NET4 和fiddler 软件,打开fiddler 软件选择 inspectors —> 选择 Headers
浏览器访问 http//192.168.80.10 ,双击200消息查看 Expires 项

2)网页缓存 的具体实操步骤(图文)

第一步:检查是否安装 mod expires 模块
在这里插入图片描述
第二步:如果没有安装mod_expires 模块,重新编译安装 Apache 添加 mod_expires模块
1)安装相关程序
在这里插入图片描述
2)加载模块
在这里插入图片描述
3)重新编译安装
在这里插入图片描述
第三步:配置 mod_expires 模块启用
1)切换目录然后修改监听的IP地址
在这里插入图片描述
2)取消111行的注释
在这里插入图片描述
3)修改域名
在这里插入图片描述
4)末行添加配置
在这里插入图片描述

第四步:检查安装情况,启动服务
在这里插入图片描述
第五步:测试结果
1)进入网页,然后进行清理记录和刷新
在这里插入图片描述
2)查看缓存是否生效,如下图即可
在这里插入图片描述

二、Apache安全优化

2.1 隐藏版本信息

Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患生产环境中要配置Apache隐藏版本信息
如下:
在这里插入图片描述

1)隐藏版本信息 的理论步骤

vim /usr/local/httpd/conf/httpd.conf 			#修改此文件,修改内容如下
------491--取消注释------
Include conf/extra/httpd-default.conf

vim /usr/local/httpd/conf/extra/httpd-default.conf				#修改此文件,修改内容如下
------55--修改------
ServerTokens Prod				#将原本的 Full 改为 Prod,只显示名称,没有版本
#ServerTokens 表示 Server 回送给客户端的响应头域是否包含关于服务器 OS 类型和编译过的模块描述信息

systemctl restart httpd.service				#重新启动服务

浏览器访问 http∶//192.168.80.77 ,双击200消息查看 Server 项

2)隐藏版本信息 的具体实操步骤(图文)

第一步:修改httpd.conf 文件,修改内容如下
在这里插入图片描述
第二步: 修改httpd-default.conf文件,修改内容如下
在这里插入图片描述
5.测试隐藏版本信息是否生效
在这里插入图片描述

2.2 配置防盗链

  • 防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源

  • 如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力

  • 作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用

1)配置防盗链 的理论步骤

1.检查是否安装 mod rewrite 模块

apachectl -t -D DUMP_MODULES | grep "rewrite"

2.如果没有安装mod_rewrite 模块,重新编译安装 Apache 添加 mod_rewrite模块

systemctl stop httpd.service								#停止服务
cd /usr/local/httpd/conf/									#切换目录
mv httpd.conf httpd.conf.bak3								#文件备份
yum install -y gcc gcc-c++ pcre pcre-devel zlib-devel		#安装相关程序

cd /opt/httpd-2.4.29/										#切换目录
#添加 mod rewrite模块 
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate --enable-expires --enable-rewrite
make -j4 && make install									#重新编译安装

3.配置 mod_rewrite 模块启用

vim /usr/local/httpd/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so

RewriteCond %{HTTP REFERER}!^http;//www.clj.com.s【NC】 的字段含义∶ "8{HTTP
REFERER}"∶ 存放一个链接的 URL,表示从哪个链接访问所需的网页。 "!^∶ 表示不以后面的字符串开头。
"http;//www.clj.com"∶ 是本网站的路径,按整个字符串匹配。 .
$"∶ 表示以任意字符结尾。 "【NC】 "∶
表示不区分大小写字母。

RewriteRule ..(gifljpg|swf)$ http;//www.clj.com/error.pnq 的字段含义∶
". "∶表示匹配一个字符。
"
“∶ 表示匹配 0 到多个字符,与”.“合起来的意思是匹配 0 到多次前面的任意字符,如果是 1 到多次匹配可以用”+“表示。
“.“∶ 在这里的”“是转义符,”.“就代表符号”.“的意思。因为”.“在指令中是属于规则字符,有相应的含义,如果需要匹配, 需要在前面加个转义符””,其它规则字符如果需要匹配, 也做同样处理。
“(gifljpglswf)“∶ 表示匹配"gif”、“jpg”、“swf"任意一个,”$“表示结束。最后的规则是以”.gif”、”.jpg"、".swf"结尾,前面是1到多个字符的字符串,也就是匹配图片类型的文件。
"http∶/www.clj.com/error,pnq"∶ 表示转发到这个路径 。

整个配置的含义是 使用本网站以外的网站域名 访问本站的图片文件时,显示 3.png 这个图片。

     Options Indexes FollowSymLinks
     AllowOverride None
     Require all granted
     
     RewriteEngine On
     RewriteCond %{HTTP_REFERER} !^http://clj.com/.*$ [NC]
     RewriteCond %{HTTP_REFERER} !^http://clj.com$ [NC]
     RewriteCond %{HTTP_REFERER} !^http://www.clj.com/.*$ [NC]
     RewriteCond %{HTTP_REFERER} !^http://www.clj.com/$ [NC]
     RewriteRule \\.(jpg|jpeg|gif|png) 3.png

4.网页准备
Web源主机配置∶

cd /usr/local/httpd/htdocs
将1.jpg2.jpg3.png文件传到/usr/local/httpd/htdocs目录下 

vim index.html
<html><body><h1>this is clj.com!</hl>
<img src="1.jpg"/>
</body></html>

echo "192.168.80.77 www.clj.com">> /etc/hosts 
echo "192.168.80.100 www.dl.com" >>/etc/hosts

盗链网站主机∶

yum install -y httpd
cd /usr/local/httpd/htdocs 			#yum安装的httpd服务的默认路径为/var/www/html/
vim index.html				
<html><body><h1>this is benet.com!</h1>
<img src="http;//www.clj.com/1.jpg"/>
</body></html>

echo "192.168.80.77 www.clj.com">> /etc/hosts 
echo "192.168.80.100 www.dl.com" >>/etc/hosts

5.在盗图网站主机上进行浏览器验证 http:www.dl.com

2)配置防盗链 的具体实操步骤(图文)

第一步:检查是否安装 mod rewrite 模块
在这里插入图片描述
第二步:如果没有安装mod_rewrite 模块,重新编译安装 Apache 添加 mod rewrite模块
1)停止服务,然后备份文件,进行yum安装程序
在这里插入图片描述
2)添加 mod rewrite模块
在这里插入图片描述
3)重新编译安装
在这里插入图片描述
第三步:配置 mod_rewrite 模块启用
1)修改/usr/local/httpd/conf/httpd.conf文件,取消157行注释
在这里插入图片描述
2)在224行的下面添加这些配置
在这里插入图片描述

第四步:盗链测试
1)在源主机上配置
在这里插入图片描述
2)获取到源主机图片的src地址
在这里插入图片描述
3)在盗链主机上配置httpd相关配置
在这里插入图片描述
4)在盗链主机上配置临时域名解析
在这里插入图片描述
5)在盗链主机上访问源主机网站地址(记得清理历史记录和缓存然后刷新网页)
在这里插入图片描述
6)在盗链主机上访问盗链主机网站地址(记得清理历史记录和缓存然后刷新网页)
在这里插入图片描述

以上是关于httpd服务器之——Apache的网页和安全优化的主要内容,如果未能解决你的问题,请参考以下文章

Apache网页优化 ---隐藏版本号

Apache网页安全优化

Apache 网页与安全优化

网页优化apache

Apache网页优化----压缩缓存

Apache网页优化之缓存