Apache 安全优化之防盗链+隐藏版本信息

一、防盗链简介

  • 防盗链就是防止别人的网站代码里面盗用服务器的图片文件、视频等相关资源
  • 如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
  • 所以作为网站的维护人员,要杜绝我们服务器的静态资源被其他网站盗用
  • HTTP标准协议中有专门的Referer 字段记录,它的作用如下:
    - 1、可以追溯上一个入站地址是什么;
    - 2、对于资源文件,可以追踪到包含显示它的网页地址是什么,因此所有防盗链方法都是基于Referer字段。

1.1、配置规则变量说明

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

1.2、规则匹配说明

  • RewriteEngine On :打开网页重写功能
  • RewriteCond :设置匹配规则
  • RewriteRule :设置跳转动作
  • 如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配

二、配置实例

2.1、环境准备

  • 一台linux虚拟机(192.168.220.137)
  • 一台linux虚拟机(192.168.220.134)作为盗链网站
  • 一台win10 作为测试客户端
  • 网站IP地址:192.168.220.137 域名:www.demo.com

2.2、盗链的操作

Apache安全优化虚拟机:192.168.220.137

1、手工编译apache,挂载共享文件,并解压到 /opt/目录下。

mount.cifs //192.168.56.1/share /mnt   #192.168.56.1是我的宿主机IP地址
#解压
tar -zxvf apr-1.4.6.tar.gz -C /opt/    
tar -zxvf apr-util-1.4.1.tar.gz -C /opt/
tar -zxvf httpd-2.4.2.tar.gz -C /opt/

#安装包优化
cd /opt
mv apr-1.4.6/ httpd-2.4.2/srclib/apr
mv apr-util-1.4.1/ httpd-2.4.2/srclib/apr-util

2、安装编译工具

yum install -y gcc gcc-c++ pcre pcre-devel zlib-devel

3、在 /opt/httpd-2.4.2 配置

./configure \
--prefix=/usr/local/httpd \
--enable-deflate \              
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi

4、make && make install

5、DNS解析配置:

#安装bind包
yum install -y bind

#1、DNS主配置文件
vim /etc/named.conf

在这里插入图片描述

#2、在DNS区域配置文件中添上以下内容:
vim /etc/named.rfc1912.zones

zone "demo.com" IN {
        type master;
        file "demo.com.zone";
        allow-update { none; };
};

在这里插入图片描述

#3、区域数据文件
cd /var/named
cp -p named.localhost demo.com.zone
vim demo.com.zone
www IN A 192.168.220.137

systemctl restart named

在这里插入图片描述
在win10 中验证DNS域名解析是否配置成功
在这里插入图片描述

6、打开Apache的主配置文件

#建立软链接优化路径
ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
vim /etc/httpd.conf 

#1、修改域名和监听地址
ServerName www.demo.com:80

Listen 192.168.220.137:80
#Listen 80

#验证apache是否启动
执行 /usr/local/httpd/bin/apachectl -t   
Syntax OK

7、开启apache服务,关闭防火墙

#开启apache
/usr/local/httpd/bin/apachectl start

systemctl stop firewalld
setenforce 0

8、给网页站点添加一张图片

#放一张图片到共享文件夹,再把图片复制到网页文件夹中。
cd /mnt/httpd
cp game.jpg /usr/local/httpd/htdocs/

cd /usr/local/httpd/htdocs/
#在index.html中引用图片
vim index.html
<html>
<body>
<h1>It works!</h1>
<img src="game.jpg"/>   #增添这一行,把图片加在网页中
</body>
</html>

这里做的是盗链模拟,接下来配置另一台盗链虚拟机:192.168.220.134
1、安装apache

yum install -y httpd

#盗取192.168.220.137的网页站点信息
cd /var/www/html
vim index.html
<html>
<body>
<h1>this is test web!</h1>
<img src="http://www.demo.com/game.jpg"/>   #增添这一行,把图片加在网页中
</body>
</html>
#开启服务,关闭防火墙
systemctl restart httpd

systemctl stop firewalld
setenforce 0

2、修改自己的DNS服务器地址

echo "nameserver 192.168.220.137" > /etc/resolv.conf

最终,在win10验证盗链过程
在这里插入图片描述
输入盗链地址:192.168.220.134
在这里插入图片描述

2.3、防盗链的具体操作

  • 在上面的操作中模拟了盗链站点的产生。
  • 站点不进行防盗链操作,网站服务器的图片文件、视频等相关资源会被随意盗用,极不安全。

我们的修改基于上面的内容
1、修改Apache的主配置文件

vim /etc/httpd.conf 

#1、Apache主配置开启模块
LoadModule rewrite_ module modules/ mod_ rewrite. so       //把注释去掉开启   

#2、配置文件末尾添加
<Directory "/usr/local/httpd/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
#增添部分:
 RewriteEngine On
   RewriteCond %{HTTP_REFERER} !^http://demo.com/.*$ [NC]
   RewriteCond %{HTTP_REFERER} !^http://demo.com$ [NC]
   RewriteCond %{HTTP_REFERER} !^http://www.demo.com/.*$ [NC]
   RewriteCond %{HTTP_REFERER} !^http://www.demo.com/$ [NC]
   RewriteRule .*\.(gif|jpg|swf)$ http://www.demo.com/error.png
</Directory>

2、把 error.png图片放到 /usr/local/httpd/htdocs/

cd /mnt/httpd  #挂载点存放的图片
cp error.png /usr/local/httpd/htdocs/

这是我的error.png图片
在这里插入图片描述
3、开启Apache,关闭防火墙

#验证apache是否启动
执行 /usr/local/httpd/bin/apachectl -t   
Syntax OK

#开启apache
/usr/local/httpd/bin/apachectl start
或者systemctl restart httpd

systemctl stop firewalld
setenforce 0

#验证模块
/usr/local/httpd/bin/apachectl -t -D DUMP_MODULES | grep "rewrite"
rewrite_module (shared)

到这里,我们的防盗链已经配置成功,接下来在win10进行验证
在这里插入图片描述
在这里插入图片描述

三、隐藏版本配置

配置Apache隐藏版本信息:

  • Apache的版本信息,透露出了一定的漏洞信息,在现网中如果不隐藏版本信息,外界知道Apache版本,会根据对应版本的漏洞进行攻击,所以这体现了隐藏版本信息的重要性。

  • 1、将主配置文件 httpd.conf 以下行注释去掉

Include conf/extra/httpd-default.conf

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

cd /usr/local/httpd/conf/extra

vim httpd-default.conf

ServerTokens Full  修改为 ServerTokens Prod
ServerSignature On 修改为 ServerSignature Off
#重启httpd 服务
systemctl restart httpd

访问网站,可以用 Fiddler工具 进行抓包测试
这时看不到版本信息了。
在这里插入图片描述

发布了69 篇原创文章 · 获赞 32 · 访问量 3433

猜你喜欢

转载自blog.csdn.net/qq_28361541/article/details/103581743