写点什么

Linux 系统安全(七):Nginx 安全

  • 2019-08-23
  • 本文字数:1544 字

    阅读完需:约 5 分钟

Linux系统安全(七):Nginx 安全

Nginx 是 Web 服务器领域的后起之秀,以其现代软件架构设计所提供的高性能和灵活性而被越来越多的网站所采用,在 2018 年 2 月活跃网站中的使用比例已达到 21.23%(数据来源:Netcraft),是继 Apache 之后的第二大 Web 服务器软件。在该部分,我们重点关注 2 个方面的 Nginx 的安全设置:使用 HTTPS 加密和使用 NAXSI 加固。

使用 HTTPS 加密网站

从 CA 签发机构购买了 SSL 证书后,在 Nginx 上配置 HTTPS 的方法是在配置文件 nginx.conf 中,添加以下配置项:


ssl on;ssl_certificate /opt/cert/server.crt; #指定证书存储位置ssl_certificate_key /opt/cert/server.key; #指定私钥存储位置ssl_session_timeout 5m; #指定SSL会话超时时间ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #指定SSL协议版本ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#指定SSL加密算法ssl_prefer_server_ciphers on; #指定优先采用服务器端加密算法
复制代码


在配置完成后,使用 nginx -t 检查配置项是否有误。如无报错,则可以通过重启 nginx 进程来使配置文件生效。

使用 NAXSI 加固 Web

NAXSI 是 Nginx 服务器上常见的 Web 应用防火墙。NAXSI 的含义是“Nginx Anti XSS & SQL Injection”(Nginx 防御跨站脚本和 SQL 注入),其官方网站是https://github.com/nbs-system/naxsi。从技术上来说,NAXSI 是 Nginx 的第三方模块,适用于很多类 UNIX 的操作系统平台上。


NAXSI 和 ModSecurity 相比,有如下的不同点:


  • NAXSI 可以通过学习模式建立白名单机制,从而使用默认拒绝的方式来最大化的保障 Web 安全。这通常适用于网站代码和功能不频繁变化的场景,否则极易产生误报。

  • 在黑名单模式下,NAXSI 规则更加简洁,它通过对 HTTP 请求体中出现的所有恶意字符设置分数并求和、达到一定阈值则拒绝请求的方式来实现安全防御;而在 ModSecurity 使用场景下,通常通过设置精细的正则表达式在一条规则中即判断是放行或者禁止。


NAXSI 的核心规则集下载地址是:https://github.com/nbs-system/naxsi/blob/master/naxsi_config/naxsi_core.rules。


我们通过以下规则来熟悉 NAXSI 的原理:


MainRule "str:\"" "msg:double quote" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:8,$XSS:8" id:1001; MainRule "str:0x" "msg:0x, possible hex encoding" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:2" id:1002;MainRule "str:'" "msg:simple quote" "mz:ARGS|BODY|URL|$HEADERS_VAR:Cookie" "s:$SQL:4,$XSS:8" id:1013;
复制代码


其中:


  • id 为 1001 的规则表示,如果在请求体(BODY)、统一资源定位符(URL)、请求参数(ARGS)、请求头部(Cookie)任何地方出现了双引号("),那么就把该请求可能是 SQL 注入、跨站脚本攻击的判断分数分别设置为 8

  • id 为 1002 的规则表示,如果在请求体(BODY)、统一资源定位符(URL)、请求参数(ARGS)、请求头部(Cookie)任何地方出现了双引号("),那么就把该请求可能是 SQL 注入判断分数设置为 2

  • id 为 1013 的规则表示,如果在请求体(BODY)、统一资源定位符(URL)、请求参数(ARGS)、请求头部(Cookie)任何地方出现了单引号(’),那么就把该请求可能是 SQL 注入的判断分数设置为 4 并且把跨站脚本攻击的判断分数设置为 8


通过在 Nginx 配置文件中加入以下示例片段即可根据每条规则得出来的分数累加值加以控制,也就是放行或者禁止:


CheckRule "$SQL >= 8" BLOCK;CheckRule "$RFI >= 8" BLOCK;CheckRule "$TRAVERSAL >= 4" BLOCK;CheckRule "$EVADE >= 4" BLOCK;CheckRule "$XSS >= 8" BLOCK;
复制代码

关注 Nginx 漏洞情报

Nginx 漏洞信息会由官方发布,笔者建议 Nginx 管理员重点下相关漏洞。在出现高危漏洞时,及时进行版本升级。


本文内容来自作者图书作品《Linux 系统安全:纵深防御、安全扫描与入侵检测》,点击购买


2019-08-23 09:508417

评论

发布
暂无评论
发现更多内容

修改gradle脚本,加速spring4.1源码编译构建速度

程序员欣宸

Java spring Gradle 6月月更

C#入门系列(五) -- 运算符

陈言必行

C# 6月月更

Web Service进阶(一)运行原理

No Silver Bullet

6月月更 Web Service 运行原理

Linux驱动开发_数码相册项目、360WIFI驱动移植介绍

DS小龙哥

6月月更

数据库每日一题---第3天:大的国家

知心宝贝

数据库 算法 前端 后端 6月月更

Kubernetes社区发行版:开源容器云OpenShift Origin(OKD)认知

山河已无恙

k8s openshift

关于 SAP Commerce Cloud 的 Sample Setup Github 仓库

汪子熙

typescript angular SAP commerce 6月月更

Squarespace 和 WordPress 的区别

海拥(haiyong.site)

WordPress 6月月更

Flink on yarn 远程调试源码

JasonLee实时计算

flink

Fork Join框架

急需上岸的小谢

6月月更

spring event 介绍

Nick

Java spring springboot 6月月更 spring event

【LeetCode】数组中第 K 个独一无二的字符串Java题解

Albert

LeetCode 6月月更

《WebRTC源码深入剖析》总结

音视频专家-李超

源码分析 音视频 WebRTC 源码剖析

后端技术复习

卢卡多多

技术栈 6月月更

详述Java中sort排序函数

工程师日月

算法 Java EE 6月月更

Django API 开发:一个 Todo 应用的后端

宇宙之一粟

6月月更

【盲盒APP】开发功能版块及功能介绍

WDL22119

以购物清单为例讲述 Redux 的状态如何在 Flutter 多个组件间共享

岛上码农

flutter 安卓开发 ios 开发 跨平台应用 6月月更

EasyRecovery15官方最新版下载功能介绍

茶色酒

EasyRecovery Easyrecovery破解 EasyRecovery15

Fabric.js 居中元素 🎗️

德育处主任

fabric canvas FabricJS Fabric.js 6月月更

【Spring 学习笔记(四)】Spring Bean 集合注入和自动装配

倔强的牛角

spring Java EE 6月月更

700行无用 纯 CSS 祝考生 金榜高粽《1_bit 的无用 CSS 代码 》

1_bit

CSS html 前端

JavaScript迭代器

大熊G

JavaScript 前端 6月月更

java构造器(构造方法、构造函数)

写代码两年半

面试 javase 构造函数 6月月更

浅谈网络攻防中守方的准备工作

kk冲击波

6月月更 攻防演练

Flink 通过 State Processor API 实现状态的读取和写入

JasonLee实时计算

flink

Linux下可执行程序的Shell传参格式规范

乌龟哥哥

6月月更

Web Service进阶(三)HTTP-GET, HTTP-POST and SOAP的比较

No Silver Bullet

soap 6月月更 Web Service HTTP-GET HTTP-POST

使用 TensorFlow 和 Express.js 实现AI图像识别

devpoint

tensorflow Express 6月月更

Sentinel与OpenFeign 服务熔断那些事

牧小农

sentinel openfeign

Python环境搭建

芯动大师

Python编程 6月月更 Python环境

Linux系统安全(七):Nginx 安全_安全_胥峰_InfoQ精选文章