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…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
