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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2906570.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Linux-进程控制

🌎进程控制【上】 文章目录: 进程控制 为什么要有地址空间和页表 程序的内存       程序申请内存使用问题 写时拷贝与缺页中断 父子进程代码共享       为什么需要写时拷贝       页表的权限位       缺页中断 退出码和错误码…

SpringBoot 登录认证(二)

SpringBoot 登录认证(一)-CSDN博客 SpringBoot 登录认证(二)-CSDN博客 SpringBoot登录校验(三)-CSDN博客 HTTP是无状态协议 HTTP协议是无状态协议。什么又是无状态的协议? 所谓无状态&…

毅速丨一体化压铸浪潮涌动 3D打印压铸模具将迎来广泛应用

近年来,特斯拉等车企的革新步伐引领着汽车制造业的变革,车身一体化压铸技术日益凸显其地位。这一技术不仅简化了车身制造的繁琐流程,更在供应链整合上实现了革命性的突破,为汽车制程带来了前所未有的经济性提升。 压铸技术&#x…

【面试那些事儿】浏览器键入网址到网页显示,期间发生了什么

当用户在浏览器中键入网址并按下回车键后,直到最终显示出完整的网页内容,这一过程中经历了哪些步骤呢? 这是一道经典的面试题,我们来看看具体有哪些阶段。 1. 解析URL 浏览器首先解析用户输入的URL,判断它的语法和协…

大话设计模式之策略模式

策略模式是一种行为设计模式,它允许在运行时选择算法的行为。这种模式定义了一族算法,将每个算法都封装起来,并且使它们之间可以互相替换。 在策略模式中,一个类的行为或其算法可以在运行时改变。这种模式包含以下角色&#xff1…

flume配置文件后不能跟注释!!

先总结:Flume配置文件后面,不能跟注释,可以单起一行写注释 报错代码: [ERROR - org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:158)] Unable to deliver event. Exception follows. org.apache.flume.EventDel…

2024跨境电商新型选品方法

是不是有很多卖家一到旺季就为选品发愁?担心选错产品或是错过机会?今天就给大家打开思路,分享2024更好用的选品方法,解决大家的选品难题! 2024跨境电商新型选品方法 1️⃣ 本土卖家观察法 利用社交媒体平台如Instagram…

Linux系统中安装一些常用的插件备用

Linux系统中安装一些常用的插件备用 1.安装wget yum -y install wget 2.安装vim yum -y install vim-enhanced 3.更换yum源为国内的阿里云源(选择) 1、备份CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.…

3d智慧火电厂可视化管理平台提升企业的经济效益

在数字化时代的浪潮中,我们迎来了一个崭新的概念——“智慧火力火电厂”。这一创新理念将前沿信息技术与传统的火力发电工艺完美融合,引领着电力生产与管理的深刻变革。 火电厂3D可视化展示系统融合了数字孪生、3D可视化、物联网、人工智能和大数据等尖端…

PN8034芯朋微PN8034SSC-R1B非隔离SOP7封装12V300MA电源芯片

PN8034集成PFM控制器及650V高雪州能力智能功本MOSFET,用于外图元器件极精简的小功本非隔离开关电源。PN8034内置高压启动模块,实现系统快速启动,超低待机功能。该芯片提供了完整的智能化保护功能,包括过流保护,欠压保护…

【Python】python2.7升级到python3.x

这里写目录标题 1.检查当前python版本2.下载最新的python3. pip安装4.系统默认python调整5 .错误 1.检查当前python版本 python -v2.下载最新的python python下载地址: wget https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz进行解压 tar -xvf P…

设计模式——结构型——外观模式Facade

处理器类 public class Cpu {public void start() {System.out.println("处理器启动了...");} } 内存类 public class Memory {public void start() {System.out.println("内存启动了...");} } 硬盘类 public class Disk {public void start() {Syste…

接口自动化测试框架:Junit5+RestAssured+Allure

需求分析 需求点需求分析通过 yaml 配置接口操作和用例后续新增接口和测试用例只需要编写 yaml 文件即可实现。可以支持接口间的参数传递具有参数依赖的接口可以进行变量的抽取和参数赋值。支持全局、用例维度的变量存储比如时间截命名法中要用到的时间截后缀。支持用例软断言…

Mysql从0到1 —— CRUD/索引/事务

文章目录 1 预备知识1.1 安装1.2 登录 & 退出1.3 配置文件my.cnf 2 基础知识2.1 链接服务器2.2 什么是数据库2.3 基本使用2.3.1创建表2.3.2 插入数据 2.4 服务器、数据库、表的关系2.5 SQL分类2.6 存储引擎 3 Mysql数据库的操作3.1 创建和删除3.2 字符集和校验规则3.3 查看…

【Spring源码】WebSocket做推送动作的底层实例

一、前瞻 Ok,开始我们今天的对Spring的【模块阅读】。 那就挑Web里的WebSocket模块,先思考下本次阅读的阅读线索: WebSocket在Spring里起到什么作用这个模块采用了什么设计模式我们都知道WebSocket可以主动推送消息给用户,那做推…

Spring Boot 统一数据返回格式 分析 和 处理

目录 实现统一数据格式 测试 原因分析 解决方案 🎥 个人主页:Dikz12📕格言:吾愚多不敏,而愿加学欢迎大家👍点赞✍评论⭐收藏 实现统一数据格式 统⼀的数据返回格式使⽤ ControllerAdvice 和 Response…

Canal解决Redis缓存与Mysql数据库的一致性问题

1、什么是Canal? 如何解决Redis缓存与Mysql数据库的一致性问题?我们常用数据双删缓存超时设置去解决。这样最差的情况,就是在超时时间内,数据存在不一致。 canal,译为管道,主要用途是基于 MySQL 数据库增…

redis在docker安装并启动流程

1、启动server docker run -d -p 6379:6379 --name redis01 redis:7.2.4以上命令,每次启动新的Redis容器,数据会丢失。 我们需要挂载数据文件,在宿主机上面,这样就可以持久化数据. 2、挂载数据文件(可根据需求选择…

关系型数据库mysql(7)sql高级语句①

目录 一.MySQL常用查询 1.按关键字(字段)进行升降排序 按分数排序 (默认为升序) 按分数升序显示 按分数降序显示 根据条件进行排序(加上where) 根据多个字段进行排序 ​编辑 2.用或(or&…

Vue3:快速上手路由器

本人在B站上关于vue3的尚硅谷的课程,以下是整理一些笔记。 一.路由器和路由的概念 在 Vue 3 中,路由(Router)和路由器(Router)是两个相关但不同的概念。 1. 路由(Router)&#xff…