序
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