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日志并搭建日志聚合平台

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/643996.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【408真题】2009-16

“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…

qemu+gdb调试linux内核

打开CONFIG_DEBUG_INFO,编译内核 通过图形菜单配置该宏,执行make menuconfig。 kernel hacking —> compile-time checks and compiler options —> compile the kernel with debug info 验证是否打开成功,grep -nr “CONFIG_DEBUG_INFO” .config。 打开成功,然后…

AcWing 3466. 清点代码库(STL:map,vector)

3466. 清点代码库 需要求有几种不同数列&#xff0c;每种有多少个&#xff0c;可以想到用map。它的键是一个数列&#xff0c;可以把它放在vector里。也就是map<vector<int>,int> 要满足要求的输出序列&#xff0c;就要想把它放在其他容器&#xff0c;或数组里&…

【Linux】信号之信号的保存和处理详解

&#x1f916;个人主页&#xff1a;晚风相伴-CSDN博客 &#x1f496;如果觉得内容对你有帮助的话&#xff0c;还请给博主一键三连&#xff08;点赞&#x1f49c;、收藏&#x1f9e1;、关注&#x1f49a;&#xff09;吧 &#x1f64f;如果内容有误或者有写的不好的地方的话&…

仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码

码名称&#xff1a;仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码 开发环境&#xff1a;帝国cms7.5 空间支持&#xff1a;phpmysql 仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码自动采集 - 我爱模板网源码名称&#xff1a;仿《Q极速体育》NBACBA体育直…

编程实战:自己编写HTTP服务器(系列3:处理框架)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 系列入口&#xff1a;编程实战…

需求分析部分图形工具

描述复杂的事物时,图形远比文字叙述优越得多,它形象直观容易理解。前面已经介绍了用于建立功能模型的数据流图、用于建立数据模型的实体-联系图和用于建立行为模型的状态图,本节再简要地介绍在需求分析阶段可能用到的另外3种图形工具。 1 层次方框图 层次方框图用树形结…

LaTex 模板 - 东北师范大学申研申博推荐信

文章目录 NENU-Letter-Template项目地址示例特性项目结构如何使用main.texletterContent.tex 如何编译方式 1 &#xff1a;在线编译方式 2 &#xff1a;本地编译 参考 NENU-Letter-Template NENU’s recommendation letter template. 东北师范大学推荐信模板 项目地址 GitHu…

Spring框架学习笔记(五):JdbcTemplate 和 声明式事务

基本介绍&#xff1a;通过 Spring 框架可以配置数据源&#xff0c;从而完成对数据表的操作。JdbcTemplate 是 Spring 提供的访问数据库的技术。将 JDBC 的常用操作封装为模板方法 1 JdbcTemplate 使用前需进行如下配置 1.1 在maven项目的pom文件加入以下依赖 <dependencies…

Windows安装并启动Redis服务端(zip包)

一、Redis简介 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的基于内存的 Key - Value结构的数据库&#xff0c;遵守 BSD 协议&#xff0c;它提供了一个高性能的键值&#xff08;key-value&#xff09;存储系统&#xff0c;常用于缓存、消息队列、会话存储…

c# sqlite使用

安装包 使用 const string strconn "Data Sourcedata.db"; using (SQLiteConnection conn new SQLiteConnection(strconn)) {conn.Open();var cmd conn.CreateCommand();cmd.CommandText "select 1";var obj cmd.ExecuteScalar();MessageBox.Show(ob…

Python小游戏——打砖块

文章目录 打砖块游戏项目介绍及实现项目介绍环境配置代码设计思路代码设计详细过程 难点分析源代码代码效果 打砖块游戏项目介绍及实现 项目介绍 打砖块游戏是一款经典的街机游戏&#xff0c;通过控制挡板来反弹小球打碎屏幕上的砖块。该项目使用Python语言和Pygame库进行实现…

鲁教版七年级数学上册-笔记

文章目录 第一章 三角形1 认识三角形2 图形的全等3 探索三角形全等的条件4 三角形的尺规作图5 利用三角形全等测距离 第二章 轴对称1 轴对称现象2 探索轴对称的性质4 利用轴对称进行设计 第三章 勾股定理1 探索勾股定理2 一定是直角三角形吗3 勾股定理的应用举例 第四章 实数1 …

【实际项目精选源码】ehr人力资源管理系统实现案例(java,vue)

一、项目介绍 一款全源码可二开&#xff0c;可基于云部署、私有部署的企业级数字化人力资源管理系统&#xff0c;涵盖了招聘、人事、考勤、绩效、社保、酬薪六大模块&#xff0c;解决了从人事招聘到酬薪计算的全周期人力资源管理&#xff0c;符合当下大中小型企业组织架构管理运…

心链2---前端开发(整合路由,搜索页面,用户信息页开发)

心链——伙伴匹配系统 接口调试 说书人&#x1f4d6;&#xff1a;上回书说到用了两种方法查询标签1.SQL查询&#xff0c;2.内存查询&#xff1b;两种查询效率是部分上下&#xff0c;打的是难解难分&#xff0c;是时大地皴裂&#xff0c;天色聚变&#xff0c;老祖斟酌再三最后决…

(十一)统计学基础练习题五(50道选择题)

本文整理了统计学基础知识相关的练习题&#xff0c;共50道&#xff0c;适用于想巩固统计学基础或备考的同学。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-统计学二&#xff09;。序号之前的题请看往期文章。 201&#xff09; 202&#xff09; 203&#xff09; 2…

指纹识别概念解析

目录 1. 指纹是物证之首 1.1 起源于中国 1.2 发展于欧洲 1.3 流行于全世界 2. 指纹图像 3. 指纹特征 4. 指纹注册 5. 指纹验证 6. 指纹辨识 1. 指纹是物证之首 指纹识别技术起源于中国、发展于欧洲、流行于全世界。自20世纪以来&#xff0c;指纹在侦破刑事案件、解决诉…

《图解支付系统设计与实现》电子书_V20240525

相较于上次公开发布的V20240503版本&#xff0c;变更内容如下&#xff1a; 根据掘金网友zz67373&#xff08;李浩铭&#xff09;的勘误建议&#xff0c;优化了部分描述。增加&#xff1a;金额处理规范&#xff0c;低代码报文网关实现完整代码&#xff0c;分布式流控等内容。扩…

CSS语法介绍

文章目录 前言一、CSS引入方式1.行内操作2.内部操作3.外部操作 二、常用选择器1.标签选择器2.类选择器3.id选择器4.群组选择器5.后代选择器 三、字体常用设置1.字体类型2.字体大小3.字体样式4.字体粗细 四、div盒子模型1.盒子边框2.外边距3.内边距4.浮动 综合实战案例 前言 以…

每日一题 求和

1.题目解析 求和_牛客题霸_牛客网 (nowcoder.com) 这一题&#xff0c;主要描述的就是求满足和为m的子序列&#xff0c;对与子序列的问题可以使用决策树。 2.思路分析 决策树如下图所示: 递归结束条件&#xff1a; 当当前和 sum 等于目标和 m 时&#xff0c;说明找到了一个满…