编译教程

其实几乎全程只要复制粘贴即可,非常简单。

1、下载云锁并安装到服务器上(建议CENTOS7系统且没有升级内核及安装BBR)

wget http://down.iminbk.com/v3/new/yunsuo_agent_64bit.tar.gz && tar xvzf yunsuo_agent_64bit.tar.gz && chmod +x yunsuo_install/install && yunsuo_install/install

2、配置编译环境(可选操作,非必须,因为你安装宝塔的时候,他就默认安装好了)。
yum install -y gcc gcc-c++ pcre-devel openssl openssl-devel

3、进入root目录
cd /root

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

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

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

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

8、进入nginx源码目录,对nginx进行重新编译,操作之前请确认自己的nginx是编译模式安装的,而不是宝塔面板的极速安装,极速安装不存在src目录,也无法进行二次编译
cd /www/server/nginx/src

9、执行configure生成Makefile
./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过滤和内容过滤。

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

如果你不会用VI,可以在宝塔面板的文件管理打开/www/server/nginx/src/objs/,找到makefile,使用宝塔进行修改,追加宏定义的目的是使云锁支持POST请求检测,非常重要,一定要做这个步骤。

然后,将ngx_modules.c中的&ngx_http_yunsuo_module,向下移动到ngx_http_userid_filter_module和ngx_http_headers_filter_module之间,此步骤的目的是使云锁支持敏感词检测与拦截,如果你不需要这个功能,可以跳过此步骤。

注意是在第三行后面追加,不是另起一行哈,千万别搞错了,否则编译会出错。

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

12、等待编译完成后,执行一键替换命令:

service nginx stop && rm -rf /www/server/nginx/sbin/nginx && cp /www/server/nginx/src/objs/nginx /www/server/nginx/sbin/ && service nginx start

通过PC端登陆云锁,PC端刷新后可以看到云锁nginx插件已被识别(图标变为绿色)

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

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

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

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

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

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

18、(可选)部分用户反馈,安装云锁后,会导致网站出现被重置、链接被断开的情况,经过研发确认,是和云锁的一个模块有关,如果你遇到了这个问题,可以尝试关闭这个模块,方法如下:

首先,关闭云锁的:“自身防护功能”;

image.png
image.png

然后,使用宝塔或VIM打开:/usr/local/yunsuo_agent/FilterKernel.xml

image.png
image.png
将图中这一行删除或注释掉即可,打开ssh,执行:

service yunsuo restart && service nginx restart

即可解决此问题。

19、(可选)部分用户反馈编译后的nginx莫名被替换,可以设置防篡改。

请输入图片描述
请输入图片描述

如图这样设置就可以了。

20、(可选)建议开启RASP增强防护:

RASP“Runtime application self-protection”应用运行时自我保护技术,是奇安信椒图云锁服务器安全管理系统(简称云锁)web攻击防护的核心组件之一,是构建在WEB语言解释器中的异常行为检测引擎。

RASP通过HOOK函数的方式,可以细粒度的监控应用脚本的行为及函数调用上下文信息,及时发现恶意代码和漏洞利用行为,缩小攻防信息不对称的时间差,有效降低未知安全威胁造成的破坏。

建议参考本文一键开启。

常见问题:

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

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

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