設置header_Nginx的這些安全設置,你都知道嗎?

ef70a7ccd7af3ea2789a1291753f7d0f.png

Nginx 是最流行的 Web 服務器,可以只占用 2.5 MB 的內存,卻可以輕松處理 1w 的 http 請求。

做為網站的入口,Nginx 的安全設置重要性不言而喻。

下面帶你一起去認識一下這些安全配置吧!

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 來禁用

3f36b5490c50354f5fca1eede62a3ccb.png

控制資源和限制

為了防止對 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 模塊提供對基本狀態信息的訪問。

d271915dc955edb6d870079a2de47b23.png

合理配置響應頭

為了進一步加強 Nginx web 的性能,可以添加幾個不同的響應頭,推薦

X-Frame-Options

可以使用 X-Frame-Options HTTP 響應頭指示是否應允許瀏覽器在 或

配置文件中添加:

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 最新版則去官網查看。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542003.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542003.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542003.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

動態路由協議_動態路由協議的類別

動態路由協議Dynamic routing protocols have been divided into 2 categories i.e Distance vector protocols and Link state protocols. Both of these protocols are being explained in detail in this tutorial. 動態路由協議分為距離矢量協議和鏈路狀態協議兩大類 。 本…

docker鏡像創建與優化

1 . 創建鏡像 有兩種方法構建鏡像: docker commit :將運行的容器保存成鏡像Dockerfile:自動構建 使用docker commit 創建鏡像分為三步: 運行容器修改容器將容器保存為鏡像 舉例: [rootdocker ~]# docker load -i…

ISP運營商實驗室測試機架拓撲搭建經驗分享

大家好,有些日子沒更新干貨了,近期難得有假期進行修整,思前顧后還是坐下來聊聊自己長期負責維護和搭建的實驗室環境。廢話不多說,直接上圖。因為圖較大,分上下部分進行上傳。網絡主框架(上)服務…

關于二手交易用戶指南怎么寫_讓用戶拍案叫絕文案怎么寫?試試這3個方法

“共鳴”到底是什么? 為什么有些文章會引起共鳴,而有些則沒有。現在假設為產品家用手持式美容儀寫一份副本。 由于主要重點是“家庭使用”,因此您立即想到了“家庭美容”的口號。 盡管這句話很簡單易懂,但談論起來總是很簡單……似…

結構化程序goto語句_C ++ goto語句| 查找輸出程序| 套裝1

結構化程序goto語句Program 1: 程序1&#xff1a; #include <iostream>#include <math.h>using namespace std;int main(){int num1 1;int num2 0;MY_LABEL:num2 num1 * num1;cout << num2 << " ";num1 num1 pow(2, 0);if (num1 < …

docker倉庫搭建、加密、用戶認證

1 . 含義及理解&#xff1a; 倉庫分為公開倉庫&#xff08;Public&#xff09;和私有倉庫&#xff08;Private&#xff09;兩種形式。最大的公開倉庫是 Docker Hub&#xff0c;存放了數量龐大的鏡像供用戶下載。 國內的公開倉庫包括 Docker Pool等&#xff0c;可以提供大陸用戶…

Centos7+Nginx+Keepalived實現Apache服務的高可用負載均衡

Centos7NginxKeepalived實現Apache服務的高可用&負載均衡今天是2017年的第一天&#xff0c;昨天也就是2016年的最后一天&#xff0c;我嘗試部署了Centos7NginxKeepalived實現WEB服務的高可用負載均衡服務&#xff0c;終于在2017年的第一天前完成了&#xff0c;所以在此分享…

客戶端通過網口啟動可過去的ip_西安交通大學16年3月課程考試《網絡組網技術綜合訓練》作業考核試題...

西安交通大學16年3月課程考試《網絡組網技術綜合訓練》作業考核試題一、單選題(共 20 道試題&#xff0c;共 40 分。)V 1. 下列不屬于服務器內部結構的是()A. CPUB. 電源C. 5類雙絞線D. 北橋芯片滿分&#xff1a;2 分2. 網絡中使用光纜的優點是()A. 便宜B. 容易安裝C. 是一個工…

mcq 隊列_MCQ | 軟件工程基礎知識/簡介(1)

mcq 隊列Q1. Which of the following is a part of the software? Q1。 以下哪個是軟件的一部分&#xff1f; Programs 程式 Documentation 文獻資料 Operating Procedures 運營流程 All of the above 上述所有的 Answer: d. All of the above 答案&#xff1a; d。 上述所有…

docker設置鏡像加速器

設置鏡像加速器 一般情況下&#xff0c;直接從官方倉庫中直接拉取鏡像會比較慢&#xff0c;可以設置鏡像加速器&#xff0c;相當于一個反向代理。以阿里云為例 1 . 首先獲取自己的加速器地址 www.aliyun.com 登陸自己的賬號&#xff08;可以是支付寶賬號&#xff09; 首頁點…

keytool條目_java keytool 常用命令

最近在做ssl連接active directory&#xff0c; 遇到了不少的ssl的問題。連接ssl時會需要用將證書保存到keystore&#xff0c; 而這個步驟剛好就用到了keytool命令。直接敲keytool會有提示如何用這個命令&#xff0c; 但對于完全不懂的我&#xff0c;還是找了下基本命令&#xf…

用JavaScript中的示例進行fill()函數

fill() is a predefined function in JavaScript, which is used to fill all elements of an array with a static value. fill()是JavaScript中的預定義函數&#xff0c;用于用靜態值填充數組的所有元素。 Example: 例&#xff1a; <html><head><title>J…

談談重載(overload)覆蓋(override)與隱藏

這三個概念都是與OO中的多態有關系的。如果單是區別重載與覆蓋這兩個概念是比較容易的&#xff0c;但是隱藏這一概念卻使問題變得有點復雜了&#xff0c;下面說說它們的區別吧。重載是指不同的函數使用相同的函數名&#xff0c;但是函數的參數個數或類型不同。調用的時候根據函…

搭建Harbor私有倉庫

1 首先裝好docker&#xff1a; 由于之前已安裝過&#xff0c;所以直接開起就行 2 . 安裝python2.7以上版本 之前編譯安裝過7.3的&#xff0c;直接用吧 3 . 安裝docker-compose docker容器管理工具&#xff0c;是habor的依賴之一。 curl -L "https://github.com/docker…

mysql日志查詢指令_MySQL查詢日志總結

MySQL查詢日志介紹MySQL的查詢日志記錄了所有MySQL數據庫請求的信息。無論這些請求是否得到了正確的執行。默認文件名為hostname.log。默認情況下MySQL查詢日志是關閉的。生產環境&#xff0c;如果開啟MySQL查詢日志&#xff0c;對性能還是有蠻大的影響的。另外很多時候&#x…

thinkphp5.0助手函數占用服務器資源

db(user) 默認情況下&#xff0c;每次請求都會重新連接數據庫&#xff0c;這樣會占用服務器資源 方法1.如果不想每次都重連可以這樣 db("List",[],false) 方法2.還可以直接改function&#xff0c;及則需要把 function db($name , $config [], $force true){retu…

python 無符號整數_Python中的有符號和無符號整數數組

python 無符號整數An array can be declared by using "array" module in Python. 可以通過在Python中使用“數組”模塊來聲明數組 。 Syntax to import "array" module: 導入“數組”模塊的語法&#xff1a; import array as array_alias_nameHere, imp…

mysql快速批量入庫_MySQL-批量入庫優化

MySQL批量入庫的方式循環一條一條入庫批量入庫通過程序組合 insert into (字段) tbl vlaues(), vlaues(), vlaues(),...事務入庫$autoCommit (isset($this->startTransaction) ? !$this->startTransaction : true);$ids array();if ($autoCommit) {$this->startTra…

docker集群搭建(k8s)

1 . 理解&#xff1a; Kubernetes是一個開源的&#xff0c;用于管理云平臺中多個主機上的容器化的應用&#xff0c;Kubernetes的目標是讓部署容器化的應用簡單并且高效&#xff08;powerful&#xff09;,Kubernetes提供了應用部署&#xff0c;規劃&#xff0c;更新&#xff0c…

Python模擬刪除字符串兩邊的空白

目標&#xff1a;   1.使用string模塊的whitespace   2.刪除左邊、右邊以及兩邊的空白 代碼如下&#xff1a; [rootlocalhost python]# cat rmspace.py #!/usr/bin/env python #coding:utf8 """ 使用字符串刪除左右兩端的空白。 """from str…