设置header_Nginx的这些安全设置,你都知道吗?

ef70a7ccd7af3ea2789a1291753f7d0f.png

Nginx 是最流行的 Web 服务器,可以只占用 2.5 MB 的内存,却可以轻松处理 1w 的 http 请求。

做为网站的入口,Nginx 的安全设置重要性不言而喻。

下面带你一起去认识一下这些安全配置吧!

nginx.conf是 Nginx 最主要的配置文件,大部分的安全配置都在这个文件上进行。

禁用不需要的 Nginx 模块

自动安装的 Nginx 会内置很多模块,并不是所有的模块都需要,对于非必须的模块可以禁用,如 autoindex module ,下面展示如何禁用

# ./configure --without-http_autoindex_module# make# make install

不展示 server tokens

默认情况下,Nginx 的 server tokens 会在错误页面显示 Nginx 的版本号,这可能会导致信息泄露,未经授权的用户可能会了解你使用的nginx版本。 应该在 nginx.conf 通过设置 server_tokens off 来禁用

3f36b5490c50354f5fca1eede62a3ccb.png

控制资源和限制

为了防止对 Nginx 进行潜在的 DOS 攻击,可以为所有客户端设置缓冲区大小限制,配置如下:

  • client_body_buffer_size 指定客户端请求主体缓冲区的大小。默认值为8k或16k,但建议将此值设置为低至1k:client_body_buffer_size 1k
  • client_header_buffer_size 为客户端请求标头指定标头缓冲区大小。 设置为 1k 足以应付大多数请求。
  • client_max_body_size 为客户端请求指定可接受的最大正文大小。 设置为 1k 应该足够了,但是如果通过 POST方法接收文件上传,则需要增加它。
  • large_client_header_buffers 指定用于读取大型客户端请求标头的缓冲区的最大数量和大小。将最大缓冲区数设置为 2,每个缓冲区的最大大小为 1k。该指令将接受 2 kB 数据, large_client_header_buffers 2 1k

禁用所有不需要的 HTTP 方法

禁用所有不需要的 HTTP 方法,下面设置意思是只允许 GET、HEAD、POST 方法,过滤掉 DELETE 和 TRACE 等方法。

location / {limit_except GET HEAD POST { deny all; }}

另一种方法是在 server 块 设置,不过这样是全局设置的,要注意评估影响

if ($request_method !~ ^(GET|HEAD|POST)$ ) {    return 444; }

监控访问日志和错误日志

持续监控和管理 Nginx 的错误日志,就能更好的了解对 web 服务器的请求,注意到任何遇到的错误,有助于发现任何攻击尝试,并确定您可以执行哪些操作来优化服务器性能。

可以使用日志管理工具(例如 logrotate )来旋转和压缩旧日志并释放磁盘空间。 同样,ngx_http_stub_status_module 模块提供对基本状态信息的访问。

d271915dc955edb6d870079a2de47b23.png

合理配置响应头

为了进一步加强 Nginx web 的性能,可以添加几个不同的响应头,推荐

X-Frame-Options

可以使用 X-Frame-Options HTTP 响应头指示是否应允许浏览器在 或

配置文件中添加:

add_header X-Frame-Options "SAMEORIGIN";

Strict-Transport-Security

HTTP Strict Transport Security,简称为 HSTS。它允许一个 HTTPS 网站,要求浏览器总是通过 HTTPS 来访问它,同时会拒绝来自 HTTP 的请求,操作如下:

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

CSP

Content Security Policy (CSP) 保护你的网站避免被使用如 XSS,SQL注入等手段进行攻击,操作如下:

add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;

配置 SSL 和 cipher suites

Nginx 默认允许使用不安全的旧 SSL 协议,ssl_protocols TLSv1 TLSv1.1 TLSv1.2,建议做如下修改:

ssl_protocols TLSv1.2 TLSv1.3;

此外要指定 cipher suites ,可以确保在 TLSv1 握手时,使用服务端的配置项,以增强安全性。

ssl_prefer_server_ciphers on

定期更新服务器

旧版的 Nginx 总会存在各种各样的漏洞,所以最好更新到最新版。

漏洞可以去各大 CVE 网站去查询,Nginx 最新版则去官网查看。

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

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

相关文章

动态路由协议_动态路由协议的类别

动态路由协议Dynamic routing protocols have been divided into 2 categories i.e Distance vector protocols and Link state protocols. Both of these protocols are being explained in detail in this tutorial. 动态路由协议分为距离矢量协议和链路状态协议两大类 。 本…

docker镜像创建与优化

1 . 创建镜像 有两种方法构建镜像: docker commit :将运行的容器保存成镜像Dockerfile:自动构建 使用docker commit 创建镜像分为三步: 运行容器修改容器将容器保存为镜像 举例: [rootdocker ~]# docker load -i…

ISP运营商实验室测试机架拓扑搭建经验分享

大家好,有些日子没更新干货了,近期难得有假期进行修整,思前顾后还是坐下来聊聊自己长期负责维护和搭建的实验室环境。废话不多说,直接上图。因为图较大,分上下部分进行上传。网络主框架(上)服务…

关于二手交易用户指南怎么写_让用户拍案叫绝文案怎么写?试试这3个方法

“共鸣”到底是什么? 为什么有些文章会引起共鸣,而有些则没有。现在假设为产品家用手持式美容仪写一份副本。 由于主要重点是“家庭使用”,因此您立即想到了“家庭美容”的口号。 尽管这句话很简单易懂,但谈论起来总是很简单……似…

结构化程序goto语句_C ++ goto语句| 查找输出程序| 套装1

结构化程序goto语句Program 1: 程序1&#xff1a; #include <iostream>#include <math.h>using namespace std;int main(){int num1 1;int num2 0;MY_LABEL:num2 num1 * num1;cout << num2 << " ";num1 num1 pow(2, 0);if (num1 < …

docker仓库搭建、加密、用户认证

1 . 含义及理解&#xff1a; 仓库分为公开仓库&#xff08;Public&#xff09;和私有仓库&#xff08;Private&#xff09;两种形式。最大的公开仓库是 Docker Hub&#xff0c;存放了数量庞大的镜像供用户下载。 国内的公开仓库包括 Docker Pool等&#xff0c;可以提供大陆用户…

Centos7+Nginx+Keepalived实现Apache服务的高可用负载均衡

Centos7NginxKeepalived实现Apache服务的高可用&负载均衡今天是2017年的第一天&#xff0c;昨天也就是2016年的最后一天&#xff0c;我尝试部署了Centos7NginxKeepalived实现WEB服务的高可用负载均衡服务&#xff0c;终于在2017年的第一天前完成了&#xff0c;所以在此分享…

客户端通过网口启动可过去的ip_西安交通大学16年3月课程考试《网络组网技术综合训练》作业考核试题...

西安交通大学16年3月课程考试《网络组网技术综合训练》作业考核试题一、单选题(共 20 道试题&#xff0c;共 40 分。)V 1. 下列不属于服务器内部结构的是()A. CPUB. 电源C. 5类双绞线D. 北桥芯片满分&#xff1a;2 分2. 网络中使用光缆的优点是()A. 便宜B. 容易安装C. 是一个工…

mcq 队列_MCQ | 软件工程基础知识/简介(1)

mcq 队列Q1. Which of the following is a part of the software? Q1。 以下哪个是软件的一部分&#xff1f; Programs 程式 Documentation 文献资料 Operating Procedures 运营流程 All of the above 上述所有的 Answer: d. All of the above 答案&#xff1a; d。 上述所有…

docker设置镜像加速器

设置镜像加速器 一般情况下&#xff0c;直接从官方仓库中直接拉取镜像会比较慢&#xff0c;可以设置镜像加速器&#xff0c;相当于一个反向代理。以阿里云为例 1 . 首先获取自己的加速器地址 www.aliyun.com 登陆自己的账号&#xff08;可以是支付宝账号&#xff09; 首页点…

keytool条目_java keytool 常用命令

最近在做ssl连接active directory&#xff0c; 遇到了不少的ssl的问题。连接ssl时会需要用将证书保存到keystore&#xff0c; 而这个步骤刚好就用到了keytool命令。直接敲keytool会有提示如何用这个命令&#xff0c; 但对于完全不懂的我&#xff0c;还是找了下基本命令&#xf…

用JavaScript中的示例进行fill()函数

fill() is a predefined function in JavaScript, which is used to fill all elements of an array with a static value. fill()是JavaScript中的预定义函数&#xff0c;用于用静态值填充数组的所有元素。 Example: 例&#xff1a; <html><head><title>J…

谈谈重载(overload)覆盖(override)与隐藏

这三个概念都是与OO中的多态有关系的。如果单是区别重载与覆盖这两个概念是比较容易的&#xff0c;但是隐藏这一概念却使问题变得有点复杂了&#xff0c;下面说说它们的区别吧。重载是指不同的函数使用相同的函数名&#xff0c;但是函数的参数个数或类型不同。调用的时候根据函…

搭建Harbor私有仓库

1 首先装好docker&#xff1a; 由于之前已安装过&#xff0c;所以直接开起就行 2 . 安装python2.7以上版本 之前编译安装过7.3的&#xff0c;直接用吧 3 . 安装docker-compose docker容器管理工具&#xff0c;是habor的依赖之一。 curl -L "https://github.com/docker…

mysql日志查询指令_MySQL查询日志总结

MySQL查询日志介绍MySQL的查询日志记录了所有MySQL数据库请求的信息。无论这些请求是否得到了正确的执行。默认文件名为hostname.log。默认情况下MySQL查询日志是关闭的。生产环境&#xff0c;如果开启MySQL查询日志&#xff0c;对性能还是有蛮大的影响的。另外很多时候&#x…

thinkphp5.0助手函数占用服务器资源

db(user) 默认情况下&#xff0c;每次请求都会重新连接数据库&#xff0c;这样会占用服务器资源 方法1.如果不想每次都重连可以这样 db("List",[],false) 方法2.还可以直接改function&#xff0c;及则需要把 function db($name , $config [], $force true){retu…

python 无符号整数_Python中的有符号和无符号整数数组

python 无符号整数An array can be declared by using "array" module in Python. 可以通过在Python中使用“数组”模块来声明数组 。 Syntax to import "array" module: 导入“数组”模块的语法&#xff1a; import array as array_alias_nameHere, imp…

mysql快速批量入库_MySQL-批量入库优化

MySQL批量入库的方式循环一条一条入库批量入库通过程序组合 insert into (字段) tbl vlaues(), vlaues(), vlaues(),...事务入库$autoCommit (isset($this->startTransaction) ? !$this->startTransaction : true);$ids array();if ($autoCommit) {$this->startTra…

docker集群搭建(k8s)

1 . 理解&#xff1a; Kubernetes是一个开源的&#xff0c;用于管理云平台中多个主机上的容器化的应用&#xff0c;Kubernetes的目标是让部署容器化的应用简单并且高效&#xff08;powerful&#xff09;,Kubernetes提供了应用部署&#xff0c;规划&#xff0c;更新&#xff0c…

Python模拟删除字符串两边的空白

目标&#xff1a;   1.使用string模块的whitespace   2.删除左边、右边以及两边的空白 代码如下&#xff1a; [rootlocalhost python]# cat rmspace.py #!/usr/bin/env python #coding:utf8 """ 使用字符串删除左右两端的空白。 """from str…