新聞中心
Nginx是一款輕量級的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個BSD-like 協(xié)議下發(fā)行。其特點是占有內(nèi)存少,并發(fā)能力強,事實上nginx的并發(fā)能力確實在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。 也許你聽過以上關(guān)于Nginx的美妙的事情,您可能已經(jīng)很喜歡它了,正在考慮如何提高Nginx服務(wù)器的安全性,穩(wěn)定性,或者您考慮把Apache替換成Nginx,那么本篇文章非常適合您繼續(xù)看下去。
大關(guān)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
本文將介紹用來提高Nginx服務(wù)器的安全性,穩(wěn)定性和性能的12種操作。
1: 保持Nginx的及時升級
目前Nginx的穩(wěn)定版本為1.14.0,最好升級到最新版本,看官方的release note你會發(fā)現(xiàn)他們修復(fù)了很多bug,任何一款產(chǎn)品的生產(chǎn)環(huán)境都不想在這樣的bug風險下運行的。
另外,雖然安裝包安裝比通過源代碼編譯安裝更容易,但后一個選項有兩個優(yōu)點:
- 1)它允許您將額外的模塊添加到Nginx中(如more_header,mod_security),
- 2)它總是提供比安裝包更新的版本,在Nginx網(wǎng)站上可看release note。
2: 去掉不用的Nginx模塊
在編譯安裝時,執(zhí)行./configure方法時加上以下配置指令,可以顯式的刪除不用的模塊:
./configure?--without-module1?--without-module2?--without-module3
例如:
./configure?--without-http_dav_module?--withouthttp_spdy_module
#注意事項:配置指令是由模塊提供的。確保你禁用的模塊不包含你需要使用的指令!在決定禁用模塊之前,應(yīng)該檢查Nginx文檔中每個模塊可用的指令列表。
3: 在Nginx配置中禁用server_tokens項
server_tokens在打開的情況下會使404頁面顯示Nginx的當前版本號。這樣做顯然不安全,因為黑客會利用此信息嘗試相應(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é)議中對瀏覽器的一種標識,禁止非法的User Agent可以阻止爬蟲和掃描器的一些請求,防止這些請求大量消耗Nginx服務(wù)器資源。
為了更好的維護,最好創(chuàng)建一個文件,包含不期望的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;
}
然后將如下語句放入配置文件的server模塊內(nèi):
include?/etc/nginx/blockuseragents.rules;
并加入if語句設(shè)置阻止后進入的頁面:
5: 禁掉不需要的 HTTP 方法
例如一些web站點和應(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請求都不會使服務(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日志
你或許需要拿一下因為第7點的設(shè)置訪問失敗的日志
grep?addr?/var/www/logs/tecmintlovesnginx.error.log?--color=auto
同時你在日志中還可以篩選如下內(nèi)容:
- 客戶端IP
- 瀏覽器類型
- HTTP請求方法
- 請求內(nèi)容
- 服務(wù)器相應(yīng)
9: 阻止圖片外鏈自你的服務(wù)器
這樣做顯然會增加你服務(wù)器的帶寬壓力。
假設(shè)你有一個img目錄用來存儲圖片,你自己的IP是192.168.0.25,加入如下配置可以防止外鏈
location?/img/?{
??????valid_referers?none?blocked?192.168.0.25;
????????if?($invalid_referer)?{
??????????return?403;
??????}
}
10: 禁止 SSL 并且只打開 TLS
只要可以的話,盡量避免使用SSL,要用TLS替代,以下設(shè)置可以放在Server模塊內(nèi):
ssl_protocols?TLSv1?TLSv1.1?TLSv1.2;
11: 做證書加密(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請求到HTTPS
在第11點基礎(chǔ)上增加
return?301?https://$server_name$request_uri;
本文名稱:終極指南:提高Nginx服務(wù)器硬度的12個技巧
URL分享:http://m.5511xx.com/article/coigcee.html


咨詢
建站咨詢

