天天看點

最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

一、前言

當我們面對定點滲透測試,重大活動保障時的挑戰和平時是不一樣的,要求更高的安全防護等級。滲透測試攻擊方往往是一個團隊,從踩點資訊收集到漏洞利用整個過程都對業務系統具有高度針對性,投入的時間和資源往往是普通攻擊者和自動攻擊工具的數倍。重大活動保障期間公衆對業務站點關注度往往也是平時的幾倍甚至幾十倍,任何成功的入侵事件都有可能造成嚴重的影響,例如将站點熱點内容改成涉政涉恐、反動、色情等資訊,或盜取客戶和商業資料,不僅對業務所屬機構造成反面影響,甚至管理者會被追究刑事責任。

本文檔主要是針對此類場景,通過對阿裡雲Web應用防火牆在過去參與過的衆多重點活動保障總結,形成的一個具有實操價值的手冊,希望對大家有所幫助。需要注意的是WAF隻是整個防護體系中非常重要和有效的一環,并不能完全抵禦住攻擊者的所有攻擊方式,如實體攻擊、郵件欺詐、暴力破解遠端登入等。

二、WAF接入

本文主要介紹安全政策相關的配置,WAF的基礎接入不做詳細介紹,參考官方幫助文檔即可:

https://help.aliyun.com/document_detail/45251.html

三、防護政策最佳實踐

(一)政策配置和優化流程

最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

安全政策優化流程

說明:

域名接入WAF後的預設政策防護并非是最嚴格的狀态,而是在防護效果和誤攔截之間取的一個良好的平衡,我們這裡根據上面的流程圖将政策在沒有誤攔截的情況下調整到最嚴格,達到較好的防護狀态。

  1. 域名接入WAF
  2. 在各個防護功能預警模式下将政策調整到最嚴格
  3. 觀察是否出現誤攔截,如果是則需進行政策優化,直到沒有誤攔截
  4. 切換到攔截模式進行防護

(二)觀察模式下的嚴格政策推薦配置

1.Web應用攻擊防護

  • 狀态:開啟
  • 模式:預警
  • 防護規則政策:嚴格規則
最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

說明:Web應用防火牆預設将規則按照嚴格程度高低,分成3個規則集,分别是嚴格、正常、寬松,對應不同的防護能力和誤報水準,推薦預設使用嚴格模式,觀察誤報情況,如果出現誤報使用自定義規則組将導緻誤報的規則排除掉即可。

2.CC安全防護

  • 模式:正常
  • 自定義規則:開啟
最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

CC防護最佳實踐:

  1. 對于重要的接口,可以配置合理的IP限速政策并配合攔截動作:
最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐
  1. 對于重要的靜态頁面,可以設定較低的單IP通路門檻值并配合人機識别防護,因人機識别即使觸發後也不會直接攔截,使用正常浏覽器的使用者依然能夠正常通路;
  2. 請注意完全比對和字首比對的差別:如實際的防護接口為/index.php?action=login,則配置完全比對“/index.php?action=login”或者字首比對“/index.php”都可以比對到;
  3. 不要對API、APP業務選擇緊急模式,會産生大量誤殺。普通網頁(包括H5)在攻擊量很大攔截效果不佳的情況下可以嘗試開啟緊急模式;
  4. 重點的IP(如公司出口)和接口(如支付回調接口)等為了避免誤傷,建議在上線之初在精準通路控制中進行加白,選擇放行且後續不繼續執行CC防護:
最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

3.大資料深度學習引擎

最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

4.精準通路控制

  • 說明:規則根據實際需要配置,例如對站點背景做通路控制隻允許特定IP通路,添加IP黑名單來封禁惡意IP等。
最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

5.封禁地區

  • 說明:根據實際需要配置,例如隻對境内使用者提供服務可以對海外的IP進行封禁,實際場景中的攻擊IP往往是來自海外。
最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐
最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐
最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

6.高頻Web攻擊IP自動封禁

  • 政策建議值:60秒内Web攻擊超過3次,封禁IP 1800秒

    說明:防護自動化工具攻擊,通過定義攻擊的頻次來識别自動化攻擊事件,阻斷來源IP。

7.目錄掃描防護

  • 政策建議值:預設
最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐
最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

8.掃描威脅情報

  • 掃描工具封禁:開啟
  • 協同防禦:開啟

    說明:内置阿裡雲全球攻擊IP情報庫,攔截攻擊過其它使用者的IP位址。

最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

9.主動防禦

  • 說明:開啟後WAF會開始學習該域名的一段時間(取決于流量大小)曆史流量,生成一套針對域名合法流量基線的定制白名單規則,可以做到隻放行合法的請求。
最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

(三)誤攔截和政策優化

1.命中正則規則誤攔截處理

說明:此類正則規則引發的誤攔截可以通過安全報表中的規則ID使用自定義規則組将導緻誤報的規則去掉即可。

最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

2.命中深度學習模型導緻的誤攔截處理

說明:大資料深度學習導緻誤攔截機率較小,一般不會有誤攔截的情況,如果有遇到歡迎及時向我們回報。

3.命中主動防禦導緻的誤攔截處理

說明:主動防禦使用流量白基線,是以當部分流量沒有被模型學習到時需要手動定義合法流量規則。

最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

主動防禦的防護邏輯

(四)開啟攔截

注意:確定在觀察模式下政策優化之後無誤攔截後再将以下功能子產品切換到防護模式

a)模式切換到“防護”狀态

最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

2.大資料深度學習引擎

最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

3.主動防禦

最佳實踐:WAF在重保場景下的防護政策一、前言二、WAF接入三、防護政策最佳實踐

4.重保過程中的營運技巧:通過API調用WAF功能快速處置

每個Web應用防火牆的功能都有對應的API提供批量化或者快速操作。

Web應用防火牆的API幫助文檔見:

https://help.aliyun.com/document_detail/86349.html

API線上調試見:

https://api.aliyun.com/#/?product=waf-openapi
#!/usr/bin/env python
#coding=utf-8

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
client = AcsClient('這裡填AccessKey', '這裡填SecretKey, 'default')
import json
import sys
import re

def get_waf_instance():#擷取賬号下WAF的執行個體名稱
    request = CommonRequest()
    request.set_accept_format('json')
    request.set_domain('wafopenapi.cn-hangzhou.aliyuncs.com')
    request.set_method('POST')
    request.set_protocol_type('https')  # https | http
    request.set_version('2018-01-17')
    request.set_action_name('DescribePayInfo')

    response = client.do_action(request)
    # python2:  print(response)
    # print(response)
    aa = json.loads(response)
    return aa['Result']['InstanceId']           
def add_aclrule(waf_instance, rules, domian):#添加ACL實作
    request = CommonRequest()
    request.set_accept_format('json')
    request.set_domain('wafopenapi.cn-hangzhou.aliyuncs.com')
    request.set_method('POST')
    request.set_protocol_type('https')  # https | http
    request.set_version('2018-01-17')
    request.set_action_name('CreateAclRule')

    request.add_query_param('Rules', rules)
    request.add_query_param('Domain', domian)
    request.add_query_param('InstanceId', waf_instance)
    request.add_query_param('Region', "cn-hongkong") # 海外域名,國内域名請注釋掉該行
    response = client.do_action(request)
    # python2:  print(response)
    # print(response)           
if __name__ == '__main__':#從IP檔案清單(一行一個IP)讀取IP,每條ACL添加50個IP/IP段
    try :
        domain = sys.argv[1]
        ipfile = sys.argv[2]
        waf_instance = get_waf_instance()
        iplist = open(ipfile,'r')
        ip_string = iplist.read()
        ip_list = ip_string.split(',')
        l = [i for i in range(len(ip_list))]
        n = 50  # 按照每條ACL添加50個IP對檔案内容切分
        a = [l[i:i + n] for i in range(0, len(l), n)]
        for x in a:
            dd = ip_list[x[0]:x[-1]+1]
            tmp = ','.join(dd)
            rules = '''{
          "conditions": [
            {
              "key": "IP",
              "contain": 1,
              "value": "''' + tmp +'''"
            }
          ],
          "continueComponent": {
            "post_action_cc": 1,
            "post_action_waf": 1,
            "post_action_sa": 1,
            "post_action_block_geo": "0",
            "post_action_data_risk_control": "1"
          },
          "action": "0",
          "name": "block_'''+ dd[0] + '''"
        }'''
            add_aclrule(waf_instance, rules, domain)
            print tmp + ' add succes'
    except Exception,e:
        print "Usage: waf_options.py domain ipfile.txt"           

腳本中用到的庫安裝:

https://help.aliyun.com/document_detail/53090.html

e)附加:推薦配置對照表

功能名稱 是否開啟 建議政策
Web應用攻擊防護 嚴格規則
CC安全防護 正常政策,自定義規則根據需求配置
大資料深度學習引擎
精準通路控制 通路控制規則根據需求配置
封禁地區 封禁業務提供服務以外的區域
網站防篡改
資料風控
防敏感資訊洩露
高頻Web攻擊自動封禁 60秒内Web攻擊超過3次,封禁IP 1800秒
目錄掃描防護 10秒内請求總次數超過50次且404狀态碼比例大餘70%封禁1800秒
掃描威脅情報
主動防禦

繼續閱讀