Nginx漏洞之未授权访问和源码泄漏漏洞处理

2024-03-29 23:44

本文主要是介绍Nginx漏洞之未授权访问和源码泄漏漏洞处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、漏洞描述

某次安全扫描,发现某平台存在资源:未授权访问和源码泄漏;攻击者可能获取到网站的配置文件、敏感数据存储位置和访问凭证等信息。这意味着攻击者可以获得对网站的完全或部分控制权,进而进行恶意篡改、删除或添加恶意代码,破坏网站的正常运行、导致数据丢失、影响用户访问或利用网站进行其他不法行为。

处理:该资源接口进行鉴权设置,禁止公网未授权直接访问。

二、SSO服务器

SSO(Single Sign On)是实现在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统;尤其在大型企业和政府部门等电子化系统办公场景中,一般办公系统会由多个不同的子系统构成,如果这些子系统直接暴漏,缺乏鉴权,就会出现上述的漏洞风险,那如何保证安全又不影响子系统业务交互呢?这个时候有一个SSO 单点登录就显得尤为重要了。但是注意,过多引入第三方SSO框架会让我们的异常错误可能出现:不在自己可控制的范围内的情况,可能不利于提高项目的健壮性及可持续发展。流程示意如下:
在这里插入图片描述
1)SSO建设选择

常用的13个开源免费单点登录SSO系统:

  • sa-token - 一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!
  • authelia - 是一个免费、开源、可私有化部署的单点登录(SSO)项目
  • BootstrapAdmin - 基于 RBAC 的 Net7 后台管理框架,权限管理,前后台分离,支持多站点单点登录,兼容所有主流浏览器
  • JustAuth - 如你所见,它仅仅是一个第三方授权登录的工具类库
  • MaxKey - 单点登录认证系统
  • jap - 一款开源的登录认证中间件,基于模块化设计,为所有需要登录认证的web应用提供一套标准的技术解决方案
  • eiam - 数字身份管控平台
  • CollectiveOAuth - 史上最全的整合第三方登录的开源库
  • Netnr.Login - 第三方 OAuth2 授权登录管理
  • keycloak - 是一个免费、开源身份认证和访问管理系统
  • SD.IdentitySystem - 统一身份认证/权限管理/角色管理/菜单管理/SSO/License授权
  • IdentityServer4 - 基于.NET 5+IdentityServer4+Vue+Sqlserver 的统一授权认证系统
  • cas - 是一个开源的企业级单点登录系统

2)Apereo CAS系统:

Apereo CAS是一个开源的企业级单点登录系统,是CAS项目的一部分。Apereo CAS开箱即用,并且提供多种协议支持,如:CAS(v1,v2和v3)、SAML(1.0和2.0)、OAuth(v2)、OpenID、OpenID Connect等,Apereo CAS支持使用多种身份证方法,包括:JAAS、LDAP、RDBMS、Radius、JWT等。Apereo CAS支持通过Due、YubiKey、RSA、Google Authenticator、U2F、WebAuten等进行身份验证。
在这里插入图片描述

相关资源:Github、官网、文档

1> 架构图
在这里插入图片描述
3)Keycloak

在这里插入图片描述
Keycloak是一个免费、开源身份认证和访问管理系统,支持高度可配置的单点登录(SSO)功能,旨在为现代的应用程序和服务,提供包含身份管理和访问管理功能的单点登录工具。Keycloak内置支持连接到现有的LDAP或Active Directory服务器。也可以自己实现与关系数据库中的用户数据对接。

Keycloak支持许多目前比较流行认证标准协议,如:OpenID Connect,OAuth 2.0、SAML 2.0等。它还支持多平台多种语言:Java、Python、Go、Node.js、Spring、Quarkus ,同时还有 CLI 、SDK 和 RESTful API。

相关资源:GitHUB、官网、

1> 安装

#docker方式部署,完成后,可以访问 http://localhost:8080 进行测试,用户名/密码:admin/admin
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin -d quay.io/keycloak/keycloak:18.0.0 start-dev

2>配置keycloak

登陆keycloak 管理控制台,创建一个租户:在 keycloak 中,一个 realm 相当于一个租户,它允许创建独立的应用程序和用户组。master 是keycloak 中默认的 realm,master 是专用于管理 keycloak的,不建议用于自己的应用程序。要应用于自己的应用程序时,一般最好建立一个自己指定名称的 realm,在master下面单机 Add realm创建。

在这里插入图片描述
在新创建的 realm 中创建一个user:
在这里插入图片描述
保存成功后,设置初始密码,点击 Credentials,其中Temporary 处点击为 OFF,完成密码重置。

完成后,配置要单点的应用程序。Keycloak管理控制台Clients新建客户端: 用上面Keycloak 实例注册一个应用程序:

3>修改grafana配置:
编辑 /etc/grafana/grafana.ini,修改以下配置:


[server]
root_url = http://localhost:3000/
[auth.generic_oauth]
allow_sign_up = true
api_url = http://localhost:8080/realms/grafana/protocol/openid-connect/userinfo
auth_url = http://localhost:8080/realms/grafana/protocol/openid-connect/auth
client_id = grafana
client_secret = B1dllYApv88FHkkLQDqCwv2aRH5hHwoU
enabled = true
name = grafana
role_attribute_path = role
root_url = http://localhost:3000/
scopes = openid email
token_url = http://localhost:8080/realms/grafana/protocol/openid-connect/token

在 keycloak 中配置好正确的 用户名、密码 后,重新访问 grafana,就可以看到类似如下界面:

在这里插入图片描述
4)nginx密码限制访问

#安装 htpasswd 工具
yum -y install httpd-tools
#创建认证用户 ,会在/etx/nginx/passwd.db文件中生成用户名和加密的密码,格式类似: admin:YlmaHlkJnzhxG
htpasswd -c pass.db admin //输入密码#nginx 修改配置,增加: auth_basic 和 auth_basic_user_file 
vim /usr/local/nginx/conf/nginx.conf 
……
server { 
listen 80; 
server_name local.server.com;
auth_basic "User Authentication";
auth_basic_user_file /etc/nginx/pass.db;
location / { 
root /data/www; 
index index.html; } 
}
#重启nginx服务 
nginx -s reload

这篇关于Nginx漏洞之未授权访问和源码泄漏漏洞处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/859970

相关文章

Nginx启动失败:端口80被占用问题的解决方案

《Nginx启动失败:端口80被占用问题的解决方案》在Linux服务器上部署Nginx时,可能会遇到Nginx启动失败的情况,尤其是错误提示bind()to0.0.0.0:80failed,这种问题通... 目录引言问题描述问题分析解决方案1. 检查占用端口 80 的进程使用 netstat 命令使用 ss

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

Ollama整合open-webui的步骤及访问

《Ollama整合open-webui的步骤及访问》:本文主要介绍如何通过源码方式安装OpenWebUI,并详细说明了安装步骤、环境要求以及第一次使用时的账号注册和模型选择过程,需要的朋友可以参考... 目录安装环境要求步骤访问选择PjrIUE模型开始对话总结 安装官方安装地址:https://docs.

nginx-rtmp-module模块实现视频点播的示例代码

《nginx-rtmp-module模块实现视频点播的示例代码》本文主要介绍了nginx-rtmp-module模块实现视频点播,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录预置条件Nginx点播基本配置点播远程文件指定多个播放位置参考预置条件配置点播服务器 192.

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed