写点什么

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:508519

评论

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

Getaverse 2022/12 月报 | 测试网成功上线

Geek_Web3

#区块链# 元宇宙 web3 元宇宙系统开发

YMatrix 5.0重磅发布,以性能突破引领万物智联下的数据库最佳形态

YMatrix 超融合数据库

Machine Learning 性能提升 超融合数据库 OLTP 场景实践 YMatrix

机器学习的4种经典模型总结

九章云极DataCanvas

机器学习 机器学习模型

从“少林寺”毕业后,我当上了开源社区“区长”

Alluxio

采访 开源社区 分布式, Alluxio 大数据 开源

2023年保障企业数据安全几大措施看这里!

行云管家

数据安全 堡垒机 企业数据

大厂前端面试考什么?

loveX001

JavaScript

寻找中国应用现代化先锋的前1%!CNBPA 2022应用现代化系列评选结果揭晓

云原生技术社区

云原生 应用现代化

百万并发场景中倒排索引与位图计算的实践

京东科技开发者

倒排索引 索引 位图 系统 企业号 1 月 PK 榜

2023年成都等级测评机构名单新排名看这里!

行云管家

成都 等保测评 等保测评机构

CSV:简单格式下隐藏的那些坑

华为云开发者联盟

后端 华为云 csv 企业号 1 月 PK 榜

JavaScript刷LeetCode心得

js2030code

JavaScript LeetCode

用javascript分类刷leetcode22.字典树(图文视频讲解)

js2030code

JavaScript LeetCode

前端面试指南之JS面试题总结

loveX001

JavaScript

高性能网关基石——OpenResty

C++后台开发

lua nginx openresty 后端开发 高性能网关

开源工作流引擎如何支撑企业级 Serverless 架构?

阿里巴巴云原生

阿里云 Serverless 云原生 KubeVela

能将三次握手讲到这个程度,不给你offer给谁

华为云开发者联盟

面试 后端 开发 华为云 企业号 1 月 PK 榜

Python从0到1丨细说图像增强及运算

华为云开发者联盟

Python 人工智能 华为云 企业号 1 月 PK 榜

为什么说IO密集型业务,线程数是CPU数的2倍?

小小怪下士

Java 线程 io

可观测产品的最佳实践,涵盖端到端的可观测解决方案丨阿里云用户组深圳站

云布道师

阿里云

阿里云产品专家陶炳哲:Java应用最佳实验

云布道师

阿里云 Java、

这样回答前端面试题才能拿到offer

loveX001

JavaScript

和HHOGene主创谈GPods设计理念:用耳机“播放”光

B Impact

工赋开发者社区 | 《工业元宇宙五大应用场景——案例集汇编》发布

工赋开发者社区

寻找中国云原生实践先锋的前1%!CNBPA 2022云原生最佳实践评选结果揭晓

云原生技术社区

云原生

RocketMQ 5.0 多语言客户端的设计与实现

Apache RocketMQ

RocketMQ 消息

用100W+行代码贡献经验,带你了解如何参与OpenHarmony开源

华为云开发者联盟

开源 后端 华为云 企业号 1 月 PK 榜

前端工程师leetcode算法面试必备-简单的二叉树

js2030code

JavaScript LeetCode

AI科普 | 语音识别准不准?——ASR 效果评测原理与实践

牵着蜗牛去散步

腾讯云 腾讯 最佳实践 语音识别 人工智能’

工赋开发者社区 | “低代码+MOM”,西门子的MES“进化论”

工赋开发者社区

小游戏开发引擎选型建议指南

Onegun

小程序游戏 小游戏引擎

好气啊!为什么我抓不到 baidu 的数据包?

风铃架构日知录

程序员 Java、 java程序员 抓包 数据包

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