基於Openresty+Naxsi的WAF:從小白到實踐

2019年2月18日,加入媽媽網,至今已經有四個月的時間,上週進到一個網關項目組,這個項目的主要目的是基於openResty+Naxsi實現WAF,相關技術初定涉及到openResty、Lua、Naxsi、es、Redis、php、Nginx、MySQL、consul、etcd,解決方案相似軟WAF的另外一種思路:基於Openresty+Naxsi的WAF實現
openResty、Lua、Naxsi、es、consul、etcd,這些技術對項目組的成員來講,基本上都是比較陌生的,對我本人來講更是徹底沒接觸過的,下面將會記錄我是如何對這些技術進行快速入門的,網關項目是如何一步一步搭建起來的。php

階段一

  • 瞭解openResty、Lua、Naxsi、es、consul、etcd是啥玩意?
    • OpenResty通常稱爲ngx_openresty, 目前有兩大應用目標:
      • 通用目的的 web 應用服務器。ngx_openresty 的性能(包括內存使用和 CPU 效率)算是最大的賣點之一。
      • Nginx 的腳本擴展編程,用於構建靈活的 Web 應用網關和 Web 應用防火牆。其優點在於 Lua 編程帶來的巨大靈活性。
    • Lua是一種強大的、高效的、輕量級的、可嵌入的腳本語言。它支持過程編程、面向對象編程、函數編程、數據驅動編程和數據描述。
    • Naxsi是一個開放源碼、高效、低維護規則的Nginx Web應用防火牆模塊。Naxsi的主要目標是幫助人們加固他們的web應用程序,以抵禦SQL注入、跨站腳本、跨域僞造請求、本地和遠程文件包含漏洞。
    • Elasticsearch 是一個分佈式的搜索和分析引擎,能夠用於全文檢索、結構化檢索和分析,並能將這三者結合起來。
    • etcd是一個開源的、分佈式的鍵值對數據存儲系統,提供共享配置、服務的註冊和發現
    • Consul是一個提供服務發現、健康檢查、K/V存儲和多個數據中心的開源服務發現工具
  • 這些技術之間是如何進行協同工做的?
    • 看懂軟WAF的思路:軟WAF的另外一種思路:基於Openresty+Naxsi的WAF實現
    • Naxsi在本WAF中主要實現基於http請求內容的防禦策略規則,用於防禦一些常見的漏洞,如:SQL注入攻擊 XSS攻擊 目錄遍歷漏洞 命令注入攻擊 虛擬補丁 掃描器攻擊等
    • Lua在本waf中主要負責實現相對複雜的安全防禦策略,如cc攻擊防禦、全局IP訪問頻率限制、特定url訪問頻率限制、ip黑白名單防禦、url白名單防禦、http請求轉發等功能。
    • ElasticSearch用於日誌管理
    • consul、etcd是配置管理工具,二選一,用於waf防禦策略分發,作到了配置文件有更新才push配置文件到nginx,而且reload nginx,避免了頻繁的reload nginx節點
  • 使用docker搭建OpenResty開發環境

階段二

  • 閱讀技術文檔,入門Lua
  • 閱讀技術文檔,入門OpenResty
  • 閱讀技術文檔,入門Naxsi
  • 閱讀技術文檔,入門ElaticSearch
  • 閱讀技術文檔,入門Consul、etcd
  • 尋找適合的Lua框架
  • 尋找適合的Lua包管理器

資料

Nginx與Lua編寫腳本的基本構建塊是指令
OpenResty(nginx+lua) 入門html

相關文章
相關標籤/搜索