Nginx中间件安全基线配置与操作指南-翻译

1、日志配置

安全基线项目名称

Nginx日志审计安全基线要求项

安全基线编号

Nginx-001

安全基线项说明

配置Nginx日志记录和审核

设置操作步骤

(1)编辑 nginx.conf 配置文件

将 error_log 前的“#”去掉,记录错误日志;

将 access_log 前的“#”去掉,记录访问日志。

(2)设置 access_log,修改配置文件如下:

log_format  formatname  '$remote_addr - $remote_user [$time_local] "$request" '

 '$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log logs/access.log formatname;

#formatname 是设置配 置文件格式的名称志

基线符合性判定依据

查看 nginx.conf 配置文件中,error_log、access_log 前的 “#”是否去掉

备注

2、服务管理

2.1、限制IP访问

安全基线项目名称

Nginx IP访问控制安全基线要求项

安全基线编号

Nginx-002

安全基线项说明

对网站或敏感目录的访问IP进行限制

设置操作步骤

(1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置参考如下:

location / {

deny 192.168.1.1; #拒绝 IP

allow 192.168.1.0/24; #允许 IP

allow 10.1.1.0/16; #允许 IP 

deny all; #拒绝其他所有 IP

(2)重新启动 nginx 服务

基线符合性判定依据

查看对网站或敏感目录的访问情况是否有 IP 限制。

备注

根据应用场景,设置合适的 IP 地址,检查配置文件 #more /usr/local/nginx/conf/nginx.conf 中的 server 项。

2.2、控制超时时间

安全基线项目名称

Nginx 超时控制管理安全基线要求项

安全基线编号

Nginx-003

安全基线项说明

控制超时时间,提高服务器性能,降低客户端的等待时间

设置操作步骤

(1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

client_body_timeout 10; #设置客户端请求主体读取超时时间

client_header_timeout 10; #设置客户端请求头读取超时时间

keepalive_timeout 5 5; #第一个参数指定客户端连接保持活动的超时时间,第二个参数是可选的,它指定了消息头保持活动的有效时间

send_timeout 10; #指定响应客户端的超时时间

(2)重新启动 nginx 服务

基线符合性判定依据

检查配置文件 #more /usr/local/nginx/conf/nginx.conf

备注

根据应用场景的需要选择合适的参数值。

2.3、强制网站使用域名

安全基线项目名称

Nginx强制网站使用域名安全基线要求项

安全基线编号

Nginx-004

安全基线项说明

躲避IP扫描

设置操作步骤

(1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

       if ($host !~* 'abc.com'){

                  return 403;

          }

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

abc.com 替换成自己使用的域名

3、访问权限

3.1、错误页面处理

安全基线项目名称

Nginx 错误页面安全基线要求项

安全基线编号

Nginx-005

安全基线项说明

禁止在所有自动产生的错误页面中显示nginx版本号,防止泄露敏感信息

设置操作步骤

(1) 修改文件$NGINX_HOME/conf/nginx.conf

在 http 模块下添加或则修改为 server_tokens off;

(2) 重新启动 Nginx 服务

基线符合性判定依据

在地址栏输入一个不存在的页面,验证是否已不显示版本号。

备注

3.2、防止目录遍历

安全基线项目名称

Nginx 防止目录遍历安全基线要求项

安全基线编号

Nginx-006

安全基线项说明

防止服务器目录被遍历,威胁用户数据安全

设置操作步骤

(1)修改文件$NGINX_HOME/conf/nginx.conf

在 http 模块下添加或则修改为 autoindex off;

(2)重新启动 Nginx 服务。

基线符合性判定依据

查看配置文件 nginx.conf 有无相关设置。

备注

3.3、连接超时设置

安全基线项目名称

Nginx 连接超时管理安全基线要求项

安全基线编号

Nginx-007

安全基线项说明

设置连接超时自动断开,防范DDOS攻击

设置操作步骤

(1)修改文件$NGINX_HOME/conf/nginx.conf

在 http 模块下添加或则修改为

keepalive_timeout 65; (数值根据需要调整)

(2)重新启动 Nginx 服务。

基线符合性判定依据

查看配置文件 nginx.conf 有无超时设置

备注

3.4、限制访问的方法

安全基线项目名称

Nginx 限制访问方法安全基线要求项

安全基线编号

Nginx-008

安全基线项说明

拒绝除post/get/head方法外的其他方法请求

设置操作步骤

1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

       if($request_method !~ ^(GET|HEAD|POST)$) {

     return404;

       }

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

3.5、过滤非法user-agent

安全基线项目名称

Nginx 限制访问方法安全基线要求项

安全基线编号

Nginx-008

安全基线项说明

拒绝除post/get/head方法外的其他方法请求

设置操作步骤

1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

       if($request_method !~ ^(GET|HEAD|POST)$) {

     return404;

       }

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

3.6、URL过滤敏感字

安全基线项目名称

Nginx URL过滤敏感字安全基线要求项

安全基线编号

Nginx-010

安全基线项说明

拒绝一些非法访问

设置操作步骤

1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

       if ($query_string ~* "union.*select.*\(") {

rewrite ^/(.*)$ $host permanent;

}

if ($query_string ~* "concat.*\(") {

 rewrite ^/(.*)$ $host permanent;

}

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

3.7、过滤特定url

安全基线项目名称

Nginx 过滤特定URL安全基线要求项

安全基线编号

Nginx-011

安全基线项说明

拒绝访问敏感文件

设置操作步骤

1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

 location ~* \.(bak|save|sh|sql|mdb|svn|git|old)$ {

rewrite ^/(.*)$ $host permanent;

}

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

3.8、隐藏X-Powered-By头

安全基线项目名称

Nginx 隐藏X-Powered-By安全基线要求项

安全基线编号

Nginx-011

安全基线项说明

隐藏Nginx后端服务指定Header的状态,防止暴露后端语言或框架

设置操作步骤

(1)修改文件$NGINX_HOME/conf/nginx.conf

在 http 模块下配置proxy_hide_header项;添加或则修改为

proxy_hide_header X-Powered-By; proxy_hide_header Server;

(2)重新启动 Nginx 服务。

基线符合性判定依据

备注

4、自定义缓存

安全基线项目名称

Nginx 自定义缓存安全基线要求项

安全基线编号

Nginx-012

安全基线项说明

设置自定义缓存以限制缓冲区溢出攻击

设置操作步骤

1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

       client_body_buffer_size 16K; client_header_buffer_size 1k; client_max_body_size 1m; large_client_header_buffers 4 8k;

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

上述的参数不是最优参数,仅供参考,请根据linux服务器配置修改

5、SSL协议加固

安全基线项目名称

Nginx SSL协议加固安全基线要求项

安全基线编号

Nginx-013

安全基线项说明

配置只允许ssl使用tls1.3或以上协议

设置操作步骤

1)修改配置文件

#vim /usr/local/nginx/conf/nginx.conf

具体设置如下:

Server{

       ......

       ssl_protocols TLSv1.2;

        ......

}

(2)重新启动 nginx 服务

基线符合性判定依据

备注

配置此项请确认nginx支持OpenSSL,运行nginx -V 如果返回中包含built with OpenSSL则表示支持OpenSSL

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云原生核心原则和特征

云原生(Cloud Native)是一种软件开发和部署方法论,旨在充分利用云计算的优势来构建和管理应用程序。云原生应用程序是专为在云环境中设计、构建和运行的应用程序。 以下是云原生的一些核心原则和特征: 微服务架构:云…

TSINGSEE青犀视频安防监控视频平台EasyCVR设备在线,视频无法播放的原因排查

可支持国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等多种协议接入的安防监控视频平台EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、…

IDEA全局设置MyBatis中写SQL语句提示

第一步:把这两个设置改成MySQL即可: 第二步:找到设置>编辑器>语言注入>店家加号,选择MySQL

微信小程序在使用vant组件库时构建npm报错

在跟着vant官方进行使用步骤一步步操作时,由于要构建NPM,但NPM包在App配置文件的外部 所以在做下图这一步时: 接着再进行npm构建时会报错 message:发生错误 Error: F:\前端学习\前端框架\小程序\project\demo\miniprogram解决方法 &#xf…

Linux Centos 8 用户管理之重置密码

如果在使用linux系统时遇到系统密码问题无法进入系统或者操作的时候可以按照下面的方法重置用户密码。 一、root用户密码重置: 方式一: 1.重启电脑或虚拟机,在刚进引导界面时候按“e"键,进入编辑模式。 2.在”quiet"…

Java:正则表达式书写规则及相关案例:检验QQ号码,校验手机号码,邮箱格式,当前时间

正则表达式 目标:体验一下使用正则表达式来校验数据格式的合法性。需求:校验QQ号码是否正确,要求全部是数字,长度是(6-20)之间,不能以0开头 首先用自己编写的程序判断QQ号码是否正确 public static void main(String[] args) {Sy…

递归、搜索与回溯算法

一.递归 (1)汉诺塔问题 当n2时,要将A中最下面盘子上方的盘子放到B上,最下面盘子放到C上,再将B上的盘子通过A放到C即可; 当n3时,要将A中最下面盘子上方的盘子放到B上,最下面盘子放到…

如何通过nginx反向代理实现不同域名映射到同一台服务器的相同端口

要在Nginx中实现不同域名映射到同一台服务器的相同端口,您可以使用Nginx的代理转发技术。 首先,您需要了解Nginx的代理转发工作原理。Nginx的代理转发是指在代理服务器(proxy server)收到一个请求时,先将请求转发给目…

Spark2.2出现异常:ERROR SparkUI: Failed to bind SparkUI

详细错误信息如下: 复制代码 19/03/19 11:04:18 INFO util.log: Logging initialized 5402ms 19/03/19 11:04:18 INFO server.Server: jetty-9.3.z-SNAPSHOT 19/03/19 11:04:18 INFO server.Server: Started 5604ms 19/03/19 11:04:18 WARN util.Utils: Service ‘S…

uniapp 小兔鲜儿 - 首页模块(1)

目录 自定义导航栏 静态结构 安全区域​ 通用轮播组件 静态结构 自动导入全局组件 全局组件类型声明 .d.ts文件 注册组件 vue/runtime-core 首页 – 轮播图指示点 首页 – 获取轮播图数据 首页 – 轮播图数据类型并渲染 首页 – 轮播图总结 首页分类 首页 – 前…

电影评论:二分类

跟着《python深度学习》做了个书上小项目,现在总结下该项目内容。 获取数据(这里获取的是IMDB数据集,其中有train_data和train_label两个标签,train_data:英文句子,train_label:正/负面(0,1)) from keras.d…

Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库

在之前的《手把手教你用 NebulaGraph AI 全家桶跑图算法》中,除了介绍了 ngai 这个小工具之外,还提到了一件事有了 Jupyter Notebook 插件: https://github.com/wey-gu/ipython-ngql,可以更便捷地操作 NebulaGraph。 本文就手把手教你咋在 J…

计算机网络核心-数据交换

1 概述 计算机网络的核心即数据交换。通过数据交换将数据从源主机发送到目的主机。 2 为什么需要数据交换 如果不是数据交换的方式,而是每两台主机直接连接,则会产生N^2链路问题。 即,假设有N台主机,两两间建立连接&#xff0c…

【笔记】用pair同时存三个数据

B - Roulette 做题链接:abc 问题陈述 N人、1人、2人、……人、N人正在玩轮盘赌。一次轮盘赌的结果是从0到36的37个整数中的一个。对于每个i1,2,…,N,i人在37个可能结果中的Ci​个下了注:Ai,1​,Ai,2​,…,Ai,Ci​​. 转盘已经转动&#x…

verilog学习笔记5——进制和码制、原码/反码/补码

文章目录 前言一、进制转换1、十进制转二进制2、二进制转十进制3、二进制乘除法 二、原码、反码、补码1、由补码计算十进制数2、计算某个负数的补码 前言 2023.8.13 天气晴 一、进制转换 1、十进制转二进制 整数:除以2,余数倒着写 小数:乘…

在Qt中实现鼠标监听与交互

文章目录 概述1. 包含头文件2. 实现鼠标事件函数3. 使用示例4. 应用场景 概述 鼠标监听是在Qt应用程序中实现用户交互的关键部分之一。通过捕获鼠标事件,您可以响应用户的点击、移动和释放动作,实现各种交互效果。本篇博文将详细介绍在Qt中如何进行鼠标…

QT信号与槽的理解

文章目录 信号与槽的理解 信号与槽的理解 信号就是事件,比如button被点击的事件,ComboBox选项改变的事件,都是信号槽就是对信号进行响应的函数,可以是任意自定义函数一个信号可以对应多个槽多个信号可以对应一个槽信号的参数不能…

华为智选首款纯电轿跑“LUXEED”能大卖吗?

监制 | 何玺 排版 | 叶媛 华为智选纯电轿跑来袭! 8月7日,华为常务董事余承东在社交媒体上发文,宣布华为智选即将推出首款“突破想象”的纯电轿跑车。 01 华为智选首款纯电轿跑来袭 余承东的发文引起了极大关注,在各大媒体的报…

百度资深PMO阚洁受邀为第十二届中国PMO大会演讲嘉宾

百度在线网络技术(北京)有限公司资深PMO阚洁女士受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾,演讲议题:运筹于股掌之间,决胜于千里之外 —— 360斡旋项目干系人。大会将于8月12-13日在北京举办,…

Android 周期任务

AlarmManager使用 1.创建意图 // 创建意图,启动MonthlyTaskServiceIntent intent new Intent(getContext(), TimeTaskService.class); // 传递数据intent.putExtra(TimeTaskService.KEY_TITLE,userRemind.getTitle());intent.putExtra(TimeTaskService.KEY_DEC,u…