乾貨 | 利用京東雲Web應用防火牆實現Web入侵防禦

摘要html

本指南描述如何利用京東雲Web應用防火牆(簡稱WAF),對一個簡單的網站(不管運行在京東雲、其它公有云或者IDC)進行Web徹底防禦的全過程。該指南包括以下內容:nginx

準備環境 在京東雲上準備Web網站 購買京東雲Web應用防火牆實例算法

配置Web應用防火牆 增長Web應用防火牆實例的網站配置 在雲平臺放行WAF回源IP 本地驗證配置 修改域名解析配置安全

測試Web防禦效果 發起正常訪問 發起異常攻擊 分析安全報表bash

準備環境服務器

1 在京東雲上準備Web網站負載均衡

在京東雲上選擇CentOS系統建立一臺雲主機,分配公網IP,安裝Nginx,並在域名解析服務上配置域名和IP的映射。具體的Web應用信息以下:curl

1# 操做系統信息
 2[root@waf-demo ~]# cat /etc/redhat-release 
 3CentOS Linux release 7.6.1810 (Core) 
 4
 5# 安裝dig命令,該命令可顯示域名的解析狀況
 6bash
 7[root@waf-demo ~]#  yum install bind-utils -y
 8[root@waf-demo ~]# dig -v
 9DiG 9.9.4-RedHat-9.9.4-72.el7
10
11# Nginx服務信息
12[root@waf-demo ~]# service nginx status
13Redirecting to /bin/systemctl status nginx.service
14● nginx.service - The nginx HTTP and reverse proxy server
15   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
16...

在配置完域名和公網IP映射後,經過dig命令可得到域名解析狀況。測試

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

經過互聯網遠程訪問該Web網站。網站

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

2 購買京東雲Web應用防火牆實例

進入京東雲控制檯,點擊雲安全, Web應用防火牆, 套餐購買, 進入"Web應用防火牆 - 購買「界面,選擇須要企業版套餐(每種套餐規格請參考套餐詳情)。具體的購買界面以下圖:

在購買完成後,將在實例管理界面中看到所購買的實例信息。

配置Web應用防火牆

在使用京東雲Web應用防火牆保護網站前,須要完成下列配置,才能實現用戶提交的HTTP/HTTPS訪問請求經過Web應用防火牆檢測後,再發送到Web網站。

1 配置Web應用防火牆實例的防禦網站

在Web應用防火牆界面,點擊網站配置,添加網站, 在下面界面中輸入相關配置信息。

界面參數具體描述以下:

  • 域名:輸入須要保護的網站的域名;
  • 協議:缺省選擇HTTP,若是網站支持HTTPS,則選擇HTTPS,並選擇SSL證書;
  • 服務器地址:網站的IP;
  • 服務器端口:網站的訪問端口;
  • 是否已使用代理:缺省選擇"否",但若是網站還使用了IP高防服務,也就是訪問請求來自於IP高防,則應選擇「是";
  • 負載均衡算法:當配置多個源站IP,WAF在將過濾後的訪問請求回源時,將按照IP Hash或輪詢的方式去作負載均衡。
  • 新建立的網站配置的防禦設置是處於關閉狀態,須要點擊防禦配置連接進入配置界面。

在網站防禦配置界面中,設置Web應用攻擊防禦狀態爲On模式爲防禦,防禦規則策略等級爲嚴格。設置CC安全防禦狀態爲On,模式爲正常。

2 本地驗證配置

在網站配置列表界面中,能得到爲被防禦網站生成的CNAME。針對域名「waf-demo.jdcoe.top",生成的WAF CNAME是waf-demo.jdcoe.top-15f08249c274.jdcloudwaf.com.

經過執行ping命令,能得到Web應用防火牆的IP地址爲101.124.23.163。

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

應用安全網站不容許經過生成的CNAME或者IP地址進行訪問,若是直接訪問,將報「Bad Request「錯誤。

1MacBook:etc user001$ curl waf-demo.jdcoe.top-15f08249c274.jdcloudwaf.com
2<h1> Bad Request </h1>MacBook:etc user001$ 
3MacBook:etc user001$ curl 101.124.23.163
4<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應用防火牆。

1MacBook:~ user001$ curl waf-demo.jdcoe.top -I
 2HTTP/1.1 200 OK
 3Server: jfe
 4Date: Mon, 24 Dec 2018 07:12:03 GMT
 5Content-Type: text/html
 6Content-Length: 3700
 7Connection: keep-alive
 8Last-Modified: Tue, 06 Mar 2018 09:26:21 GMT
 9ETag: "5a9e5ebd-e74"
10Accept-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"

3 在雲平臺放行WAF回源IP

在對源站配置了WAF服務後,源站原則上只能接收來自WAF的轉發請求。網站雲主機最初的安全組配置以下,這樣任何客戶端均可以直接訪問Web網站。

經過curl命令能直接訪問Web網站。

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

京東雲WAF服務所採用的IP地址爲以下:

1101.124.31.248/30 2101.124.23.116/30 314.116.246.0/29 4103.40.15.0/29

所以須要在安全組中刪除容許全部源IP均可訪問Web網站的規則,並增長容許上述地址段能夠訪問Web網站的規則。修改後的安全組配置信息以下圖:

這樣Web網站將只接收來自WAF的請求,而不能直接訪問。

1# 不能直接訪問源站
 2MacBook:~ user001$ curl 114.67.85.98 -I
 3^C
 4# 能夠經過WAF服務訪問源站
 5MacBook:~ user001$ curl waf-demo.jdcoe.top -I
 6HTTP/1.1 200 OK
 7Server: jfe
 8Date: Mon, 24 Dec 2018 07:52:19 GMT
 9Content-Type: text/html
10Content-Length: 3700
11Connection: keep-alive
12Last-Modified: Tue, 06 Mar 2018 09:26:21 GMT
13ETag: "5a9e5ebd-e74"
14Accept-Ranges: bytes

4 修改域名解析配置

最後,須要在域名解析上修改原域名的解析規則,下面是京東雲的雲解析爲例,配置域名waf-demo.jdcoe.top的CNAME爲 waf-demo.jdcoe.top-15f08249c274.jdcloudwaf.com。

最後刪除本機域名和IP地址的靜態映射,而後執行dig命令,將看到爲域名waf-demo.jdcoe.top配置的CNAME。

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

測試Web防禦效果

1 發起正常訪問

在一臺機器上正常訪問頁面,能得到正常響應,同時在Web網站上能看到訪問日誌。

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

Nginx網站訪問日誌

1101.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"

2 發起異常攻擊

下面模擬一個"文件讀取/包含攻擊",也就是說在HTTP請求中包含讀取特定的系統問題。在無WAF防禦的狀況下,Web網站將返回以下信息:

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

可是若是經過WAF防禦,WAF將檢測出請求中包含了對敏感文件訪問,所以阻止該訪問請求。

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

3 安全分析報表

京東雲WAF將根據配置阻斷非法的HTTP請求,並經過安全報表得到攻擊的來源和攻擊類型的相關信息。下圖是WAF實例下的waf-demo.jdcoe.top網站的防禦報告。

環境清理

本指南會用到雲主機、公網帶寬和Web應用防火牆等收費資源。若是購買時採用按配置計費,建議刪除資源。

總結: 本指南介紹瞭如何利用Web應用防火牆實現一個網站的安全防禦。經過Web應用防火牆對HTTP/HTTPS請求的檢測和過濾,減小因應用安全漏洞所形成的信息泄漏風險。

歡迎點擊「連接」瞭解更多精彩內容

相關文章
相關標籤/搜索