写点什么

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

评论

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

ManageEngine卓豪简化变更管理的工作方法(五)

ServiceDesk_Plus

变更管理 ManageEngine卓豪

Web前端入门:JavaScript DOM 节点查找常用方法

电子尖叫食人鱼

JavaScript 前端 Web

用 Trae 入门 CloudWeGo-Kitex,包教包会!

火山引擎开发者社区

#Trae

Dify发布V1.5.0:可视化故障排查!超实用

王磊

MindIE-LLM ATB模型推理全流程解析

AI布道Mr.Jin

Iontra助力减排1亿吨CO₂

财见

2026杭州国际人工智能与应用场景展览会

AIOTE智博会

人工智能展览会 人工智能展会 人工智能博览会 人工智能展

一手生态开放,一手技术突围,昇腾CANN成中国AI创新底座

极客天地

多模态数据湖焕新升级,企业新一代AI Native的数据基建

火山引擎开发者社区

人工智能

零基础音视频入门:你所不知道的Web前端音视频知识

JackJiang

【KWDB创作者计划】实战指南:KWDB 2.2.0数据分析与性能调优深度对比

KaiwuDB

Illustrator 替代品!矢量/像素双模式切换 Affinity Designer中文版

柠檬与橘子

轻帆云ITSM智能知识库,助力企业运营创新与服务价值提升

云智慧AIOps社区

ITSM 工单系统 企业知识库

智算时代的流量枢纽:蚂蚁 AI Gateway 如何提升大模型推理效能

蚂蚁开源

Gateway 蚂蚁集团 MOSN 蚂蚁开源

荣誉|奇点云荣获“2024年度杭州市总部企业”

奇点云

杭州 总部企业

编程智能体+MCP:让 AI 提取和总结微信聊天记录,再也不怕错过重要信息

阿里巴巴云原生

阿里云 通义灵码

「宇树科技」年度营收超10亿元,13家“宇树链”企业梳理!

机器人头条

机器人 科技 人形机器人 具身智能 宇树科技

Nacos 3.0 架构全景解读,AI 时代服务注册中心的演进

阿里巴巴云原生

阿里云 云原生 nacos

移动AI一周年,5G-A和AI究竟把世界变成什么样?

脑极体

AI

打通数据孤岛:基于对象存储的多云可观测融合实战

阿里巴巴云原生

阿里云 云原生 日志服务

Swift Publisher 5|2000+模板搞定印刷/电子出版

柠檬与橘子

编程智能体+MCP:让 AI 提取和总结微信聊天记录,再也不怕错过重要信息

阿里云云效

阿里云 通义灵码

NocoBase 本周更新汇总:外部数据源支持按需加载数据表

NocoBase

开源 低代码 零代码 无代码 版本更新

扣子企业交流日最全回顾|数万家企业都在怎么用扣子?

火山引擎开发者社区

AI 扣子

AI时代的数据智能跃迁:数据、工具与组织的进化

火山引擎开发者社区

AI

文心快码发布AI IDE,智能体自动写代码,设计稿一键转代码,打造开发者个性化IDE

百度Geek说

“团队敏捷教练进阶课程” 8月23-24日 · A-CSM认证周末班

ShineScrum

敏捷教练 Scrum Master A-CSM

博睿数据发布!LLM在可观测性体系建设落地的30 大核心技术应用场景探索

博睿数据

Beyond Compare 5 中文版|文件对比神器 Git集成+自动化脚本

柠檬与橘子

“全球金牌敏捷课程” · 8月16-17日CSM认证课程 · Jim老师引导团队Agility与企业Agility话题

ShineScrum

Scrum Master

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