Nginx - 安全基線配置與操作指南

文章目錄

  • 概述
  • 中間件安全基線配置手冊
    • 1. 概述
      • 1.1 目的
      • 1.2 適用范圍
    • 2. Nginx基線配置
      • 2.1 版本說明
      • 2.2 安裝目錄
      • 2.3 用戶創建
      • 2.4 二進制文件權限
      • 2.5 關閉服務器標記
      • 2.6 設置 timeout
      • 2.7 設置 NGINX 緩沖區
      • 2.8 日志配置
      • 2.9 日志切割
      • 2.10 限制訪問 IP
      • 2.11 限制僅允許域名訪問
      • 2.12 錯誤頁面重定向
      • 2.13 限制并發和速度
      • 2.14 安裝官方補丁更新
      • 2.15 配置正向代理模塊
      • 2.16 防止目錄遍歷
      • 2.17 服務監控

在這里插入圖片描述


概述

我們這里主要介紹針對Nginx中間件的安全基線配置指南,包括版本選擇、用戶創建、權限設置、緩沖區配置、日志管理、訪問限制、錯誤頁面處理、并發控制、補丁更新等方面。

同時還涵蓋了如何配置正向代理模塊、防止目錄遍歷以及服務監控等內容,旨在指導系統管理員確保中間件服務器的安全性


中間件安全基線配置手冊

1. 概述

1.1 目的

本文檔規定了中間件服務器應當遵循的安全性設置標準,旨在指導系統管理人員或安全檢查人員進行中間件的安全合規性檢查和配置。

1.2 適用范圍

本配置標準的使用者包括:服務器系統管理員、應用管理員。
本配置標準適用的范圍包括:中間件服務器。

2. Nginx基線配置

2.1 版本說明

使用Nginx官方穩定版本,當前提供下列版本:

  • Nginx 1.22.1
  • Nginx 1.24.0

2.2 安裝目錄

/opt/nginx-{version}

2.3 用戶創建

操作系統中新建nginx用戶,用以啟動Nginx Worker。

nginx.conf中配置:

user nginx;

2.4 二進制文件權限

/opt/nginx-{version}/sbin/nginx 二進制文件權限為 755

2.5 關閉服務器標記

關閉服務器標記,避免顯示服務器版本信息。編輯nginx.conf,在http模塊中添加:

server_tokens off;

2.6 設置 timeout

設置 timeout 配置可防御 DOS 攻擊。編輯nginx.conf,在http模塊中添加:

client_body_timeout 10;
client_header_timeout 30;
keepalive_timeout 30 30;
send_timeout 10;

2.7 設置 NGINX 緩沖區

防止緩沖區溢出攻擊。編輯nginx.conf,在server模塊中添加:

client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;

2.8 日志配置

統一使用規定好的日志格式。編輯nginx.conf,在http模塊中添加:

log_format main '$remote_addr - $remote_user [$time_local] "$request" "$http_host" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" "$request_time" "$upstream_response_time" "$request_body"';

2.9 日志切割

切割 Nginx 日志,避免日志文件過大。新建日志切割腳本如下:

#!/bin/bash
# 設置日志文件存放目錄
logspath="/usr/local/nginx/logs/"
# 設置pid文件
pidpath="/usr/local/nginx/nginx.pid"
# 重命名日志文件
mv ${logspath}access.log ${logspath}access$(date -d "yesterday" +"%Y%m%d").log
# 向nginx主進程發信號重新打開日志
kill -USR1 `cat ${pidpath}`

配置定時任務每日凌晨執行腳本。

2.10 限制訪問 IP

限制訪問 IP,僅允許指定 IP 訪問指定資源。編輯nginx.conf,在server模塊中添加:

deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;

2.11 限制僅允許域名訪問

限制僅允許域名訪問,跳過 IP 掃描。編輯nginx.conf,在server模塊中添加:

server {listen 80 default;server_name _;return 403;
}

2.12 錯誤頁面重定向

Nginx 默認錯誤頁面包含服務器版本信息,使用自定義錯誤頁面避免版本信息泄露。新建錯誤頁面,放到靜態目錄中,編輯nginx.conf,在http模塊中添加:

fastcgi_intercept_errors on;
error_page 401 /401.html;
error_page 402 /402.html;
error_page 403 /403.html;
error_page 404 /404.html;
error_page 405 /405.html;
error_page 500 /500.html;

2.13 限制并發和速度

限制用戶連接數及速度來預防 DOS 攻擊。編輯nginx.conf,在http模塊中添加:

limit_zone one $binary_remote_addr 60m;

server模塊的location中,需要限制的location中添加如下參數:

limit_conn one 50;
limit_rate 100k;

2.14 安裝官方補丁更新

防止攻擊者利用 Nginx 漏洞進行攻擊,定期更新 Nginx 版本。查看當前 Nginx 版本:

nginx -v

官網下載最新的安全補丁:Nginx 下載。

2.15 配置正向代理模塊

由于項目需要使用到 HTTPS 正向代理,而 Nginx 官方模塊僅支持做 HTTP 正向代理,ngx_http_proxy_connect_module模塊可以實現隧道 SSL 請求的代理服務器。模塊下載地址:GitHub。編譯 Nginx 中添加該模塊即可:

--add-module=/root/ngx_http_proxy_connect_module

創建配置文件即可使用:

server {resolver 114.114.114.114;resolver_timeout 30s;listen 80;proxy_connect;                          # 啟用 CONNECT HTTP 方法proxy_connect_allow 443 80;             # 指定代理 CONNECT 方法可以連接的端口號或范圍的列表proxy_connect_connect_timeout 20s;      # 定義客戶端與代理服務器建立連接的超時時間proxy_connect_read_timeout 20s;         # 定義客戶端從代理服務器讀取響應的超時時間proxy_connect_send_timeout 20s;         # 設置客戶端將請求傳輸到代理服務器的超時時間location / {proxy_pass $scheme://$http_host$request_uri;}
}

2.16 防止目錄遍歷

修改文件nginx.conf,在http模塊下添加或修改為autoindex off;重新啟動 Nginx 服務。

2.17 服務監控

為了保證 Nginx 服務正常,采用 Zabbix 監控nginx_status模塊監控 Nginx 服務。Nginx 配置nginx_status IP 白名單:

location /nginx_status {stub_status;allow 192.168.0.0/16;allow 127.0.0.1;deny all;
}

推薦: Loki收集Nginx日志并搭建日志聚合平臺

在這里插入圖片描述

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

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

相關文章

debugger(一):打斷點的實現以及案例分析

〇、前言 最近在學習 debugger 的實現原理,并按照博客實現,是一個很不錯的小項目,這是地址。由于 macOS 的問題,系統調用并不完全相同,因此實現了兩個版本分支,一個是 main 版本分支(macOS M1 …

【一站式學會Kotlin】第八節:kotlin== 和 === 的差別和含義

作者介紹: 百度資深Android工程師T6,在百度任職7年半。 目前:成立趙小灰代碼工作室,歡迎大家找我交流Android、微信小程序、鴻蒙項目。 一:通俗易懂的人工智能教程:https://www.captainbed.cn/nefu/ 點一下…

Altium Designer 中鍵拖動,滾輪縮放,并修改縮放速度

我的版本是AD19,其他版本應該都一樣。 滾輪縮放 首先,要用滾輪縮放,先要調整一下AD 設置,打開Preferences,在Mouse Wheel Configuration 里,把Zoom Main Window 后面Ctrl 上的對勾取消掉,再把…

C++中的懸掛指針和野指針

懸掛指針(dangling pointer)和野指針(wild pointer)是兩種常見的指針錯誤,雖然它們都可能導致未定義行為,但它們產生的原因和表現有所不同。 1.懸掛指針(Dangling Pointer) 懸掛指…

2024 ISCC pwn wp

iscc 練武pwn 總結第一周chaosISCC_easyFlagshopping 第二周ISCC_easyISCC_Uheapheap 第三周miaoYour_programeazy_heap 總結 總體感覺iscc考察的題目都挺基礎的,在目前這種比賽的大環境下,仍然出這種,比較基礎的題目,實在是難得…

智馭未來:探究AIGC行業的戰略入局時機與前景展望

當前時點涉足人工智能生成內容(AIGC)行業,是一個策略性抉擇,基于對該行業現狀的深度剖析及對未來趨勢的前瞻性預判,其可行性與吸引力顯著。 行業發展階段分析: 技術迭代加速:近年來&#xff0c…

力扣刷題---2283. 判斷一個數的數字計數是否等于數位的值【簡單】

題目描述 給你一個下標從 0 開始長度為 n 的字符串 num &#xff0c;它只包含數字。 如果對于 每個 0 < i < n 的下標 i &#xff0c;都滿足數位 i 在 num 中出現了 num[i]次&#xff0c;那么請你返回 true &#xff0c;否則返回 false 。 示例 1&#xff1a; 輸入&a…

SpringCloud系列(31)--使用Hystrix進行服務降級

前言&#xff1a;在上一章節中我們創建了服務消費者模塊&#xff0c;而本節內容則是使用Hystrix對服務進行服務降級處理。 1、首先我們先對服務提供者的服務進行服務降級處理 (1)修改cloud-provider-hystrix-payment8001子模塊的PaymentServiceImpl類 注&#xff1a;HystrixP…

學習elixir(1)

突然發現elixir很有趣&#xff0c;所以想記錄以下學習內容 # .ex .exs file elixir simple.exs # mix new <app_name> # mix deps.get; mix deps.update; mix deps.compile # 怎么使用mix escript.build # eg. 在mix.exs添加escript: [main_module: IntentionCLI, name:…

Window在VScode運行C/C++程序

首先說明&#xff1a;不同運行環境&#xff08;Linux/Window&#xff09;下的頭文件會有差異&#xff0c;要注意變換&#xff01;生成可執行文件 Window默認生成a.exe&#xff0c;Linux默認生成a.out # C源代碼 g test.cpp # C語言源代碼 g test.c 或 gcc test.c直接輸入a.ex…

從零開始學逆向,js逆向啟蒙:有道翻譯

語言&#xff1a;js、python 工具&#xff1a;pycharm、chrome瀏覽器F12調試、chatgpt&#xff08;補充js第三方庫&#xff0c;轉python&#xff09;、node.js(js運行)&#xff08;必須&#xff09; 目標&#xff1a;學習掌握基本js逆向知識。 對象&#xff1a; 有道翻譯 &a…

怎么判斷同步時序邏輯電路和異步時序邏輯電路?

&#x1f3c6;本文收錄于「Bug調優」專欄&#xff0c;主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案&#xff0c;希望能夠助你一臂之力&#xff0c;幫你早日登頂實現財富自由&#x1f680;&#xff1b;同時&#xff0c;歡迎大家關注&&收藏&&…

力扣刷題---2418. 按身高排序【簡單】

題目描述 給你一個字符串 數組 names &#xff0c;和一個由 互不相同 的正整數組成的數組 heights 。兩個數組的長度均為 n 。 對于每個下標 i&#xff0c;names[i] 和 heights[i] 表示第 i 個人的名字和身高。 請按身高 降序 順序返回對應的名字數組 names 。 示例 1&…

僵尸進程,孤兒進程,守護進程

【一】僵尸進程 1.僵尸進程是指完成自己的任務之后&#xff0c;沒有被父進程回收資源,占用系統資源,對計算機有害&#xff0c;應該避免 """ 所有的子進程在運行結束之后都會變成僵尸進程(死了沒死透)還保留著pid和一些運行過程的中的記錄便于主進程查看(短時間…

嵌入式作業5

在函數main.c中初始化三種顏色的燈&#xff1a; gpio_init(LIGHT_BLUE, GPIO_OUTPUT, LIGHT_OFF); //藍燈 gpio_init(LIGHT_GREEN, GPIO_OUTPUT, LIGHT_OFF); //綠燈 gpio_init(LIGHT_RED, GPIO_OUTPUT, LIGHT_OFF); //紅燈 同時為了響應以上修改&#xff0c;進入isr。c…

STM32 CubeMX使用記錄

取消DMA中斷默認使能 DMA中斷默認使能勾選無法取消選中 取消勾選Force DMA channels interrupts

cadence23---PCB Editer 學習筆記

1.交互式布局 在Orcad中點擊圖標N生成第一網表&#xff1a; 在PCB Editer中導入第一網表&#xff0c; 之后點擊移動命令并在右側屬性框中勾選Symbol選項卡&#xff1a; 設置--應用模式--點擊常規編輯&#xff1a; 之后就可以進行交互式選擇了。 綠色圖標為打開全部飛線&#…

web前端學習筆記11

11. CSS3高級特效 11.1 CSS3變形 CSS3變形是一些效果的集合, 如平移、旋轉、縮放、傾斜效果 每個效果都可以稱為變形(transform),它們可以分別操控元素發生平移、旋轉、縮放、傾斜等變化 語法 transform:[transform-function] ; /* 設置變形函數,可以是一個,也可以是多…

2024年【N1叉車司機】考試題及N1叉車司機找解析

題庫來源&#xff1a;安全生產模擬考試一點通公眾號小程序 N1叉車司機考試題參考答案及N1叉車司機考試試題解析是安全生產模擬考試一點通題庫老師及N1叉車司機操作證已考過的學員匯總&#xff0c;相對有效幫助N1叉車司機找解析學員順利通過考試。 1、【多選題】《特種設備使用…

git使用介紹

一、為什么做版本控制&#xff08;git是版本控制工具&#xff09; 為了保留之前所以的版本&#xff0c;以便回滾和修改 二、點擊安裝 三、基礎操作 1、初步認識 想要讓git對一個目錄進行版本控制需要以下步驟&#xff1a; 進入要管理的文件夾進行初始化命令 git init管理…