1.安全方法

1.SQL注入
2.xss
3.不安全下载 code_backup.tar.gz .sql
4.隐私文件访问  .svn .git
5.弱口令
6.非授权访问
7.CC攻击  性能CC攻击
8.DDOS攻击   方法:扛,等

 2.nginx防御

1.CC攻击:频率限制
2.不安全下载:判断后缀
3.非授权访问:后缀,认证
4.测试防护:根据UA
5.IP黑名单

 3.nginx waf防护

支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝。
支持URL白名单,将不需要过滤的URL进行定义。
支持User-Agent的过滤,匹配自定义规则中的条目,然后进行处理(返回403)。
支持CC攻击防护,单个URL指定时间的访问次数,超过设定值,直接返回403。
支持Cookie过滤,匹配自定义规则中的条目,然后进行处理(返回403)。
支持URL过滤,匹配自定义规则中的条目,如果用户请求的URL包含这些,返回403。
支持URL参数过滤,原理同上。
支持日志记录,将所有拒绝的操作,记录到日志中去。
日志记录为JSON格式,便于日志分析,例如使用ELKStack进行攻击日志收集、存储、搜索和展示。

 4.waf实现原理

WAF一句话描述,就是解析HTTP请求(协议解析模块),规则检测(规则模块),做不同的防御动作(动作模块),并将防御过程(日志模块)记录下来。所以本文中的WAF的实现由五个模块(配置模块、协议解析模块、规则模块、动作模块、错误处理模块)组成。

5.nginx waf安装

yum install openssl-devel openssl -y
useradd -r nginx -s /sbin/nologin

# 安装nginx正则包
cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
tar -zxvf pcre-8.39.tar.gz
cd pcre-8.39
./configure
make
make install

# 安装LuaJIT是Lua即时编译器
cd /usr/local/src
wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
tar -zxvf LuaJIT-2.0.4.tar.gz
cd LuaJIT-2.0.4
make
make install
ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2

cd /usr/local/src
wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
tar -zxvf v0.3.0.tar.gz

cd /usr/local/src
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.6.tar.gz
tar -zxvf v0.10.6.tar.gz

# 安装nginx_check插件
wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
unzip master

cd /usr/local/src
wget http://nginx.org/download/nginx-1.10.2.tar.gz
tar -zxvf nginx-1.10.2.tar.gz
cd nginx-1.10.2

# nignx插件补丁
patch -p0 < ../nginx_upstream_check_module-master/check_1.9.2+.patch

export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0/

./configure --prefix=/usr/local/nginx-1.10.2 \
--user=nginx --group=nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-file-aio \
--with-http_gzip_static_module \
--add-module=../ngx_devel_kit-0.3.0/ \
--add-module=../lua-nginx-module-0.10.6/ \
--add-module=../nginx_upstream_check_module-master/ \
--with-pcre=/usr/local/src/pcre-8.39 \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
--with-http_realip_module \
--with-http_geoip_module


# grep -c ^processor /proc/cpuinfo
# n=`grep -c ^processor /proc/cpuinfo`
# make -j$n

make
make install
ln -s /usr/local/nginx-1.10.2/ /usr/local/nginx

 

6.下载waf,并配置

cd /usr/local/nginx/conf/
wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip --no-check-certificate
unzip master
mv ngx_lua_waf-master waf

7.配置nginx.conf文件,在nginx.conf的http段添加

vim /usr/local/nginx/conf/nginx.conf

    lua_package_path "/usr/local/nginx/conf/waf/?.lua";
    lua_shared_dict limit 10m;
    init_by_lua_file  /usr/local/nginx/conf/waf/init.lua; 
    access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;


......
        location /hello {
                default_type 'text/plain';
                content_by_lua 'ngx.say("hello,lua")';
         }
.......

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

 7.测试:

Nginx防火墙多少钱 nginx免费防火墙_lua

Nginx防火墙多少钱 nginx免费防火墙_lua_02

 8.配置文件详细说明

RulePath = "/usr/local/nginx/conf/waf/wafconf/"
    --规则存放目录
    attacklog = "off"
    --是否开启攻击信息记录,需要配置logdir
    logdir = "/usr/local/nginx/logs/hack/"
    --log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限
    UrlDeny="on"
    --是否拦截url访问
    Redirect="on"
    --是否拦截后重定向
    CookieMatch = "on"
    --是否拦截cookie攻击
    postMatch = "on" 
    --是否拦截post攻击
    whiteModule = "on" 
    --是否开启URL白名单
    black_fileExt={"php","jsp"}
    --填写不允许上传文件后缀类型
    ipWhitelist={"127.0.0.1"}
    --ip白名单,多个ip用逗号分隔
    ipBlocklist={"1.0.0.1"}
    --ip黑名单,多个ip用逗号分隔
    CCDeny="on"
    --是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dict limit 10m;)
    CCrate = "100/60"
    --设置cc攻击频率,单位为秒.
    --默认1分钟同一个IP只能请求同一个地址100次
    html=[[Please go away~~]]
    --警告内容,可在中括号内自定义
    备注:不要乱动双引号,区分大小写