新聞中心
云安全解決方案【云鎖】今日宣布Nginx模塊開(kāi)源,幫助用戶(hù)適配更多的Nginx版本。秉承著讓安全變得更簡(jiǎn)單的宗旨,讓動(dòng)手能力強(qiáng)的小伙伴親自打造適合自己的Nginx環(huán)境。

創(chuàng)新互聯(lián)建站從2013年創(chuàng)立,先為察隅等服務(wù)建站,察隅等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為察隅企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
除了采用內(nèi)核加固技術(shù)來(lái)增強(qiáng)服務(wù)器自身對(duì)抗惡意代碼和黑客攻擊的策略外,云鎖通過(guò)在web中間件部署安全模塊的方式來(lái)對(duì)抗網(wǎng)絡(luò)攻擊,通過(guò)安全模塊的filter過(guò)濾功能,云鎖能高效過(guò)濾惡意流量和黑客攻擊,強(qiáng)力對(duì)抗CC、SQL注入、上傳一句木馬等網(wǎng)絡(luò)攻擊。
一般情況下,當(dāng)用戶(hù)安裝云鎖的時(shí)候,云鎖會(huì)自動(dòng)適配nginx版本,使用我們已經(jīng)預(yù)編譯好的包含云鎖模塊的 nginx備份并替換掉您當(dāng)前系統(tǒng)中使用的nginx。卸載時(shí),會(huì)將系統(tǒng)原始nginx文件替換回來(lái)。因此,云鎖可保護(hù)使用nginx搭建的網(wǎng)站,開(kāi)創(chuàng)了這個(gè)領(lǐng)域的先河。
此文檔假設(shè)您曾經(jīng)編譯過(guò)nginx或tengine源代碼,如果您之前沒(méi)有經(jīng)驗(yàn),請(qǐng)參考:http://nginx.org/en/docs/configure.html
如何編譯云鎖nginx模塊,步驟如下:
1. 為避免意外情況發(fā)生, 請(qǐng)先將系統(tǒng)當(dāng)前使用中的nginx進(jìn)行備份(包括相關(guān)的網(wǎng)站配置文件)
2. wget https://codeload.github.com/yunsuo-open/nginx-plugin/zip/master -O nginx-plugin-master.zip
3. unzip nginx-plugin-master.zip
4. cd nginx-plugin-master
5. pwd 獲取當(dāng)前云鎖插件源碼所在目錄的全路徑 (假設(shè)為:/home/nginx-plugin-master,實(shí)際情況以pwd輸出為準(zhǔn))
6. 如果您的環(huán)境是tengine,可以跳過(guò)這一步。對(duì)于nginx版本,由于其不支持post過(guò)濾,所以需要修改nginx源碼目錄下src/http/ngx_http_upstream.c 文件 步驟如下:
a. 查找 static void ngx_http_upstream_init_request(ngx_http_request_t *r)函數(shù),在其 所在行上方添加:int ngx_http_yunsuo_post_in_handler(ngx_http_request_t *r);
b. 在ngx_http_upstream_init_request函數(shù)開(kāi)頭,變量聲明后,添加:
if(ngx_http_yunsuo_post_in_handler(r))
{
return;
}
什么?沒(méi)看懂?好吧,以nginx-1.0.11為例:
修改前源碼:
static void
ngx_http_upstream_init_request(ngx_http_request_t *r)
{
ngx_str_t *host;
ngx_uint_t i;
ngx_resolver_ctx_t *ctx, temp;
ngx_http_cleanup_t *cln;
ngx_http_upstream_t *u;
ngx_http_core_loc_conf_t *clcf;
ngx_http_upstream_srv_conf_t *uscf, **uscfp;
ngx_http_upstream_main_conf_t *umcf;
if (r->aio) {
return;
}
u = r->upstream;
......
}
修改后源碼:
static void
ngx_http_upstream_init_request(ngx_http_request_t *r)
{
ngx_str_t *host;
ngx_uint_t i;
ngx_resolver_ctx_t *ctx, temp;
ngx_http_cleanup_t *cln;
ngx_http_upstream_t *u;
ngx_http_core_loc_conf_t *clcf;
ngx_http_upstream_srv_conf_t *uscf, **uscfp;
ngx_http_upstream_main_conf_t *umcf;
if (r->aio) {
return;
}
u = r->upstream;
......
}
7. 云鎖的nginx插件模塊是標(biāo)準(zhǔn)的nginx模塊,所以您在編譯nginx過(guò)程中,configure時(shí)只要添加額外參數(shù) --add-module=/home/nginx-plugin-master(注意:/home/nginx-plugin-master為示例,實(shí)際路徑以步驟5中pwd命令為準(zhǔn)) 即可讓nginx支持云鎖的功能,示例如下:
假設(shè)您之前configure時(shí)的命令如下:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module \
--with-http_ssl_module --with-http_gzip_static_module \
--add-module=../ngx_cache_purge-1.3
現(xiàn)在的configure時(shí)的命令如下:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module \
--with-http_ssl_module --with-http_gzip_static_module \
--add-module=../ngx_cache_purge-1.3
--add-module=/home/nginx-plugin-master
8. 編譯 nginx (注意:如果原本已經(jīng)有 nginx, 只執(zhí)行 make 即可,make install 會(huì)覆蓋掉你的 nginx.conf)
9. 將系統(tǒng)當(dāng)前使用中的nginx二進(jìn)制文件替換為剛剛編譯好的包含了云鎖模塊的nginx文件即可
讓云鎖識(shí)別您自己編譯的nginx,步驟如下:
1. 安裝云鎖,如果您已經(jīng)安裝了云鎖,可跳過(guò)此步驟。如果還沒(méi)有,請(qǐng)到http://www.yunsuo.com.cn/ht/software/ 下載并安裝云鎖
2. cd /usr/local/yunsuo_agent/nginx/
3. ./configure_compiled_nginx nginx_install_path (nginx_install_path為nginx的安裝路徑,即configure時(shí) --prefix=path 如果未指定過(guò)路徑, 那么默認(rèn)為/usr/local/nginx)
FAQ
1. 什么情況下我需要自己編譯云鎖的nginx模塊?
(a)當(dāng)您的nginx使用了第三方或者自己開(kāi)發(fā)的模塊的時(shí)候,需要編譯云鎖的nginx模塊。您可以通過(guò)nginx -V命令查看輸出的 信息里是否包含了 --add-module= 的字樣 (例如:--add-module=../ngx_cache_purge-1.3 說(shuō)明使用了ngx_cache_purge-1.3第三方 模塊)
(b)當(dāng)使用tengine的時(shí)候,需要編譯云鎖的nginx模塊 c.當(dāng)您發(fā)現(xiàn)當(dāng)前使用的nginx版本比我們自動(dòng)安裝的版本高的時(shí)候,可以自己編譯云鎖的nginx模塊
(c)當(dāng)您發(fā)現(xiàn)當(dāng)前使用的nginx版本比我們自動(dòng)安裝的版本高的時(shí)候,可以自己編譯云鎖的nginx模塊
2. 如果我把云鎖卸載了,nginx需要重新編譯嗎?
不需要,云鎖的nginx模塊會(huì)判斷云鎖是否安裝,如果不安裝則不生效。當(dāng)然您也可以替換回之前的nginx
3. 我應(yīng)該先安裝云鎖,還是先編譯nginx?
都可以,沒(méi)有先后順序關(guān)系
4. 怎樣單獨(dú)卸載 nginx 插件?
有如下三種方式可以實(shí)現(xiàn)卸載插件:
(a)現(xiàn)有版本 nginx 默認(rèn)不支持從客戶(hù)端卸載,如果想支持從客戶(hù)端卸載, 需要手動(dòng)將 系統(tǒng)原有的 nginx 重命名為 nginx.bak, 并將之替換 /usr/local/yunsuo_agent/nginx/backup 目錄下的 nginx.bak(此操作需要關(guān)閉云鎖自保護(hù)功能), 這樣就可以使用客戶(hù)端的插件卸載功能了
(b)手動(dòng)刪除或者重命名 /usr/local/yunsuo_agent/nginx/ 目錄下的 libnginx_plugin.so(此操作需要關(guān)閉云鎖自保護(hù)功能), 重啟 nginx 服務(wù)即可
(c)手動(dòng)使用系統(tǒng)原有的 nginx 直接替換 當(dāng)前使用的帶有云鎖插件的 nginx
推薦使用第一種方式, 因?yàn)槠浔阌诤罄m(xù)的安裝和卸載
推薦使用第一種方式, 因?yàn)槠浔阌诤罄m(xù)的安裝和卸載
云鎖在GitHub等您,點(diǎn)擊鏈接 https://github.com/yunsuo-open/nginx-plugin#rd 了解詳情。
本文名稱(chēng):這才叫云安全,云鎖Nginx過(guò)濾模塊開(kāi)源啦!
網(wǎng)頁(yè)網(wǎng)址:http://m.fisionsoft.com.cn/article/coccpss.html


咨詢(xún)
建站咨詢(xún)
