写点什么

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

评论

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

哪些CAD看图软件适合初学者使用?

在路上

cad cad看图 CAD看图王

征程 6|YUV 域降噪模块 YNR 简介

地平线开发者

自动驾驶; 算法工具链 地平线征程6

Java 开发如何用 AI 工具处理分布式事务?飞算 JavaAI 自动生成高可用代码

飞算JavaAI开发助手

从 Spring Boot 到 AI 原生:下一代 Java 开发工具的五大趋势

飞算JavaAI开发助手

数据要素×一体机大模型 解锁银行资产评估新范式

郑州埃文科技

DeepSeek对我国算力的影响力有多大?

GPU算力

开源 算力 国产大模型 DeepSeek DeepSeek R1 模型

Promise 这个新 API 真香!

Immerse

武汉同济医院大模型应用通识第2课聚焦提示词工程,和鲸助力开讲

ModelWhale

同济医院 大模型通识课 医疗工程提示词

数据要素与居民就业的深层联结 数字化转型下的劳动力市场变革

郑州埃文科技

硬件加密+本地部署,大模型一体机如何打造AI安全护城河?

郑州埃文科技

大数据是不是凉了?

Databend

平衡增长和资金管理,实现企业长期战略目标

智达方通

全面预算管理 资金管理 预算管理

Java多进程多线程处理详解

量贩潮汐·WholesaleTide

Java

花式分享、分屏畅聊:华为Pura X让社交生活游刃有余

最新动态

拒绝焦虑?飞算 JavaAI 一键生成完整工程代码,让你专注架构设计

飞算JavaAI开发助手

数据要素如何驱动的新质IDC一体化运营体系发展?

郑州埃文科技

继「智元机器人」后,比亚迪再投人形机器人创企!

机器人头条

科技 大模型 人形机器人 具身智能

K8s新手系列之K8s中的资源

不在线第一只蜗牛

Kubernetes 容器

推荐私有化部署的企业内部通讯软件BeeWorks

BeeWorks

即时通讯

开发者必备:2025 年主流 AI 工具推荐

飞算JavaAI开发助手

人工智能工程师(中级)培训开课通知

雅菲奥朗

人工智能 AI

Java 开发者的 AI 内卷指南:用工具自动补全 90% 代码!

飞算JavaAI开发助手

BeeWorks企业内部即时通讯软件支持国产化,已在鸿蒙系统上稳定运行

BeeWorks

即时通讯

某知名半导体公司AIOps 培训圆满收官, 助力行业运维升级

雅菲奥朗

AI AI 人工智能

springboot分页查询并行优化实践

电子尖叫食人鱼

后端 springboot

深度解析金仓数据库KingbaseES的多表连接视图及其可更新性

金仓技术

KingbaseES 金仓数据库

任务运维、循环任务死锁.....DolphinScheduler任务配置经验分享

白鲸开源

大数据 开源 Apache DolphinScheduler 任务调度

AI求职神器JobLeap.cn:技术人必备的全方位职业发展助手

安全乐谷

面试 找工作 招聘 找实习

破解数据加工、融合和验证困境 蚂蚁密算发布密态可信数据空间产品

科技热闻

【实战】一招搞定Shell调度!DolphinScheduler+ProcessBuilder超详细教程

白鲸开源

大数据 开源 Shell Apache DolphinScheduler 任务调度

什么是公共数据?公共数据开放后如何提高新质生产力发展?

郑州埃文科技

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