理论+实操:Apache 网页与安全优化

文章目录


前言:
apache网页优化

  • 网页压缩
  • 网页缓存

apache安全优化

  • 配置防盗链
  • 与隐藏版本信息

一:Apache网页优化概述

  • 在企业中,部署apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今的互联网时代
  • 为了适应企业需求,就需要考虑如何提升apache的性能与稳定性,这就是apache优化的内容

1.1 优化内容

  • 配置网页压缩功能
  • 工作模式的选择与参数优化
  • 配置防盗链
  • 配置隐藏版本号

二:gzip介绍

配置apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器
作用
  • 降低了网络传输的字节数,加快网页加载的速度
  • 节省流量,改善用户的浏览体验,在按量计费是省钱
  • gzip与搜索引擎的抓取工具有着更好的关系

三:apache的压缩模块

3.1 apache实现网页压缩的功能模块包括

  • mod_gzip 模块
  • mod_deflate 模块

3.2 apache 1.x

  • 没有内建网页压缩技术,但可使用第三方mod_gzip 模块执行压缩

3.3 apache 2.x

  • 在开发的时候,内建了mod_deflate 这个模块,取代mod_gzip
  • 2.4.29 需要额外安装expat-devel 组件

3.4 mod_gzip 模块与mod_deflate 模块

  • 两者均使用gzip压缩算法,运作原理类似
  • mod_deflate 压缩速度略快,而mod_gzip的压缩比略高
  • mod_gzip对服务器CPU的占用要高一些
  • 高流量的服务器,使用mod_deflate 可能会比mod_gzip 加载速度更快

四:配置网页压缩功能

  • 启用网页压缩功能步骤
    在这里插入图片描述

4.1 首先检查是否安装了mod_deflate模块

  • 执行apachectl -t -D DUMP_MODULES命令
  • 如果输出中没有deflate_module(static),说明编译时没有安装mod_deflate模块

4.2 若没有安装则要重新编译安装

  • ./configure --enable-deflate
  • make && make install

五:配置网页压缩功能

5.1 在配置httpd.conf 中配置开启gzip功能

  • AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript

————————代表对什么样的内容启用gzip压缩

  • DeflateCompressionLevel

————————代表压缩级别

  • SetOutputFilter DEFLATE

————————代表启用deflate模块对本站点的输出进行gzip压缩

5.2 重启apache服务,再用浏览器访问测试网站,并用Fiddler工具抓包,进行对比分析

在这里插入图片描述

5.3 实验验证deflate功能模块

5.3.1 创建挂载点,解压文件

[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.254.10/linuxs /abc
Password for root@//192.168.254.10/linuxs:  
[root@localhost ~]# cd /abc/LAMP-C7/
[root@localhost LAMP-C7]# ls
apr-1.6.2.tar.gz         httpd-2.4.29.tar.bz2  php-5.6.11.tar.bz2
apr-util-1.6.0.tar.gz    LAMP-php5.6.txt
Discuz_X2.5_SC_UTF8.zip  mysql-5.6.26.tar.gz
[root@localhost LAMP-C7]# tar xzvf apr-1.6.2.tar.gz -C /opt
[root@localhost LAMP-C7]# tar xzvf apr-util-1.6.0.tar.gz -C /opt
[root@localhost LAMP-C7]# tar xjvf httpd-2.4.29.tar.bz2 -C /opt
[root@localhost LAMP-C7]# cd /opt
[root@localhost opt]# ls
apr-1.6.2  apr-util-1.6.0  httpd-2.4.29  rh

5.3.2 安装编译包

[root@localhost opt]# yum install gcc gcc-c++ perl pcre pcre-devel expat-devel make zlib-devel -y
已安装:
  expat-devel.x86_64 0:2.1.0-10.el7_3      gcc.x86_64 0:4.8.5-39.el7           
  gcc-c++.x86_64 0:4.8.5-39.el7            pcre-devel.x86_64 0:8.32-17.el7     
  zlib-devel.x86_64 0:1.2.7-18.el7        

作为依赖被安装:
  cpp.x86_64 0:4.8.5-39.el7                                                    
  glibc-devel.x86_64 0:2.17-292.el7                                            
  glibc-headers.x86_64 0:2.17-292.el7                                          
  kernel-headers.x86_64 0:3.10.0-1062.9.1.el7                                  
  libmpc.x86_64 0:1.0.1-3.el7                                                  
  libstdc++-devel.x86_64 0:4.8.5-39.el7                                        

更新完毕:
  make.x86_64 1:3.82-24.el7           perl.x86_64 4:5.16.3-294.el7_6          

作为依赖被升级:
  glibc.x86_64 0:2.17-292.el7          glibc-common.x86_64 0:2.17-292.el7      
  libgcc.x86_64 0:4.8.5-39.el7         libgomp.x86_64 0:4.8.5-39.el7           
  libstdc++.x86_64 0:4.8.5-39.el7      perl-libs.x86_64 4:5.16.3-294.el7_6     
  zlib.x86_64 0:1.2.7-18.el7          

完毕!

5.3.3 配置属性

[root@localhost opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
[root@localhost opt]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# 
[root@localhost httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-expires --enable-cgi --enable-deflate
configure: summary of build options:
--
    Server Version: 2.4.29
    Install prefix: /usr/local/httpd
    C compiler:     gcc -std=gnu99
    CFLAGS:          -g -O2 -pthread  
    CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE  
    LDFLAGS:           
    LIBS:             
    C preprocessor: gcc -E

5.3.4 make编译

[root@localhost httpd-2.4.29]# make && make install
mkdir /usr/local/httpd/man
mkdir /usr/local/httpd/man/man1
mkdir /usr/local/httpd/man/man8
mkdir /usr/local/httpd/manual
make[1]: 离开目录“/opt/httpd-2.4.29”

5.3.5 优化配置文件和脚本,开启压缩模块

[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
[root@localhost httpd-2.4.29]# grep -v "#" /usr/local/httpd/bin/apachectl > /etc/init.d/httpd
[root@localhost httpd-2.4.29]# ls -l /etc/init.d/httpd 
-rw-r--r--. 1 root root 987 12月 17 16:26 /etc/init.d/httpd
[root@localhost httpd-2.4.29]# chmod +x  /etc/init.d/httpd 
[root@localhost httpd-2.4.29]# ls -l /etc/init.d/httpd 
-rwxr-xr-x. 1 root root 987 12月 17 16:26 /etc/init.d/httpd
[root@localhost httpd-2.4.29]# chkconfig --add httpd
[root@localhost httpd-2.4.29]# chkconfig --list httpd

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

httpd          	0:关	1:关	2:关	3:开	4:关	5:开	6:关
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
[root@localhost httpd-2.4.29]# vim /etc/init.d/httpd 
//开头增加
#!/bin/sh
# chkconfig: 35 85 21
# description: Apache is a World Wide Web server
[root@localhost httpd-2.4.29]# vim /etc/httpd.conf 
 51 Listen 192.168.247.149:80
 52 #Listen 80
 101 LoadModule filter_module modules/mod_filter.so
 105 LoadModule deflate_module modules/mod_deflate.so
 112 LoadModule headers_module modules/mod_headers.so
 198 ServerName www.kgc.com:80
 //在末尾加入deflate压缩模块详细参数
 <IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/j
avascript text/jpg text/png
  DeflateCompressionLevel 9
  SetOutputFilter DEFLATE
</IfModule>

5.3.6 关闭防火墙

[root@localhost httpd-2.4.29]# systemctl stop firewalld.service 
[root@localhost httpd-2.4.29]# setenforce 0

5.3.7 验证语法,验证deflate是否开启

[root@localhost httpd-2.4.29]# apachectl -t
Syntax OK
[root@localhost httpd-2.4.29]# apachectl -t -D DUMP_MODULES | grep "deflate"
 deflate_module (shared)

5.3.8 开启服务,注意,此时不可以补全

[root@localhost httpd-2.4.29]# systemctl start httpd
[root@localhost httpd-2.4.29]# netstat -natp | grep "httpd"
tcp        0      0 192.168.247.149:80      0.0.0.0:*               LISTEN      36256/httpd         

5.3.9 客户机抓包验证,是否开启gzip。先在网页内加入一张图片

[root@localhost httpd-2.4.29]# cp /abc/bzhw.png /usr/local/httpd/htdocs/
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
bzhw.png  index.html
[root@localhost htdocs]# vim index.html 
<html><body><h1>It works!</h1>
<img src="bzhw.png"/>
</body></html>

在这里插入图片描述

在客户机内安装fidder,查看是否存在压缩的参数

备注:此时修改网页的参数,并没有重新开启服务,依旧可以读取到照片

在这里插入图片描述

六:配置网页的缓存时间

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

6.2 启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-ontrol标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的

6.3 启用网页缓存功能步骤

在这里插入图片描述

6.4 查看是否安装了mod_expire模块

  • /usr/local/apache/bin/apachectl -t -D DUMP_MODULES
  • 如果输出中没有expire_module(static),则说明编译时没有安装mod_expire

6.5 如果没有安装则要重新编译安装

  • ./configure --enable-expires
  • make && make install

6.6 修改httpd.conf配置文件

启用mod_expires模块,并设置http协议下任意格式的文档均60秒后过期

6.7 重启httpd服务

6.8 再次访问测试网站,使用抓包工具Fiddler进行数据抓取分析

在这里插入图片描述

6.9 实验验证expires功能模块

6.9.1 创建挂载点

[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.254.10/linuxs /abc
Password for root@//192.168.254.10/linuxs:  
[root@localhost ~]# 

6.9.2 解压文件

[root@localhost ~]# cd /abchttpd2.4.2版本/
[root@localhost httpd2.4.2版本]# 
[root@localhost httpd2.4.2版本]# ls
apr-1.4.6.tar.gz  apr-util-1.4.1.tar.gz  httpd-2.4.2.tar.gz
[root@localhost httpd2.4.2版本]# tar zxvf httpd-2.4.2.tar.gz -C /opt
[root@localhost httpd2.4.2版本]# tar zxvf apr-1.4.6.tar.gz -C /opt
[root@localhost httpd2.4.2版本]# tar zxvf apr-util-1.4.1.tar.gz -C /opt

6.9.3 配置文件属性

[root@localhost httpd2.4.2版本]# cd /opt
[root@localhost opt]# ls
apr-1.4.6  apr-util-1.4.1  httpd-2.4.2  rh
[root@localhost opt]# mv apr-1.4.6/ httpd-2.4.2/srclib/apr
[root@localhost opt]# mv apr-util-1.4.1/ httpd-2.4.2/srclib/apr-util
[root@localhost opt]# cd httpd-2.4.2/
[root@localhost httpd-2.4.2]# ls
ABOUT_APACHE     BuildBin.dsp   httpd.dsp       Makefile.in       ROADMAP
acinclude.m4     buildconf      httpd.spec      Makefile.win      server
Apache-apr2.dsw  CHANGES        include         modules           srclib
Apache.dsw       config.layout  INSTALL         NOTICE            support
apache_probes.d  configure      InstallBin.dsp  NWGNUmakefile     test
ap.d             configure.in   LAYOUT          os                VERSIONING
build            docs           libhttpd.dsp    README
BuildAll.dsp     emacs-style    LICENSE         README.platforms
[root@localhost httpd-2.4.2]# ./configure --prefix=/usr/local/httpd --enable-deflate --enable-expires --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
configure: error: in `/opt/httpd-2.4.2/srclib/apr':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
configure failed for srclib/apr

6.9.4 没有安装编译器,安装编译器

[root@localhost httpd-2.4.2]# yum install gcc gcc-c++ zlib-devel pcre pcre-devel make perl expat-devel -y
[root@localhost httpd-2.4.2]# ./configure --prefix=/usr/local/httpd --enable-deflate --enable-expires --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
config.status: creating include/ap_config_auto.h
config.status: executing default commands

6.9.4 make编译

[root@localhost httpd-2.4.2]# make
make[4]: 离开目录“/opt/httpd-2.4.2/modules/mappers”
make[3]: 离开目录“/opt/httpd-2.4.2/modules/mappers”
make[2]: 离开目录“/opt/httpd-2.4.2/modules”
make[2]: 进入目录“/opt/httpd-2.4.2/support”
make[2]: 离开目录“/opt/httpd-2.4.2/support”

make[1]: 离开目录“/opt/httpd-2.4.2”
[root@localhost httpd-2.4.2]# make install
mkdir /usr/local/httpd/man
mkdir /usr/local/httpd/man/man1
mkdir /usr/local/httpd/man/man8
mkdir /usr/local/httpd/manual
make[1]: 离开目录“/opt/httpd-2.4.2”

6.9.5 优化配置文件和脚本文件,开启缓存时间模块

[root@localhost ~]# grep -v "#" /usr/local/httpd/bin/apachectl > /etc/init.d/httpd
[root@localhost ~]# vim /etc/init.d/httpd 
//开头增加
#!/bin/sh
# chkconfig: 35 85 21
# description: Apache is a World Wide Web server
[root@localhost ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin
[root@localhost ~]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
[root@localhost ~]# vim /etc/httpd.conf 
 51 Listen 192.168.247.149:80
 52 #Listen 80
188 ServerName www.kgc.com:80
108 LoadModule expires_module modules/mod_expires.so
//开启这个功能
489 <IfModule mod_expires.c>
490   ExpiresActive On
491   ExpiresDefault "access plus 50 seconds"
492 </IfModule>
//末尾添加以上四行

6.9.6 验证配置文件中的语法格式

[root@localhost ~]# apachectl -t
Syntax OK
//验证语法格式是否有误
[root@localhost ~]# apachectl -t -D DUMP_MODULES | grep "expires"
//查看模块
 expires_module (shared)

6.9.7 修改首页属性,在里面添加文件

[root@localhost ~]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# vim index.html 
<html><body><h1>It works!</h1>
<img src="bzhw.png"/>
</body></html>
[root@localhost htdocs]# mount.cifs //192.168.254.10/linuxs /abc
Password for root@//192.168.254.10/linuxs:  
[root@localhost htdocs]# cd -
/abc
[root@localhost abc]# ls
bzhw.png          
[root@localhost abc]# cp bzhw.png /usr/local/httpd/htdocs/
[root@localhost abc]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
bzhw.png  index.html

6.9.8 关闭防火墙,开启服务

[root@localhost htdocs]# systemctl stop firewalld.service 
[root@localhost htdocs]# setenforce 0
[root@localhost htdocs]# apachectl start 
//启动服务

6.9.9 客户端开启fiddler,开始访问

在这里插入图片描述

备注:若是想要使网页识别中文,需要输入< meta charset=“utf-8”>标签

查看抓包工具,得到验证

在这里插入图片描述

6.9.10 修改缓存时间,重新启动服务,刷新客户端网页,去查看数据

[root@localhost htdocs]# vim /etc/httpd.conf 
</IfModule>
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 30 seconds"
</IfModule>
[root@localhost htdocs]# apachectl restart

在这里插入图片描述

备注:

1.记得清除历史纪录

2.修改配置文件,需要重启服务

3.不支持systemctl 开启服务,可以使用service 开启服务

4.缓存的是静态数据,动态数据无法缓存

七:配置apache隐藏版本信息

7.1 apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患

7.2 生产环境中要配置apache隐藏版本信息

7.3 可使用Fiddler抓包工具分析

apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患

所以生产环境中要配置apache隐藏版本信息

7.4 配置apache隐藏版本信息

7.4.1 将主配置文件httpd.conf以下行注释去掉,开启子配置文件

  • #Include conf/extra/httpd-default.conf

7.4.2 修改httpd-default.conf文件两个地方

7.4.3 将ServersSignature On 修改为ServersSignature Off

7.5 重启httpd服务,访问网站,抓包测试

7.6 实验验证

7.6.1 在缓存时间的实验基础上开启额外子配置文件功能

[root@localhost httpd-2.4.29]# vim /usr/local/httpd/conf/httpd.conf
490 Include conf/extra/httpd-default.conf

7.6.2 修改子配置文件

[root@localhost httpd-2.4.29]# cd /usr/local/httpd/conf/
[root@localhost conf]# ls
extra  httpd.conf  magic  mime.types  original
[root@localhost conf]# vim extra/httpd-default.conf 
 55 ServerTokens Prod
 65 ServerSignature Off

7.6.3 在未重新启动服务时,版本信息是显示的

在这里插入图片描述

7.6.4 重启服务,刷新网页,发现看不见了

在这里插入图片描述
备注:systemctl restart httpd失败,需要先stop ,然后再start

或者apache restart 可以执行

八:配置apache实现防盗链

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

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

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

8.1 使用两台主机模拟盗链

  • 两台主机的配置与功能如下

在这里插入图片描述

8.2 盗链模拟步骤

  • 两台主机配置测试页面
  • 盗链网站的测试网页page盗用源主机page/image的一个logo.ipg文件
  • 在Windows中访问httpd://a.tet2.com/pafe.html,并用Fiddler抓包工具的查看效果图

8.3 检查apache是否安装了mod_rewrite模块

  • usr/local/apache/bin/apachectl -t -D DUMP_MODULES
  • 如果输出中没有rewrite_module(static),则说明编译时没有安装mod_rewrite模块

8.4 如果没有安装则要重新编译安装

  • ./configure --enable-rewrite
  • make && make install

8.5 配置规则变量说明

  • %{HTTPD_REFERER}:浏览header中的链接字段,存放一个链接的URL,代表是从哪个链接访问所需的网页
  • !^:不以后面的字符串开头
  • .$:以任意字符结尾
  • NC:不区分大小写
  • R:强制跳转

8.6 规则匹配说明

  • RewriteEngine On :打开网页重写功能
  • RewriteCond : 设置匹配规则
  • RewriteRule :设置跳转动作

8.7 规则匹配

  • 如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配

8.8 配置操作演示

8.8.1 修改配置启用防盗链功能并设置规则:

  • RewriteEngine On
  • RewriteCond %{HTTP_REFERER} !^h ttp://test.com/.$ [NC]
  • RewriteCond %{HTTP_REFERER} !^h ttp://test.com$ [NC]
  • RewriteCond %{HTTP_REFERER} !^h ttp://ww w.test.com/.$ [NC]
  • RewriteCond %{HTTP_REFERER} !^h ttp://ww w.test.com$ [NC]
  • RewriteRule .* \ .(gif|jpg|swf)$ ht tp://ww w.test.com/error.html [R,NC]

8.9 实验演示

8.9.1 挂载,解压文件

[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.254.10/linuxs /abc
Password for root@//192.168.254.10/linuxs:  
[root@localhost ~]# cd /abc/LAMP-C7/
[root@localhost LAMP-C7]# ls
apr-1.6.2.tar.gz         httpd-2.4.29.tar.bz2  php-5.6.11.tar.bz2
apr-util-1.6.0.tar.gz    LAMP-php5.6.txt
Discuz_X2.5_SC_UTF8.zip  mysql-5.6.26.tar.gz
[root@localhost LAMP-C7]# tar zxvf apr-1.6.2.tar.gz -C /opt
[root@localhost LAMP-C7]# tar zxvf apr-util-1.6.0.tar.gz -C /opt
[root@localhost LAMP-C7]# tar xjvf httpd-2.4.29.tar.bz2 -C /opt

8.9.2 修改文件

[root@localhost LAMP-C7]# cd /opt
[root@localhost opt]# ls
apr-1.6.2  apr-util-1.6.0  httpd-2.4.29  rh
[root@localhost opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
[root@localhost opt]# ls
httpd-2.4.29  rh

8.9.3安装编译包

[root@localhost opt]# yum install gcc gcc-c++ perl pcre pcre-devel expat-devel zlib-devel make -y
已安装:
  expat-devel.x86_64 0:2.1.0-10.el7_3      gcc.x86_64 0:4.8.5-39.el7           
  gcc-c++.x86_64 0:4.8.5-39.el7            pcre-devel.x86_64 0:8.32-17.el7     
  zlib-devel.x86_64 0:1.2.7-18.el7        

作为依赖被安装:
  cpp.x86_64 0:4.8.5-39.el7                                                     
  glibc-devel.x86_64 0:2.17-292.el7                                             
  glibc-headers.x86_64 0:2.17-292.el7                                           
  kernel-headers.x86_64 0:3.10.0-1062.9.1.el7                                   
  libmpc.x86_64 0:1.0.1-3.el7                                                   
  libstdc++-devel.x86_64 0:4.8.5-39.el7                                         

更新完毕:
  make.x86_64 1:3.82-24.el7            perl.x86_64 4:5.16.3-294.el7_6           

作为依赖被升级:
  glibc.x86_64 0:2.17-292.el7          glibc-common.x86_64 0:2.17-292.el7      
  libgcc.x86_64 0:4.8.5-39.el7         libgomp.x86_64 0:4.8.5-39.el7           
  libstdc++.x86_64 0:4.8.5-39.el7      perl-libs.x86_64 4:5.16.3-294.el7_6     
  zlib.x86_64 0:1.2.7-18.el7          

完毕!

8.9.4 配置apache参数,配置开启功能

[root@localhost httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate --enable-expires --enable-mods-shared=most --with-mpm=worker
configure: summary of build options:

    Server Version: 2.4.29
    Install prefix: /usr/local/httpd
    C compiler:     gcc -std=gnu99
    CFLAGS:          -g -O2 -pthread  
    CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE  
    LDFLAGS:           
    LIBS:             
    C preprocessor: gcc -E

或者这种版本

[root@localhost httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-deflate --enable-rewrite --enable-cgi --enable-charset-lite
configure: summary of build options:

    Server Version: 2.4.29
    Install prefix: /usr/local/httpd
    C compiler:     gcc -std=gnu99
    CFLAGS:          -g -O2 -pthread  
    CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE  
    LDFLAGS:           
    LIBS:             
    C preprocessor: gcc -E


8.9.5 make 安装

[root@localhost httpd-2.4.29]# make && make install
mkdir /usr/local/httpd/man
mkdir /usr/local/httpd/man/man1
mkdir /usr/local/httpd/man/man8
mkdir /usr/local/httpd/manual
make[1]: 离开目录“/opt/httpd-2.4.29”

8.9.6 优化相关脚本和主配置文件

[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost httpd-2.4.29]# 
[root@localhost httpd-2.4.29]# ls -l /etc/init.d/httpd 
lrwxrwxrwx. 1 root root 30 12月 17 18:22 /etc/init.d/httpd -> /usr/local/httpd/bin/apachectl
localhost httpd-2.4.29]# vim /etc/init.d/httpd 
  1 #!/bin/sh
  2 # chkconfig: 35 85 21
  3 # description: Apache is a World Wide Web server
[root@localhost httpd-2.4.29]# chkconfig --add httpd
[root@localhost httpd-2.4.29]# chkconfig --list httpd

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

httpd          	0:关	1:关	2:关	3:开	4:关	5:开	6:关

8.9.7 先不开启重写功能,测试盗链效果

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

 51 Listen 192.168.247.149:80
 52 #Listen 80
 198 ServerName www.kgc.com:80

[root@localhost httpd-2.4.29]# cp /abc/bzhw.png /usr/local/httpd/htdocs/
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
bzhw.png  index.html
[root@localhost htdocs]# vim index.html 

<html><body><h1>It works!</h1>
 <img src="bzhw.png"/>
</body></html>

[root@localhost htdocs]# systemctl stop firewalld.service 
[root@localhost htdocs]# setenforce 0
[root@localhost htdocs]# 
[root@localhost htdocs]# systemctl start httpd
Warning: httpd.service changed on disk. Run 'systemctl daemon-reload' to reload units.
[root@localhost htdocs]# systemctl daemon-reload
[root@localhost htdocs]# systemctl start httpd
[root@localhost htdocs]# 

8.9.8 客户端登陆

在这里插入图片描述

8.9.9 配置盗机:

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# 
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 
Listen 192.168.247.160:80
#Listen 80
Name www.accp.com:80

[root@localhost ~]# cd  /var/www/
[root@localhost www]# ls
cgi-bin  html
[root@localhost www]# cd html/
[root@localhost html]# ls
[root@localhost html]# vim index.html

[root@localhost ~]# systemctl start httpd.service 

在服务端配置dns服务,以便盗机和客户端解析

否则在盗链主机处不能输入域名

配置步骤就不详述了,之前的博客有介绍

[root@localhost htdocs]# yum install bind -y 
[root@localhost htdocs]# vim /etc/named.conf 
[root@localhost htdocs]# vim /etc/named.rfc1912.zones 
[root@localhost htdocs]# cd  /var/named/
[root@localhost named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# cp -p named.localhost kgc.com.zone
[root@localhost named]# vim kgc.com.zone 
[root@localhost named]# systemctl start named

备注:防火墙记得关

盗机配置:

[root@localhost html]# echo "nameserver 192.168.247.149" > /etc/resolv.conf 
[root@localhost html]# nslookup www.kgc.com
Server:		192.168.247.149
Address:	192.168.247.149#53

Name:	www.kgc.com
Address: 192.168.247.149
[root@localhost html]# vim index.html
<html><body><h1>It is daoji</h1>
 <img src="http://www.kgc.com/bzhw.png"/>
</body></html>
[root@localhost html]# systemctl restart httpd

再次查看,发现图已被盗

在这里插入图片描述

在这里插入图片描述

8.9.10这时管理员发现自己的图被盗了,要补救一下,开启防盗链功能

[root@localhost named]# vim /etc/httpd.conf 
156 LoadModule rewrite_module modules/mod_rewrite.so

在htdocs目录参数配置中加入配置

[root@localhost named]# vim /etc/httpd.conf 
223 <Directory "/usr/local/httpd/htdocs">
248     Require all granted
249     RewriteEngine On
250      RewriteCond %{HTTP_REFERER} !^http://kgc.com/.*$ [NC]
251      RewriteCond %{HTTP_REFERER} !^http://kgc.com$ [NC]
252      RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.*$ [NC]
253      RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/$ [NC]
254      RewriteRule .*\.(gif|jpg|swf|png)$ http://www.kgc.com/error.png
255 </Directory>

在/usr/local/httpd/htdocs/中,添加error.png文件

[root@localhost named]# cp /abc/error.png /usr/local/httpd/htdocs/
[root@localhost named]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
bzhw.png  error.png  index.html
[root@localhost htdocs]# 
[root@localhost htdocs]# apachectl -t
Syntax OK
[root@localhost htdocs]# apachectl -t -D DUMP_MODULES | grep "rewrite"
 rewrite_module (shared)

8.9.11 重启服务

[root@localhost bin]# apachectl stop
[root@localhost bin]# apachectl start

在这里插入图片描述

可以发现盗机无法再访问到我方的相关图片

发布了87 篇原创文章 · 获赞 26 · 访问量 4541

猜你喜欢

转载自blog.csdn.net/Lfwthotpt/article/details/103598956
今日推荐