写点什么

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

评论

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

详解金仓数据库KFS双轨并行不停机方案

金仓技术

KingbaseES 金仓数据库 KFS KES

“AI赋能·共享城市安全”2025杭州安防产品展·浙江安博会

AIOTE智博会

深入研究:Shopee商品列表API接口详解

tbapi

shopee API shopee商品列表接口 shopee商品采集

别让算力掉队:AI架构里被忽视的关键一环

ScaleFlux

企业级存储 定制化芯片 AI基础架构

API 即 MCP|Higress 发布 MCP Marketplace,加速存量 API 跨入 MCP 时代

阿里巴巴云原生

阿里云 云原生 MCP

告别重复繁琐!Apipost参数描述库让API开发效率飙升!

数据追梦人

倒计时!中关村科学城工业软件创新暨开源峰会28日启幕,会议亮点抢先看

极客天地

RapidFS 为昆仑芯 3 万卡集群加速,国产化平台 TiB 级吞吐让数据随叫随到

Baidu AICLOUD

分布式缓存 JuiceFS #存储加速

安徽建工集团上线数智管控平台 驱动高质量发展

用友BIP

APP和小程序需要注册域名吗?

防火墙后吃泡面

【行业知识】绿色能源产业使用堡垒机的原因看这里!

行云管家

网络安全 等保 等保测评 等保评测

【等保小知识】未联网的独立单位网络是否需要等保备案以及定级?

行云管家

等保 等保测评 等保2.0

百度文库、百度网盘联合发布「沧舟OS」内容操作系统,开放MCP Server,华为、三星、牛听听成首批接入客户

极客天地

详解金仓数据库KingbaseES主备流复制集群数据块恢复神器auto_bmr

金仓技术

KingbaseES 金仓数据库

最火向量数据库Milvus安装使用一条龙!

王磊

五一假期放肆嗨,ROG电竞显示器高刷臻品畅玩游戏!

新消费日报

什么是财务管理系统?一文看清其功能及作用!

积木链小链

数字化转型 智能制造

为什么说BeeWorks即时通讯(IM)系统适合金融行业使用?

BeeWorks

即时通讯 IM 私有化部署 企业级应用

OneNote Embedded 文件滥用检测

天翼云开发者社区

Onenote

告别手动填参数!Apipost黑科技让接口调试效率翻倍

数据追梦人

百度文库、百度网盘联合发布「GenFlow超能搭子」、「AI笔记」,打造“聪明又能干”的超级生产力

极客天地

百度优选成全球首家支持MCP的电商平台

极客天地

用友BIP企业AI全栈云:沉浸式体验六大智慧采购新场景

用友BIP

关于我的第一个产品!

Immerse

“陆海空”立体组网!福建移动助力鹭岛打造5G-A全面示范之城

极客天地

AI 代码生成工具的未来:飞算 JavaAI 如何定义新标准?

飞算JavaAI开发助手

最终一致性正在成为主流:现代分布式应用的数据管理新范式

tapdata

数据一致性 数据同步 实时数据 最终一致性 强一致性

基于 MCP 的 AI Agent 应用开发实践

字节跳动开源

开源 AI Agent MCP 模型上下文协议 Agent TARS

【重磅】敲敲云桌面版正式发布!

JEECG低代码

零代码 桌面应用 敲敲云

BeeWorks Meet:私有化部署视频会议的高效选择

BeeWorks

即时通讯 IM 私有化部署

伊克罗德信息亮相亚马逊云科技合作伙伴峰会,以ECRobot 智能云迁移助手在GenAI Tech Game比赛勇夺金牌!

伊克罗德信息科技

云计算 AI 亚马逊云

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