摘 要

本指南描述如何利用京东云Web应用防火墙(简称WAF),对一个简单的网站(无论运行在京东云、其它公有云或者IDC)进行Web完全防护的全过程。该指南包括如下内容:

1 准备环境

1.1 在京东云上准备Web网站

1.2 购买京东云Web应用防火墙实例

2 配置Web应用防火墙

2.1 增加Web应用防火墙实例的网站配置

2.2 在云平台放行WAF回源IP

2.3 本地验证配置

2.4 修改域名解析配置

3 测试Web防护效果

3.1 发起正常访问

3.2 发起异常攻击

3.3 分析安全报表

4 环境清理

1 准备环境

1 .1 在京东云上准备Web网站

在京东云上选择CentOS系统创建一台云主机,分配公网IP,安装Nginx,并在域名解析服务上配置域名和IP的映射。具体的Web应用信息如下:

# 操作系统信息
[root@waf-demo ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) # 安装dig命令,该命令可显示域名的解析情况
bash
[root@waf-demo ~]# yum install bind-utils -y
[root@waf-demo ~]# dig -v
DiG 9.9.4-RedHat-9.9.4-72.el7 # Nginx服务信息
[root@waf-demo ~]# service nginx status
Redirecting to /bin/systemctl status nginx.service
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
...

在配置完域名和公网IP映射后,通过dig命令可获得域名解析情况。

[root@waf-demo ~]$ dig waf-demo.jdcoe.top +trace
...
waf-demo.jdcoe.top. 60 IN A 114.67.85.98
;; Received 63 bytes from 153.99.179.161#53(ns2.jdgslb.com) in 13 ms

通过互联网远程访问该Web网站。

MacBook:~ user001$ curl http://waf-demo.jdcoe.top -I
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Mon, 24 Dec 2018 03:22:21 GMT
Content-Type: text/html
Content-Length: 3700
Last-Modified: Tue, 06 Mar 2018 09:26:21 GMT
Connection: keep-alive
ETag: "5a9e5ebd-e74"
Accept-Ranges: bytes

1.2 购买京东云Web应用防火墙实例

进入京东云控制台,点击云安全, Web应用防火墙, 套餐购买, 进入"Web应用防火墙 - 购买“界面,选择需要企业版套餐(每种套餐规格请参考套餐详情)。具体的购买界面如下图:

在购买完成后,将在实例管理界面中看到所购买的实例信息。

2 配置Web应用防火墙

在使用京东云Web应用防火墙保护网站前,需要完成下列配置,才能实现用户提交的HTTP/HTTPS访问请求通过Web应用防火墙检测后,再发送到Web网站。

2.1 配置Web应用防火墙实例的防护网站

在Web应用防火墙界面,点击网站配置,添加网站, 在下面界面中输入相关配置信息。

界面参数具体描述如下:

域名:输入需要保护的网站的域名;

  • 协议:缺省选择HTTP,如果网站支持HTTPS,则选择HTTPS,并选择SSL证书;
  • 服务器地址:网站的IP;
  • 服务器端口:网站的访问端口;
  • 是否已使用代理:缺省选择"否",但如果网站还使用了IP高防服务,也就是访问请求来自于IP高防,则应选择“是";
  • 负载均衡算法:当配置多个源站IP,WAF在将过滤后的访问请求回源时,将按照IP Hash或轮询的方式去做负载均衡。

新创建的网站配置的防护设置是处于关闭状态,需要点击防护配置链接进入配置界面。

在网站防护配置界面中,设置Web应用攻击防护状态为On模式为防护,防护规则策略等级为严格。设置CC安全防护状态为On,模式为正常。

2.2 本地验证配置

在网站配置列表界面中,能获得为被防护网站生成的CNAME。针对域名“waf-demo.jdcoe.top",生成的WAF CNAME是
waf-demo.jdcoe.top-15f08249c274.jdcloudwaf.com.

通过执行ping命令,能获得Web应用防火墙的IP地址为101.124.23.163。

MacBook:etc user001$ ping waf-demo.jdcoe.top-15f08249c274.jdcloudwaf.com
PING waf-demo.jdcoe.top-15f08249c274.jdcloudwaf.com (101.124.23.163): 56 data bytes
64 bytes from 101.124.23.163: icmp_seq=0 ttl=49 time=57.525 ms
^C
--- waf-demo.jdcoe.top-15f08249c274.jdcloudwaf.com ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 57.525/57.525/57.525/0.000 ms

应用安全网站不允许通过生成的CNAME或者IP地址进行访问,如果直接访问,将报“Bad Request“错误。

MacBook:etc user001$ curl waf-demo.jdcoe.top-15f08249c274.jdcloudwaf.com
<h1> Bad Request </h1>MacBook:etc user001$
MacBook:etc user001$ curl 101.124.23.163
<h1> Bad Request </h1>MacBook:etc user001$

修改本机IP地址101.124.23.163和域名waf-demo.jdcoe.top的映射,在Linux下,域名配置文件为/etc/hosts。

1101.124.23.163 waf-demo.jdcoe.top

然后在本地执行如下命令“curl waf-demo.jdcoe.top -I”,将在显示Server是jfe,表明已经通过Web应用防火墙。

MacBook:~ user001$ curl waf-demo.jdcoe.top -I
HTTP/1.1 200 OK
Server: jfe
Date: Mon, 24 Dec 2018 07:12:03 GMT
Content-Type: text/html
Content-Length: 3700
Connection: keep-alive
Last-Modified: Tue, 06 Mar 2018 09:26:21 GMT
ETag: "5a9e5ebd-e74"
Accept-Ranges: bytes

此时,看Web的访问日志,将看到如下信息,表明请求已经通过Web应用防火墙,然后转发到Web源站。

1101.124.23.116 - - [24/Dec/2018:15:12:04 +0800] "HEAD / HTTP/1.0" 200 0 "-" "curl/7.54.0" "117.136.0.210"

2.3 在云平台放行WAF回源IP

在对源站配置了WAF服务后,源站原则上只能接收来自WAF的转发请求。网站云主机最初的安全组配置如下,这样任何客户端都可以直接访问Web网站。

通过curl命令能直接访问Web网站。

MacBook:~ user001$ curl 114.67.85.98 -I
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Mon, 24 Dec 2018 07:20:08 GMT
Content-Type: text/html
Content-Length: 3700
Last-Modified: Tue, 06 Mar 2018 09:26:21 GMT
Connection: keep-alive
ETag: "5a9e5ebd-e74"
Accept-Ranges: bytes

京东云WAF服务所采用的IP地址为如下:

101.124.31.248/30
101.124.23.116/30
14.116.246.0/29
103.40.15.0/29

因此需要在安全组中删除允许所有源IP都可访问Web网站的规则,并增加允许上述地址段可以访问Web网站的规则。修改后的安全组配置信息如下图:

这样Web网站将只接收来自WAF的请求,而不能直接访问。

# 不能直接访问源站
MacBook:~ user001$ curl 114.67.85.98 -I
^C
# 可以通过WAF服务访问源站
MacBook:~ user001$ curl waf-demo.jdcoe.top -I
HTTP/1.1 200 OK
Server: jfe
Date: Mon, 24 Dec 2018 07:52:19 GMT
Content-Type: text/html
Content-Length: 3700
Connection: keep-alive
Last-Modified: Tue, 06 Mar 2018 09:26:21 GMT
ETag: "5a9e5ebd-e74"
Accept-Ranges: bytes

2.4 修改域名解析配置

最后,需要在域名解析上修改原域名的解析规则,下面是京东云的云解析为例,配置域名waf-demo.jdcoe.top的CNAME为
waf-demo.jdcoe.top-15f08249c274.jdcloudwaf.com。

最后删除本机域名和IP地址的静态映射,然后执行dig命令,将看到为域名waf-demo.jdcoe.top配置的CNAME。

[root@waf-demo ~]# dig waf-demo.jdcoe.top +trace
...
waf-demo.jdcoe.top. 60 IN CNAME waf-demo.jdcoe.top-15f08249c274.jdcloudwaf.com.
;; Received 107 bytes from 59.37.144.32#53(ns1.jdgslb.com) in 28 ms

3 测试Web防护效果

3.1 发起正常访问

在一台机器上正常访问页面,能获得正常响应,同时在Web网站上能看到访问日志。

[root@jdcoe-bastion ~]# curl waf-demo.jdcoe.top/index.html -I
HTTP/1.1 200 OK
Server: jfe
Date: Mon, 24 Dec 2018 08:35:24 GMT
Content-Type: text/html
Content-Length: 3700
Connection: keep-alive
Last-Modified: Tue, 06 Mar 2018 09:26:21 GMT
ETag: "5a9e5ebd-e74"
Accept-Ranges: bytes

Nginx网站访问日志

101.124.31.248 - - [24/Dec/2018:16:35:24 +0800] "HEAD /index.html HTTP/1.0" 200 0 "-" "curl/7.29.0" "114.67.95.131"

3.2 发起异常攻击

下面模拟一个"文件读取/包含攻击",也就是说在HTTP请求中包含读取特定的系统问题。在无WAF防护的情况下,Web网站将返回如下信息:

[root@waf-demo ~]# curl localhost/index.html/etc/passwd -I
HTTP/1.1 404 Not Found
Server: nginx/1.12.2
Date: Mon, 24 Dec 2018 08:37:15 GMT
Content-Type: text/html
Content-Length: 3650
Connection: keep-alive
ETag: "5a9e5ebd-e42"

但是如果通过WAF防护,WAF将检测出请求中包含了对敏感文件访问,因此阻止该访问请求。

[root@jdcoe-bastion ~]# curl waf-demo.jdcoe.top/index.html/etc/passwd -I
HTTP/1.1 403 Forbidden
Server: jfe
Date: Mon, 24 Dec 2018 08:37:22 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive

3.3 安全分析报表

京东云WAF将根据配置阻断非法的HTTP请求,并通过安全报表获得攻击的来源和攻击类型的相关信息。下图是WAF实例下的waf-demo.jdcoe.top网站的防护报告。

4 环境清理

本指南会用到云主机、公网带宽和Web应用防火墙等收费资源。如果购买时采用按配置计费,建议删除资源。

总结:

本指南介绍了如何利用Web应用防火墙实现一个网站的安全防护。通过Web应用防火墙对HTTP/HTTPS请求的检测和过滤,减少因应用安全漏洞所造成的信息泄漏风险。

利用京东云Web应用防火墙实现Web入侵防护的更多相关文章

  1. 干货 | 利用京东云Web应用防火墙实现Web入侵防护

    摘要 本指南描述如何利用京东云Web应用防火墙(简称WAF),对一个简单的网站(无论运行在京东云.其它公有云或者IDC)进行Web完全防护的全过程.该指南包括如下内容: 准备环境 在京东云上准备Web ...

  2. 利用京东云擎架设免费Wordpress 博客(git方式)

    京东云擎(JAE)是京东推出的一款公有云产品,是京东云平台生态圈的核心组成部分.与百度的BAE.新浪的SAE同样.可是JAE刚上线不久,可能非常多人都还没听说过或不太了解.我尝试在JAE安装WordP ...

  3. 如何利用京东云的对象存储(OSS)上传下载文件

    作者:刘冀 在公有云厂商里都有对象存储,京东云也不例外,而且也兼容S3的标准因此可以利用相关的工具去上传下载文件,本文主要记录一下利用CloudBerry Explorer for Amazon S3 ...

  4. 利用京东云Serverless服务快速构建5G时代的IoT应用

    10月31日,在2019年中国国际信息通信展览会上,工信部宣布:5G商用正式启动.5G商用时代来了! 5G的商用,使得数据传输速度.响应速度.连接数据.数据传输量.传输可靠性等方面都有了显著的提升,这 ...

  5. Web应用防火墙云WAF详细介绍

    Web应用防火墙,或叫Web应用防护系统(也称为:网站应用级入侵防御系统.英文:Web Application Firewall,简称: WAF).利用国际上公认的一种说法:Web应用防火墙是通过执行 ...

  6. 干货 | 京东云应用负载均衡(ALB)多功能实操

    应用负载均衡(Application Load Balancer,简称ALB)是京东云自主研发的一款七层负载均衡产品,主要面向HTTP和HTTPS流量的WEB应用程序,提供灵活的功能配置.应用负载均衡 ...

  7. 阿里云Web应用防火墙采用规则引擎、语义分析和深度学习引擎相结合的方式防护Web攻击

    深度学习引擎最佳实践 {#concept_1113021 .concept} 阿里云Web应用防火墙采用多种Web攻击检测引擎组合的方式为您的网站提供全面防护.Web应用防火墙采用规则引擎.语义分析和 ...

  8. 利用iptables防火墙保护web服务器

    实例:利用iptables防火墙保护web服务器 防火墙--->路由器-->交换机-->pc机 配置之前,清空下已有的规则,放在规则冲突不生效 工作中,先放行端口写完规则,再DROP ...

  9. [转]Web应用防火墙WAF详解

    通过nginx配置文件抵御攻击 0x00 前言 大家好,我们是OpenCDN团队的Twwy.这次我们来讲讲如何通过简单的配置文件来实现nginx防御攻击的效果. 其实很多时候,各种防攻击的思路我们都明 ...

随机推荐

  1. Kubebuilder简介与架构

    什么是Kubebuilder Kubebuilder是一个用Go原因构建Kubernetes APIs的框架,通过使用KubeBuilder,用户可以遵循一套简单的编程框架,使用CRD构建API.Co ...

  2. NC15163 逆序数

    NC15163 逆序数 题目 题目描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数.比如一个序列为 \ ...

  3. Halcon 模板匹配实战代码(一)

    模板图片:目标是获取图像左上角位置的数字 直接想法,直接用一个框将数字框出来,然后对图片进行模板匹配(不可行,因为图像中的数字不是固定的) 所以需要选择图像中的固定不变的区域来作为模板,然后根据模板区 ...

  4. 时空图神经网路:STGNNs

    STGNNs:SPATIAL–TEMPORAL GRAPH NEURAL NETWORKS 许多实际应用中的图在图结构和图输入方面都是动态的.STGNNs在捕获图的动态性方面占有重要地位. 这类方法的 ...

  5. CSS进阶内容—浮动和定位详解

    CSS进阶内容-浮动和定位详解 我们在学习了CSS的基本知识和盒子之后,就该了解一下网页的整体构成了 当然如果没有学习之前的知识,可以到我的主页中查看之前的文章:秋落雨微凉 - 博客园 CSS的三种布 ...

  6. elementplus轮播图初始空白

    问题表现 初始轮播图出现大块空白,在规定的时间间隔后才会正常轮播出下一章图片 问题解决 动态数据添加图片,初次渲染dom因为数据还没有请求回来,所以会出现这样的bug,需要添加v-fi="l ...

  7. 如何编写测试团队通用的Jmeter脚本

    平时学习.工作过程中,编写的一些jmeter脚本,相信大多数都遇到过这个问题.那就是:如果换一台电脑运行,文件路径不一样,会导致运行失败. 前不久,自己就真真切切遇到过一回,A同学写了个脚本用于压测, ...

  8. httpdns是个什么技术,有什么用

    dns解析现状问题1:暴利的dns劫持 要说为啥会出现httpdns(先不用管意思,后面解释),那么,首先要说一下,现在的dns解析,是不是有啥问题? dns能有啥问题呢,就是输入一个域名xxx.co ...

  9. 2022-7-23 pan小堂 Object与Final

    Object类 1.Object方法 public final native Class<?> getClass() 返回object运行时类 public native int hash ...

  10. gotoscan:CMS指纹识别工具

    gotoscan 前言 项目地址 https://github.com/newbe3three/gotoscan 结合自己学习到的Go相关知识,通过实现这个简易的CMS指纹识别工具来锻炼一下自己写代码 ...