宝塔+云锁Nginx自编译web防护教程(IN-APP WAF)

对于非宝塔面板用户,也可以使用本教程进行编译,过程是一样的,只需要修改路径为正确路径即可。

编译教程

宝塔用户请直接跳到第三步。

1、配置编译环境,宝塔面板默认已有环境,无需再安装。
yum install -y gcc gcc-c++ pcre-devel openssl openssl-devel

2、查看nginx位置
ps -elf | grep nginx

3、进入宝塔nginx目录
cd /www/server/nginx/sbin/
说明:如果你不是宝塔用户,或者宝塔并不是安装在/www下,请执行第二步获取实际位置。

4、备份nginx
cp nginx nginx.bak
说明:备份的目的是如果自编译出现问题,可以将nginx还原为原有版本,防止业务瘫痪,如果你是宝塔面板,可以忽略这一步,因为宝塔的特性,如果编译出现问题,可以在宝塔直接重装nginx,且网站数据和配置不受影响,非宝塔用户请一定要备份,以免出现问题后无法补救。

5、进入root目录
cd /root

6、下载云锁防护模块压缩包
wget https://codeload.github.com/yunsuo-open/nginx-plugin/zip/master -O nginx-plugin-master.zip

7、解压云锁防护模块压缩包
unzip nginx-plugin-master.zip

8、查看宝塔编译好的nginx加载模块,在重新编译加载云锁防护模块的时候仍需加载这些模块
nginx -V
注意这个命令是大写的V,如果小写v是不会显示模块的

9、将./configure arguents:之后的内容复制到记事本备用。

10、进入nginx源码目录,对nginx进行重新编译,操作之前请确认自己的nginx是编译模式安装的,而不是宝塔面板的极速安装,极速安装不存在src目录,也无法进行二次编译
cd /www/server/nginx/src
说明:如果你不是宝塔用户,或者宝塔并不是安装在/www下,请执行第二步获取实际位置,然后cd 实际路径。

11、编译内容
./configure 上一步记事本中的备用内容 --add-module=/root/nginx-plugin-master

./configure和记事本复制的内容之间有个空格,后面的--add-module前面也有个空格。

例如:我的nginx编译的指令是:

./configure --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --add-module=/root/nginx-plugin-master

 

等待命令结束,需要修改objs/Makefile文件和objs/ngx_modules.c来支持post过滤和内容过滤。

12、首先,在Makefile文件中的CFLAGS=...-Werror -g后追加宏定义 -DHIGHERTHAN8

CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -DHIGHERTHAN8

宝塔用户可以用宝塔面板打开/www/server/nginx/src/objs/(说明:如果你的宝塔没有更改过安装路径,可以直接执行本步骤,如果你更改了宝塔安装路径或非宝塔用户,请修改正确。)找到makefile,使用宝塔编辑器进行修改,非宝塔用户或对linux命令行较为熟悉的用户可以通过vi命令使用vim修改,然后,将ngx_modules.c中的&ngx_http_yunsuo_module,向下移动到ngx_http_userid_filter_module和ngx_http_headers_filter_module之间(已在此之间的则可忽略)。

请注意:这两个文件的修改非常重要,如果没有修改,会导致云锁防护不完整,其中makefile文件的宏定义和post过滤有关,如果没有追加宏定义,无法检测post提交内容,会造成防护失效,ngx_modules.c和云锁的敏感词过滤·功能有关,如果不修改,会导致该功能失效,需要注意的是,如果nginx开启了G-ZIP,该功能一样会失效。

13、修改完成后,输入编译命令
make

14、等待编译完成(根据服务器性能不同,在10分钟左右)完成后将系统中原有的nginx用重新编译生成的nginx文件替换

15、停止nginx
service nginx stop

16、删除原来的nginx
rm -rf /www/server/nginx/sbin/nginx
说明:如果你的宝塔没有更改过安装路径,可以直接执行本步骤,如果你更改了宝塔安装路径或非宝塔用户,请修改为正确的路径。

17、复制新编译的nginx
cp /www/server/nginx/src/objs/nginx /www/server/nginx/sbin/
说明:如果你的宝塔没有更改过安装路径,可以直接执行本步骤,如果你更改了宝塔安装路径或非宝塔用户,请修改为正确的路径。

18、启动nginx
service nginx start

通过PC端登陆云锁,PC端刷新后可以看到云锁nginx插件已经亮起(由灰色变为绿色)

19、点击nginx后方的绿色自编译图标,选择“网站漏洞防护”

20、将右上角的防护模式修改为“防护模式”

21、点击上方菜单栏中的“系统防护”并点击“防护开关”

22、将开关全部修改为开启

23、输入你的网址后面加上/?order%20by,测试云锁

出现以上拦截页面即代表成功开启防护,如没有出现拦截页面,请检查云锁是否处于监控模式,修改为防护模式即可。

常见问题:

1.为什么编译成功了但是访问/? order by,测试发现无法拦截?
答:云锁的防护功能均默认关闭,需要手动打开才可防护,点击云锁PC控制端主页的功能快捷设置区的“网站漏洞防护”按钮,进入后在右上角的防护级别选择到“防护模式”即可;

2.为什么云锁的IP黑名单、网络层CC防护失效、云锁防篡改也无效?
答:云锁防护默认关闭,需要手动开启,请依次点击云锁PC控制端主页上方菜单栏的“系统防护”选项。然后选择“防护开关”将其中所有开关均打开即可。

3.访问网站出现:“您所提交的请求含有不合法的参数,已被网站管理员设置拦截!”是怎么回事?
答:这是云锁帮你成功拦截了攻击而对攻击者展示的页面,如果你未对网站进行渗透入侵,请依次检查:自己输入的url是否合规,清除浏览器cookie后再试,如果依旧不行可能是误报,可以在确认可信的情况下将对方IP加白。
温馨提示:云锁351规则的误报较大且该规则默认开启,建议直接关闭,方法:主页-应用防护-点击web服务器后面的拼图图标或自编译图标,选择“虚拟补丁”,找到编号为351的规则,并点击关闭按钮。

4.为什么安装云锁之后网站依旧被挂马了?
答:云锁免费版基于规则、签名等传统防护手段,只能防护已知攻击和已知webshell且免费版本规则库更新慢,无法覆盖最新已知威胁,而对0day、定向渗透、未知webshell并无防护能力,如果你有更高的安全防护需求,请开通高级防护,高级防护采用RASP、webshell脚本沙盒、ASVE等基于行为的防护技术可以增强云锁对抗黑客攻击的能力。

5.为什么开启防护之后我的网站总是出现链接被重置,链接被断开的情况?
答:此问题为已知问题,已有解决方法,请点击这里查看吧!

6.开通高级防护也没有效果是怎么回事?
答:高级防护依赖于RASP,请先检查RASP工作是否正常,RASP插件是否已经安装,phpRASP,javaRASP请 点击这里,按照教程安装好RASP后进行测试,如果依旧可以被绕过,说明云锁公有云版无法识别出这种攻击方式,如有更高安全需求,请加钱上企业版,企业版介绍: 奇安信网神云锁

7.为什么云锁不更新了?
答:不更新不影响使用,免费已足够应对大部分使用场景,云锁为客户端软件,安装完成后,可以纯本地工作,不需要额外连接云端。

8.云锁公有云上次更新是什么时候,规则库版本是多少?
答:云锁主程序版本:V3.1.20.24 2020年11月11日发布
云锁通用防护规则版本:20.10.9
云锁web漏洞虚拟补丁版本:20.10.30

9.云锁这么久没更新了,还能防护最新的攻击吗?
答:可以,基础防护基于特征,由于本地特征库已很久没有更新,确实会无法覆盖最新被爆出的漏洞、绕过等,但云锁的高级防护由于是基于行为的持续监控,在长期不更新的情况下,依旧可以检出最新威胁以及部分0day漏洞攻击,同时开通高级防护后,还会有云的参与,本站测试后发现云端的检测能力还是有持续更新的,并且还接入了奇安信的云查杀(QCE引擎),进一步增强了云锁对恶意代码的识别能力。

10.云锁能否拦截冰蝎、蚁剑等木马?
答:可以拦截,建议开启高级防护并安装RASP插件获取完整防护能力。

11.云锁有用户交流渠道吗?
答:有,QQ群,群号:593532778。

12.云锁的SQL注入防护,基础防护和高级防护有什么区别?
答:云锁可以防护SQL注入,当云锁未开通高级防护时,云锁会基于规则库对用户输入进行正则匹配,匹配到会拦截,匹配不到就会放行,基于特征的防护易被绕过,因此云锁高级防护功能增加了未知SQL注入防护,相比于基础防护的SQL防护,高级防护不再基于特征库的正则匹配,而是对SQL语句进行语法分析,分析具体实现的行为,是无特征的检测手段,可以有效防止绕过。

文章版权归原作者所有或来自互联网,未经允许请勿转载。如有侵权请联系我删除,谢谢!
THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录