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日志并搭建日志聚合平台
相关文章:

Nginx - 安全基线配置与操作指南
文章目录 概述中间件安全基线配置手册1. 概述1.1 目的1.2 适用范围 2. Nginx基线配置2.1 版本说明2.2 安装目录2.3 用户创建2.4 二进制文件权限2.5 关闭服务器标记2.6 设置 timeout2.7 设置 NGINX 缓冲区2.8 日志配置2.9 日志切割2.10 限制访问 IP2.11 限制仅允许域名访问2.12 …...
简述js的事件循环以及宏任务和微任务
前言 在JavaScript中,任务被分为同步任务和异步任务。 同步任务:这些任务在主线程上顺序执行,不会进入任务队列,而是直接在主线程上排队等待执行。每个同步任务都会阻塞后续任务的执行,直到它自身完成。常见的同步任…...
[力扣题解] 797. 所有可能的路径
题目:797. 所有可能的路径 思路 深度搜索 代码 // 图论哦!class Solution { private:vector<vector<int>> result;vector<int> path;// x : 当前节点void function(vector<vector<int>>& graph, int x){int i;// cout <&l…...

【QT八股文】系列之篇章3 | QT的多线程以及QThread与QObject
【QT八股文】系列之篇章3 | QT的多线程 前言4. 多线程为什么需要使用线程池线程池的基础知识python中创建线程池的方法使用threading库队列Queue来实现线程池使用threadpool模块,这是个python的第三方模块,支持python2和python3 QThread的定义QT多线程知…...
基于python flask的web服务
基本例子 from flask import Flask app Flask(__name__) app.route(/)#检查访问的网址,根路径走这里 def hello_world():return hello world#返回hello worldif __name__ __main__:# 绑定到指定的IP地址和端口app.run(host0.0.0.0, port1000, debugTrue)##绑定端…...
HTTP 响应分割漏洞
HTTP 响应分割漏洞 1.漏洞概述2.漏洞案例 1.漏洞概述 HTTP 响应拆分发生在以下情况: 数据通过不受信任的来源(最常见的是 HTTP 请求)进入 Web 应用程序。该数据包含在发送给 Web 用户的 HTTP 响应标头中,且未经过恶意字符验证。…...

Algoriddim djay Pro Ai for Mac:AI引领,混音新篇章
当AI遇上音乐,会碰撞出怎样的火花?Algoriddim djay Pro Ai for Mac给出了答案。这款专业的DJ混音软件,以AI为引擎,引领我们进入混音的新篇章。 djay Pro Ai for Mac的智能混音功能,让每一位DJ都能感受到前所未有的创作…...

常见算法(3)
1.Arrays 它是一个工具类,主要掌握的其中一个方法是srot(数组,排序规则)。 o1-o2是升序排列,o2-o1是降序排列。 package test02; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparat…...

集中抄表电表是什么?
1.集中抄表电表:简述 集中抄表电表,又称为远程抄表系统,是一种现代化电力计量技术,为提升电力行业的经营效率和客户服务质量。它通过自动化的形式,取代了传统人工抄水表,完成了数据信息实时、精确、高效率…...

第八届能源、环境与材料科学国际学术会议(EEMS 2024)
文章目录 一、重要信息二、大会简介三、委员会四、征稿主题五、论文出版六、会议议程七、出版信息八、征稿编辑 一、重要信息 会议官网:http://ic-eems.com主办方:常州大学大会时间:2024年06月7-9日大会地点:新加坡 Holiday Inn …...

09.自注意力机制
文章目录 输入输出运行如何运行解决关联性attention score额外的Q K V Multi-head self-attentionPositional EncodingTruncated Self-attention影像处理vs CNNvs RNN图上的应用 输入 输出 运行 链接(Attention Is All You Need) 如何运行 解决关联性 a…...
时政|杂粮产业
政策支持 《新一轮千亿斤粮食产能提升行动方案(2024—2030年)》明确,按照“巩固提升口粮、主攻玉米大豆、兼顾薯类杂粮”的思路,因地制宜发展马铃薯、杂粮杂豆等品种,根据市场需求优产稳供。 产地发展 河北省石家庄…...
docker 安装 私有云盘 nextcloud
拉取镜像 # 拉取镜像 sudo docker pull nextcloud运行nextcloud 容器 # 内存足够可以不进行内存 --memory512m --memory-swap6g # 桥接网络 --network suixinnet --network-alias nextcloud \ sudo docker run -itd --name nextcloud --restartalways \ -p 9999:80 \ -v /m…...

第十一届蓝桥杯物联网试题(国赛)
国赛题目看着简单其实还是挺复杂的,所以说不能掉以轻心,目前遇到的问日主要有以下几点: 本次题主要注重的是信息交互,与A板通信的有电脑主机和B板,所以处理好这里面的交互过程很重要 国赛中避免不了会收到其他选手的…...

算法金 | Dask,一个超强的 python 库
本文来源公众号“算法金”,仅用于学术分享,侵权删,干货满满。 原文链接:Dask,一个超强的 python 库 1 Dask 概览 在数据科学和大数据处理的领域,高效处理海量数据一直是一项挑战。 为了应对这一挑战&am…...
Java 说唱歌手
Yo yo yo,欢迎来到Java地带,技术的盛宴开启, 从JDK到JVM,我们构建的是数字世界的奇迹。 Spring Boot启动,微服务架构轻盈起舞, IoC解耦依赖,AOP切面如丝般顺滑。 Maven管理依赖,Gra…...

面试-软件工程与设计模式相关,Spring简介
面试-软件工程与设计模式相关,Spring简介 1.编程思想1.1 面向过程编程1.2 面向对象编程1.2.1 面向对象编程三大特征 1.3 面向切面编程1.3.1 原理1.3.2 大白话?1.3.3 名词解释1.3.4 实现 2. 耦合与内聚2.1 耦合性2.2 内聚性 3. 设计模式3.1 设计模型七大原…...

IDEA中一些常见操作【持续更新】
文章目录 前言善用debugidea中debug按钮不显示自动定位文件【始终选择打开的文件】idea注释不顶格【不在行首】快速定位类的位置【找文件非常快】创建文件添加作者及时间信息快速跳转到文件顶端 底端 前言 因为这些操作偶尔操作一次,不用刻意记忆,有个印…...

java继承使用细节二
构造器 主类是无参构造器时会默认调用 public graduate() {// TODO Auto-generated constructor stub也就是说我这里要用构造器会直接调用父类。它是默认看不到的 ,System.out.println("graduate");} 但当主类是有参构造器如 public father_(int s,doubl…...
c++11 标准模板(STL)本地化库 - 平面类别(std::numpunct_byname) 表示系统提供的具名本地环境的 std::numpunct
本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析,以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 表示系统提供的具名本地环境的 std::numpunct std::numpunct_byn…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...