一、盜鏈與防盜鏈
盜鏈:指B網站將A網站中的一些資源的鏈接地址貼到B網站中。常常是一些名不見經傳的小網站來盜取一些有實力的大網站的地址(比如一些音樂、圖片、軟件的下載地址)然後放置在自己的網站中。
防盜鏈: WEB應用防火牆通過實現URL級別的訪問控制,對客戶端請求進行檢測,如果發現圖片、文件等資源信息的HTTP請求來自於其它網站,則阻止盜鏈請求,節省因盜用資源鏈接而消耗的帶寬和性能
主機 | 角色 |
---|---|
server4(172.25.2.4) | 盜鏈服務器 |
server1(172.25.2.1) | 被盜鏈服務器 |
真機(172.25.2.250) | 客戶端 |
1.1 模擬盜鏈(server4盜取server1)
1、server4主機(盜鏈主機)上進行的操作如下:
[root@server4 ~]# yum install gcc pcre-devel zlib-devel -y
[root@server4 ~]# tar zxf nginx-1.17.4.tar.gz
[root@server4 ~]# yum install gd-devel-2.0.35-26.el7.x86_64.rpm -y
[root@server4 ~]# cd nginx-1.17.4
[root@server4 ~]# ./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --with-http_image_filter_module=dynamic --with-http_realip_module
[root@server4 ~]# make && make install
[root@server4 ~]# vim /usr/local/nginx/conf/nginx.conf
35 server {
36 listen 80;
37 server_name daolian.ranran.org;
38
39 charset utf-8;
40
41 #access_log logs/host.access.log main;
42
43 location / {
44 root /web;
45 index index.html index.htm;
46 }
[root@server4 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@server4 ~]# nginx -t
[root@server4 ~]# nginx
[root@server4 ~]# mkdir /web
[root@server4 ~]# vim /web/index.html
daolian.ranran.org
[root@server4 ~]# vim /etc/hosts
172.25.2.4 server4 daolian.ranran.org
[root@server4 ~]# curl daolian.ranran.org
daolian.ranran.org
[root@server4 ~]# vim /web/index.html
<html>
<body>
<br>盜鏈圖片</br>
<img src="http://www.ranran.org/download/vim.jpg">
</body>
</html>
2、在server1主機(被盜鏈主機)上進行如下操作:
cp /usr/local/nginx/html/download/vim.jpg /web/
3、瀏覽器訪問http://daolian.westos.org/
1.2 nginx服務設置防盜鏈
1、在被盜方(server1端)編輯nginx.conf文件
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf #在該server模塊中添加158-163行的設置
139 server {
140 listen 80;
141 server_name www.ranran.org bbs.ranran.org;
142 #rewrite ^/(.*)$ https://www.ranran.org/$1 permanent;
143 #rewrite ^/bbs$ http://bbs.ranran.org/ permanent;
144 #rewrite ^/bbs/(.*)$ http://bbs.ranran.org/$1 permanent;
145 if ($host = "bbs.westos.org"){
146 rewrite ^/(.*)$ http://www.ranran.org/bbs/$1 permanent;
147 }
148 #set_real_ip_from 172.25.2.0/24;
149 #real_ip_header X-Forwarded-For;
150 #real_ip_recursive on;
151
152 location / {
153 #return 200 "client real ip: $remote_addr\n";
154 root /web;
155 index index.html;
156 }
157
158 location ~* \.(gif|jpg|png|jpeg)$ {
159 root /web;
160 valid_referers none blocked xin.westos.org;
161 if ($invalid_referer) {
162 return 403;
163 }
164 }
165 }
[root@server1 ~]# /usr/local/nginx/sbin/nginx -s reload #修改完配置文件之後,重載nginx服務
2、瀏覽器訪問http://daolian.ranran.org/
雖然防盜鏈配置成功了,但是,我們會發現,該web界面並不是直觀明瞭。
3、在被盜方(server1端)編輯nginx.conf文件
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf #將162行註釋,添加163行的內容
139 server {
140 listen 80;
141 server_name www.ranran.org bbs.ranran.org;
142 #rewrite ^/(.*)$ https://www.ranran.org/$1 permanent;
143 #rewrite ^/bbs$ http://bbs.ranran.org/ permanent;
144 #rewrite ^/bbs/(.*)$ http://bbs.ranran.org/$1 permanent;
145 if ($host = "bbs.westos.org"){
146 rewrite ^/(.*)$ http://www.ranran.org/bbs/$1 permanent;
147 }
148 #set_real_ip_from 172.25.2.0/24;
149 #real_ip_header X-Forwarded-For;
150 #real_ip_recursive on;
151
152 location / {
153 #return 200 "client real ip: $remote_addr\n";
154 root /web;
155 index index.html;
156 }
157
158 location ~* \.(gif|jpg|png|jpeg)$ {
159 root /web;
160 valid_referers none blocked www.ranran.org;
161 if ($invalid_referer) {
162 #return 403;
163 rewrite ^/ http://bbs.ranran.org/daolian.jpg;
164 }
165 }
166 }
[root@server1 ~]# /usr/local/nginx/sbin/nginx -s reload #修改完配置文件之後,重載nginx服務
4、下載圖片daolian.jpg,並將該圖片防止/web/bbs目錄下
[root@server1 ~]# ls /web/bbs/
daolian.jpg index.html
5、測試:瀏覽器訪問http://daolian.ranran.org/