Linux運維:安全防禦OpenResty

1 OpenResty簡介

OpenResty是一個基於 Nginx 與 Lua 的高性能 Web 平臺,其內部集成了大量精良的 Lua 庫、第三方模塊以及大多數的依賴項。用於方便地搭建可以處理超高併發、擴展性極高的動態 Web 應用、Web 服務和動態網關。nginx

2 OpenSty安裝

系統環境說明:
[root@jranson ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
[root@jranson ~]# uname -r
3.10.0-693.21.1.el7.x86_64

安裝步驟:
一、安裝依賴包
yum install -y readline-devel pcre-devel openssl-devel  openssl-devel gcc 

二、下載軟件包
wget https://openresty.org/download/ngx_openresty-1.9.3.2.tar.gz --no-check-certificate

三、解壓
tar -zxvf ngx_openresty-1.9.3.2.tar.gz

四、進入目錄,初始化
cd ngx_openresty-1.9.3.2
./configure --prefix=/usr/local/openresty --with-luajit --with-http_stub_status_module --with-pcre --with-pcre-jit

五、編譯安裝
gmake
gmake install

3 功能列表

  • 支持白名單和黑名單功能,直接將黑名單的IP訪問拒絕。
  • 支持URL白名單,將不須要過濾的URL進行定義。
  • 支持User-Agent的過濾,匹配自定義規則中的條目,而後進行處理(返回403)。
  • 支持CC攻擊防禦,單個URL指定時間的訪問次數,超過設定值,直接返回403。
  • 支持Cookie過濾,匹配自定義規則中的條目,而後進行處理(返回403)。
  • 支持URL過濾,匹配自定義規則中的條目,若是用戶請求的URL包含這些,返回403。
  • 支持URL參數過濾,原理同上。
  • 支持日誌記錄,將全部拒絕的操做,記錄到日誌中去。
  • 日誌記錄爲JSON格式,便於日誌分析,例如使用ELKStack進行攻擊日誌收集、存儲、搜索和展現。

4 配置waf規則

一、克隆git項目
git clone https://github.com/unixhot/waf.git

二、拷貝至nginx配置文件目錄下
cp -a ./waf/waf /usr/local/openresty/nginx/conf/

三、編輯nginx配置文件,配置規則
vim /usr/local/openresty/nginx/conf/nginx.conf

四、在http塊配置裏面添加下列配置
http{
    lua_shared_dict limit 50m;
    lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua";
    init_by_lua_file "/usr/local/openresty/nginx/conf/waf/init.lua";
    access_by_lua_file "/usr/local/openresty/nginx/conf/waf/access.lua";

五、waf/config.lua文件能夠自定義規則,錯誤信息等。



六、檢查語法,啓動openresty
/usr/local/openresty/nginx/sbin/nginx -t
/usr/local/openresty/nginx/sbin/nginx

5 測試

在瀏覽器輸入ip/a.sql,若是沒有定義規則以前的web服務器,用戶瀏覽器會彈出一個下載文件的頁面。定義完規則的web服務器會自動匹配到規則,而後拒絕訪問,或者重定向到錯誤頁面等等。git

相關文章
相關標籤/搜索