写点什么

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

评论

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

初识ElasticSearch

阿Q说代码

搜索引擎 lucene ES 选举 脑裂

NFT交易平台数字藏品系统开发技术

薇電13242772558

NFT 数字藏品

北京大数据培训 | 电商用户行为分析之实时流量统计

@零度

大数据开发

SAP Marketing Cloud 功能概述(二)

汪子熙

云计算 SaaS SAP 6月月更 Marketing Cloud

【OpenI开源项目推荐-GammaGL】支持国内外主流深度学习框架的图神经网络算法库

OpenI启智社区

人工智能 算法 图神经网络

天翼云数字政府智慧数据中台通过认证

天翼云开发者社区

TiFlash 函数下推必知必会丨十分钟成为 TiFlash Contributor

PingCAP

#TiDB

MAUI使用Masa blazor组件库

沙漠尽头的狼

得物技术复杂 C 端项目的重构实践

得物技术

前端 大前端 重构 框架 社区

定金预售的规则思路详解

CRMEB

6月《中国数据库行业分析报告》发布!智能风起,列存更生

墨天轮

数据库 TiDB 国产数据库 列式存储

java培训机构 | Java设计模式之适配器模式

@零度

设计模式 JAVA开发

企业官网如何提高客户转化率

源字节1号

重磅直播|BizDevOps:数字化转型浪潮下的技术破局之路

阿里云云效

阿里云 DevOps 研发效能 BizDevOps 场数字化转型

web前端开发培训 | React面向组件编程

@零度

前端开发 React

大数据培训 | 电商用户行为分析之商业指标统计分析

@零度

大数据开发

加密市场进入寒冬,是“天灾”还是“人祸”?

股市老人

本周四晚19:00战码先锋第7期直播丨三方应用开发者如何为开源做贡献

OpenHarmony开发者

OpenHarmony

社恐?自我介绍时大脑一片空白?

阿Q说代码

个人成长 社恐 职场破冰 入职公司

攻防演练 | 基于ATT&CK的威胁狩猎实践案例

青藤云安全

网络安全 攻防演练 威胁狩猎

美团基于 Flink 的实时数仓平台建设新进展

Apache Flink

大数据 flink 流计算 实时计算 实时数仓

云上人和物联科技加入龙蜥社区,携手打造软硬件服务生态

OpenAnolis小助手

开源 生态 龙蜥社区 CLA 云上人和物联科技

Java——I/O II

武师叔

6月月更

天翼云探索云原生、边缘计算融合新思路

天翼云开发者社区

假如,程序员面试的时候说真话

AlwaysBeta

程序员 面试

力扣每日一练之双指针2Day9

京与旧铺

6月月更

CAT敏捷团队教练工作坊 (Coaching Agile Teams) | 8月20日开课

ShineScrum

教练 敏捷教练 高管教练 专业教练 ACC

DevSecOps: CI/CD 流水线安全的最佳实践

SEAL安全

CI/CD DevSecOps

轻松上手Fluentd,结合 Rainbond 插件市场,日志收集更快捷

北京好雨科技有限公司

Kubernetes EFK Fluentd rainbond

2022年盲盒软件开发商业模式深度解析

开源直播系统源码

软件开发 盲盒开发 盲盒软件

Java——流输入输出

武师叔

6月月更

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