過度了啊!Nginx這些重要的安全設置,你不會....

image
Nginx 是最流行的 Web 服務器,能夠只佔用 2.5 MB 的內存,卻能夠輕鬆處理 1w 的 http 請求。nginx

作爲網站的入口,Nginx 的安全設置重要性不言而喻。web

下面帶你一塊兒去認識一下這些安全配置吧!瀏覽器

nginx.conf是 Nginx 最主要的配置文件,大部分的安全配置都在這個文件上進行。安全

禁用不須要的 Nginx 模塊

自動安裝的 Nginx 會內置不少模塊,並非全部的模塊都須要,對於非必須的模塊能夠禁用,如 autoindex module ,下面展現如何禁用服務器

# ./configure --without-http_autoindex_module
# make
# make install

不展現 server tokens

默認狀況下,Nginx 的 server tokens 會在錯誤頁面顯示 Nginx 的版本號,這可能會致使信息泄露,未經受權的用戶可能會了解你使用的nginx版本。 應該在 nginx.conf 經過設置 server_tokens off 來禁用dom

控制資源和限制

爲了防止對 Nginx 進行潛在的 DOS 攻擊,能夠爲全部客戶端設置緩衝區大小限制,配置以下:工具

  • client_body_buffer_size 指定客戶端請求主體緩衝區的大小。默認值爲8k或16k,但建議將此值設置爲低至1k:client_body_buffer_size 1k
  • client_header_buffer_size 爲客戶端請求標頭指定標頭緩衝區大小。 設置爲 1k 足以應付大多數請求。
  • client_max_body_size 爲客戶端請求指定可接受的最大正文大小。 設置爲 1k 應該足夠了,可是若是經過 POST方法接收文件上傳,則須要增長它。
  • large_client_header_buffers 指定用於讀取大型客戶端請求標頭的緩衝區的最大數量和大小。將最大緩衝區數設置爲 2,每一個緩衝區的最大大小爲 1k。該指令將接受 2 kB 數據, large_client_header_buffers 2 1k

禁用全部不須要的 HTTP 方法

禁用全部不須要的 HTTP 方法,下面設置意思是隻容許 GET、HEAD、POST 方法,過濾掉 DELETE 和 TRACE 等方法。性能

location / {
limit_except GET HEAD POST { deny all; }
}

另外一種方法是在 server 塊 設置,不過這樣是全局設置的,要注意評估影響優化

if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 444; }

監控訪問日誌和錯誤日誌

持續監控和管理 Nginx 的錯誤日誌,就能更好的瞭解對 web 服務器的請求,注意到任何遇到的錯誤,有助於發現任何攻擊嘗試,並肯定您能夠執行哪些操做來優化服務器性能。網站

能夠使用日誌管理工具(例如 logrotate )來旋轉和壓縮舊日誌並釋放磁盤空間。 一樣,ngx_http_stub_status_module 模塊提供對基本狀態信息的訪問。

合理配置響應頭

爲了進一步增強 Nginx web 的性能,能夠添加幾個不一樣的響應頭,推薦

X-Frame-Options

能夠使用 X-Frame-Options HTTP 響應頭指示是否應容許瀏覽器在 <frame> 或 <iframe> 中呈現頁面。 這樣能夠防止點擊劫持攻擊。

配置文件中添加:

add_header X-Frame-Options "SAMEORIGIN";

Strict-Transport-Security

HTTP Strict Transport Security,簡稱爲 HSTS。它容許一個 HTTPS 網站,要求瀏覽器老是經過 HTTPS 來訪問它,同時會拒絕來自 HTTP 的請求,操做以下:

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

CSP

Content Security Policy (CSP) 保護你的網站避免被使用如 XSS,SQL注入等手段進行攻擊,操做以下:

add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;

配置 SSL 和 cipher suites

Nginx 默認容許使用不安全的舊 SSL 協議,ssl_protocols TLSv1 TLSv1.1 TLSv1.2,建議作以下修改:

ssl_protocols TLSv1.2 TLSv1.3;

此外要指定 cipher suites ,能夠確保在 TLSv1 握手時,使用服務端的配置項,以加強安全性。

ssl_prefer_server_ciphers on

按期更新服務器

舊版的 Nginx 總會存在各類各樣的漏洞,因此最好更新到最新版。

漏洞能夠去各大 CVE 網站去查詢,Nginx 最新版則去官網查看。

來源:https://www.toutiao.com/i6901...

image

相關文章
相關標籤/搜索