新聞中心
Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個(gè)BSD-like 協(xié)議下發(fā)行。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類(lèi)型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好,中國(guó)大陸使用nginx網(wǎng)站用戶(hù)有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。 也許你聽(tīng)過(guò)以上關(guān)于Nginx的美妙的事情,您可能已經(jīng)很喜歡它了,正在考慮如何提高Nginx服務(wù)器的安全性,穩(wěn)定性,或者您考慮把Apache替換成Nginx,那么本篇文章非常適合您繼續(xù)看下去。
大關(guān)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!
本文將介紹用來(lái)提高Nginx服務(wù)器的安全性,穩(wěn)定性和性能的12種操作。
1: 保持Nginx的及時(shí)升級(jí)
目前Nginx的穩(wěn)定版本為1.14.0,最好升級(jí)到最新版本,看官方的release note你會(huì)發(fā)現(xiàn)他們修復(fù)了很多bug,任何一款產(chǎn)品的生產(chǎn)環(huán)境都不想在這樣的bug風(fēng)險(xiǎn)下運(yùn)行的。
另外,雖然安裝包安裝比通過(guò)源代碼編譯安裝更容易,但后一個(gè)選項(xiàng)有兩個(gè)優(yōu)點(diǎn):
- 1)它允許您將額外的模塊添加到Nginx中(如more_header,mod_security),
- 2)它總是提供比安裝包更新的版本,在Nginx網(wǎng)站上可看release note。
2: 去掉不用的Nginx模塊
在編譯安裝時(shí),執(zhí)行./configure方法時(shí)加上以下配置指令,可以顯式的刪除不用的模塊:
./configure?--without-module1?--without-module2?--without-module3
例如:
./configure?--without-http_dav_module?--withouthttp_spdy_module
#注意事項(xiàng):配置指令是由模塊提供的。確保你禁用的模塊不包含你需要使用的指令!在決定禁用模塊之前,應(yīng)該檢查Nginx文檔中每個(gè)模塊可用的指令列表。
3: 在Nginx配置中禁用server_tokens項(xiàng)
server_tokens在打開(kāi)的情況下會(huì)使404頁(yè)面顯示Nginx的當(dāng)前版本號(hào)。這樣做顯然不安全,因?yàn)楹诳蜁?huì)利用此信息嘗試相應(yīng)Nginx版本的漏洞。
只需要在nginx.conf中http模塊設(shè)置server_tokens off即可,例如:
server?{
????listen?192.168.0.25:80;
????Server_tokens?off;
????server_name?tecmintlovesnginx.com?www.tecmintlovesnginx.com;
????access_log?/var/www/logs/tecmintlovesnginx.access.log;
????error_log?/var/www/logs/tecmintlovesnginx.error.log?error;
????root?/var/www/tecmintlovesnginx.com/public_html;
????index?index.html?index.htm;
}
#重啟Nginx后生效:
4: 禁止非法的HTTP User Agents
User Agent是HTTP協(xié)議中對(duì)瀏覽器的一種標(biāo)識(shí),禁止非法的User Agent可以阻止爬蟲(chóng)和掃描器的一些請(qǐng)求,防止這些請(qǐng)求大量消耗Nginx服務(wù)器資源。
為了更好的維護(hù),最好創(chuàng)建一個(gè)文件,包含不期望的user agent列表例如/etc/nginx/blockuseragents.rules包含如下內(nèi)容:
map?$http_user_agent?$blockedagent?{
????default?0;
????~*malicious?1;
????~*bot?1;
????~*backdoor?1;
????~*crawler?1;
????~*bandit?1;
}
然后將如下語(yǔ)句放入配置文件的server模塊內(nèi):
include?/etc/nginx/blockuseragents.rules;
并加入if語(yǔ)句設(shè)置阻止后進(jìn)入的頁(yè)面:
5: 禁掉不需要的 HTTP 方法
例如一些web站點(diǎn)和應(yīng)用,可以只支持GET、POST和HEAD方法。
在配置文件中的server模塊加入如下方法可以阻止一些欺騙攻擊
if?($request_method?!~?^(GET|HEAD|POST)$)?{
return?444;
}
6: 設(shè)置緩沖區(qū)容量上限
這樣的設(shè)置可以阻止緩沖區(qū)溢出攻擊(同樣是Server模塊)
client_body_buffer_size?1k;
client_header_buffer_size?1k;
client_max_body_size?1k;
large_client_header_buffers?2?1k;
#設(shè)置后,不管多少HTTP請(qǐng)求都不會(huì)使服務(wù)器系統(tǒng)的緩沖區(qū)溢出了。
7: 限制最大連接數(shù)
- 在http模塊內(nèi),server模塊外設(shè)置limit_conn_zone,可以設(shè)置連接的IP
- 在http,server或location模塊設(shè)置limit_conn,可以設(shè)置IP的最大連接數(shù)
例如:
limit_conn_zone?$binary_remote_addr?zone=addr:5m;
limit_conn?addr?1;
8: 設(shè)置日志監(jiān)控
上面的截圖中已經(jīng)有了,如何設(shè)置nginx日志
你或許需要拿一下因?yàn)榈?點(diǎn)的設(shè)置訪(fǎng)問(wèn)失敗的日志
grep?addr?/var/www/logs/tecmintlovesnginx.error.log?--color=auto
同時(shí)你在日志中還可以篩選如下內(nèi)容:
- 客戶(hù)端IP
- 瀏覽器類(lèi)型
- HTTP請(qǐng)求方法
- 請(qǐng)求內(nèi)容
- 服務(wù)器相應(yīng)
9: 阻止圖片外鏈自你的服務(wù)器
這樣做顯然會(huì)增加你服務(wù)器的帶寬壓力。
假設(shè)你有一個(gè)img目錄用來(lái)存儲(chǔ)圖片,你自己的IP是192.168.0.25,加入如下配置可以防止外鏈
location?/img/?{
??????valid_referers?none?blocked?192.168.0.25;
????????if?($invalid_referer)?{
??????????return?403;
??????}
}
10: 禁止 SSL 并且只打開(kāi) TLS
只要可以的話(huà),盡量避免使用SSL,要用TLS替代,以下設(shè)置可以放在Server模塊內(nèi):
ssl_protocols?TLSv1?TLSv1.1?TLSv1.2;
11: 做證書(shū)加密(HTTPS)
首先生成密鑰和整數(shù),用以下哪種都可以:
#?openssl?genrsa?-aes256?-out?tecmintlovesnginx.key?1024
#?openssl?req?-new?-key?tecmintlovesnginx.key?-out?tecmintlovesnginx.csr
#?cp?tecmintlovesnginx.key?tecmintlovesnginx.key.org
#?openssl?rsa?-in?tecmintlovesnginx.key.org?-out?tecmintlovesnginx.key
#?openssl?x509?-req?-days?365?-in?tecmintlovesnginx.csr?-signkey?tecmintlovesnginx.key?-out?tecmintlovesnginx.crt
#然后配置Server模塊
server?{
??????listen?192.168.0.25:443?ssl;
??????server_tokens?off;
??????server_name?tecmintlovesnginx.com?www.tecmintlovesnginx.com;
??????root?/var/www/tecmintlovesnginx.com/public_html;
??????ssl_certificate?/etc/nginx/sites-enabled/certs/tecmintlovesnginx.crt;
??????ssl_certificate_key?/etc/nginx/sites-enabled/certs/tecmintlovesnginx.key;
??????ssl_protocols?TLSv1?TLSv1.1?TLSv1.2;
}
12: 重定向HTTP請(qǐng)求到HTTPS
在第11點(diǎn)基礎(chǔ)上增加
return?301?https://$server_name$request_uri;
當(dāng)前題目:終極指南:提高Nginx服務(wù)器硬度的12個(gè)技巧
標(biāo)題路徑:http://www.dlmjj.cn/article/coigcee.html


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

