热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

校内无法访问IEEE等部分数据库的解决方案

解决了校内无法访问IE

今天从校内访问IEEE等部分数据库时报502错误,无法访问了。左上角还有一把红锁,提示不安全的访问。动手解决一下这个问题!

502

原因

可能部分同学还有印象,图书馆在5月25号左右升级了部分数据库的访问方式,当时访问IEEE和万方等部分数据库的时候,会跳转一个“ 图书馆电子资源远程访问云系统”,然后就会要求安装一个根证书

此处假装有图.jpg
(因为学校的服务器挂了,所以没办法截图了=_=)

首先要说明的是,“安装并信任根证书”这件事情是存在很大的安全隐患的,具体原因后面再谈。

经过分析,图书馆是将内网DNS服务器中IEEE和万方等数据库的解析指向了校内服务器202.119.70.14
,然后再通过该代理服务器访问数据库,而不是之前的直接访问。

被劫持的DNS解析
目的地为校内服务器

这次无法访问是由于校内的代理服务器出问题了(并不是IEEE出了问题),因此我们只要将解析重新指向正确的官方服务器,绕过校内服务器就可以解决该问题。

解决方案

我们可以采用修改HOSTS文件,使被劫持的数据库强制解析到正确的服务器即可。如果动手能力强,也可以通过搭建个人DNS服务器等高端操作来绕过不能用的代理服务器。

自动处理

通过一个简单的批处理文件,可以自动添加正确的解析到HOSTS文件,同时可以删除 polyinfo 的根证书。

点击阅读原文或手动复制下方链接到浏览器,通过 Github 下载自动修复文件Unblock_DNS_Hijacking_v0.1.bat

https://github.com/PaimonL/Unblock-DNS-Hijacking-of-NUAA-Lib/releases/


如无法访问Github,可通过蓝奏云下载:https://wwa.lanzoui.com/b00oobyti(密码:fnsb)

Github

下载后运行,脚本会请求管理员权限,请授予。

先选择0,会清除polyinfo根证书(Firefox用户需要按照手动处理中的对应步骤多做一步),该操作会自动下载Windows的证书管理工具Certmgr.exe,如遇安全软件拦截,请放心放行。如不放心,也可手动下载Certmgr.exe并放置到脚本同目录下。

再选择1,会添加正确的解析到HOSTS文件,并刷新DNS缓存。

处理结束,重新访问IEEE即可发现恢复正常。

如果需要恢复系统初始的HOSTS文件,重新运行选择菜单2即可。

手动处理

解除DNS劫持

首先,恢复数据库的DNS解析到其对应的官方网站。

使用阿里公共DNS223.5.5.5
或腾讯公共DNS119.29.29.29
可以查询到正确的IP地址。

使用阿里公共DNS获取的解析结果

IEEE由于部署了CDN,因此有多个IP,有的IP访问可能较慢,选择一个较快的即可。

将查询到的IP写入系统 HOSTS 文件中。除了 IEEE 和万方,还找到了其他几个被劫持的数据库,一并恢复即可,下面是参考示例。

23.192.245.54 ieeexplore.ieee.org
23.64.185.112 www.ieee.org
122.115.55.6 wanfangdata.com.cn
122.115.55.6 www.wanfangdata.com.cn
52.83.120.240 vers.cqvip.com
103.242.173.18 airitilibrary.cn
103.242.173.18 www.airitilibrary.cn
140.234.254.11 search.ebscohost.com
140.234.252.103 ebscohost.com

修改 HOSTS 文件后,打开 Powershell 或 CMD,运行ipconfig flushdns
来刷新DNS缓存。

删除根证书

然后,还要干掉 polyinfo 的根证书,排除这颗隐藏的定时炸弹。

在系统证书管理器certmgr.msc
中,找到 polyinfo.com 根证书,将其删除即可。

如果安装了 Firefox 浏览器,还需要在地址栏中打开about:preferences#privacy
,点击“查看证书”,在“证书管理器-服务器”中将polyinfo.com证书移除。

Firefox证书管理器

解决完了问题,我们来看看为什么说“安装并信任根证书”这件事情是存在很大的安全隐患的

什么是根证书以及信任根证书的风险

什么是根证书

什么是根证书呢?WikiPedia 的解释是这样的。

在密码学和计算机安全领域,根证书(root certificate)是属于根证书颁发机构(CA)的公钥证书,是在公开密钥基础建设中,信任链的起点。证书颁发机构的角色有如现实世界中的公证行,保证网络世界中电子证书持有人的身份。具体作法是透过中介证书,利用数字签名为多个客户签发多个不同的终端实体证书,形成一个以其根证书为顶层的树状结构,在此传递关系中所有下层证书都会因为根证书可被信赖而继承信任基础。

简单来说,证书是当前互联网建立信任关系的基础,可以保证信息的保密性和不可篡改性,保证网络中的通信过程是安全的。

根证书可以决定哪些证书被操作系统或浏览器信任,“在公开密钥基础建设担任重要角色”。知乎用户@Ivony在2013年的一个回答通俗解释了证书和根证书的作用:

证书这货到底是什么东西:


在早期的互联网时代,我们的网站、软件,都是依赖于我们自己的信任而使用的。

例如我有一套游戏的安装程序,你从我这边拷贝过去,然后安装玩。你之所以认为这个程序能够安装游戏而不是把你的硬盘格了,完全是依赖于我告诉你的。

网站也是同理,我知道http://cmbchina.com这个地址是招商银行,是因为招行营业厅的MM告诉我的,我信任营业厅的这个MM。

这种信任是非常薄弱和糟糕的,病毒、木马就是在这种环境下肆虐横行。你从我这边拷贝的游戏安装程序,可能已经被病毒侵袭,它当然还是可以安装游戏,但同时也会安装病毒!

营业厅的MM有可能是招行的员工,也可能是个卖保险的。尽管她大概不会给我一个钓鱼的网站,但是经常会给我推销一些完全用不到的保险啥的。


在继续讨论之前,我要引入一个新的概念,信任链


拿刚才的例子来说,你从我这边拷贝了一份游戏的安装程序。信任链是这样的:
你信任我,我是你的朋友,我没必要害你
我信任卖光盘的,他是个卖光盘的,没必要给我装病毒
卖光盘的信任刻光盘的
刻光盘的信任下载的网站
下载的网站信任上传的用户
上传的用户信任分发该份拷贝的盗版组织
…………

很显然,这么长的一个信任链,中间出现问题的可能性是非常大的。可以说,信任链越长,就越不安全

同时,因为这一份程序在这么多人之间拷贝分发,任何一个环节感染病毒,都会导致下游所有的环节感染病毒。


证书是如何解决这两个问题的


证书有两个功能:
1、身份标识,证明这个网站/软件/其他的发布者是谁(如微软、UBI、Google、招行)。
2、数字签名,确保这个网站/软件/等等的内容没有被任何人篡改。

第一个功能解决了信任链的问题,通过证书,我们的信任链可以变得非常的简单:用户 信任 发行者。
例如一个英雄无敌V的游戏安装程序,如果它是使用正确的UBI的证书签名的,那么我就可以完全的信任这个程序,可以给我安装一个英雄无敌V的拷贝。

第二个功能则杜绝了在分发过程中被篡改,植入病毒和木马的可能。
同样是这个英雄无敌V的游戏安装程序,只要他是被正确的UBI的证书签名了,那么不论我是从盗版光盘上拷贝还是从某个不知名的下载网站下载的,我都可以放心的知道,这个和UBI发售的光盘上的东西是一模一样的。


那么,我是怎么知道这个证书是UBI的呢?换言之,我是怎么知道哪个证书是正确的UBI的证书,而不是隔壁王二狗子自己冒充的呢?


这就依赖于证书颁发体系了。

几乎网络上所有的证书(除去用于个人用途的自签名证书以及根证书颁发机构的证书),都是由某个证书颁发机构颁发的。证书颁发机构负责核实证书申请者的真实身份(例如我们公司网站申请SSL证书就需要提交公司营业执照的影印件,还有证明自己拥有网站域名的材料),以及吊销被泄漏和滥用的的证书。

也就是说证书颁发机构,就是证书所有者身份的确认人。一旦你信任了某个证书颁发机构,就等于信任了这个证书颁发机构所颁发的所有证书的身份确认信息!
操作系统只会把确认好的身份信息展示给你!


神马是根证书颁发机构?


证书颁发机构和域名一样,是一个树状的结构,全球有为数不多的几个根证书颁发机构。这些根证书颁发机构轻易不颁发证书,因为一旦根证书颁发机构的证书被泄漏,所有直接间接的证书,都会受到严重的影响。

所以,根证书颁发机构一般授权二级证书颁发机构颁发证书,一旦信任一个根证书颁发机构,等同于信任其下所有颁发的所有证书,以及其授权的二级证书颁发机构颁发的所有证书

信任根证书的风险

那么,安装并信任了不应被信任的根证书有什么风险呢?

风险之一在于“中间人攻击”(MITM)。

观察仔细的同学可能曾经注意到,使用HTTPS协议访问受信任的网站时,浏览器地址栏的最左侧会有一个小绿锁,这说明当前的访问是安全的,是经过SSL加密的,不会有人获取到你的通信数据,不被任何第三方窃取和监听。

连接是安全的

而MITM是一种常见的网络入侵手段,主要目的是窃取HTTPS传输过程中的内容。

中间人攻击在计算机安全领域中是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容

具体的做法是通过网络劫持,在用户与目标网站之间加设代理服务器。由于HTTP协议传输过程中是不加密的,所以可以窃取所有传输的资料并进行篡改。
但由于HTTPS协议使用了证书对传输过程进行了加密,并且对服务器进行身份验证,所以简单的网络劫持加设代理便宣告无效。
但如果此时,由某个用户信任的根证书颁发机构,给这个加设的代理服务器进行身份认证,并提供传输加密。那么用户通过HTTPS协议访问网站时不会有任何的异样,而以为是安全的。

一旦MITM攻击成功,那就意味着所有的网络流量都不应被信任,都有可能被第三方监听甚至篡改。也就是你访问的网站的所有具体内容都会被第三方看到,甚至可以修改通信内容,返回错误的、广告或者恶意内容。

另一种风险是可以用于钓鱼网站的伪造。

证书可以保证你访问的网站是正确的网站,而不是钓鱼或假冒站点,因为网站的证书是无法被伪造的,如果被伪造,浏览器就会提示不安全。

访问被劫持后的IEEE,浏览器提示不安全

但是,如果信任了某个根证书颁发机构之后,再由该机构签发伪造的证书,那么浏览器便会认为该钓鱼网站是受信任的,不会有任何风险提示。

当然,证书的应用远不止网站,其还可以用于邮件、驱动签名、软件分发等各种方面。

例如在安装软件并请求管理员权限时,系统会显示发布者信息,校验发布者是否可信,安装包是否被篡改等。我们可以点击“显示证书信息”来查看证书详情。如果信任了某个根证书后,那么该证书链下的所有证书都会被信任,可以实现篡改软件或驱动安装包,植入恶意代码而仍被系统信任。

微信安装时的提示
腾讯的证书

图书馆的根证书

先来看看图书馆让我们安装的根证书到底是个啥东西。

为了得到这个问题的答案,我冒险安装了一下图书馆的根证书,来看一看此次被要求安装的根证书到底请求了什么权限。

安装之后,打开系统证书管理器certmgr.msc
,展开“受信任的根证书颁发机构”,找到名为 polyinfo.com 的根证书

可以看到,其预期目的是“所有”,那么这个“所有”中包括什么呢?来仔细看一看。

Polyinfo根证书

可以看到,该证书除了服务器和客户端身份验证之外,还请求了许多不该请求且十分危险的权限,包括 Windows 的各种硬件驱动程序验证、BitLocker 和 Windows Hello 等加密验证、各种密钥验证、甚至 Windows 更新验证、内核模式代码签名等权限,已经远远超出了我们需要的“访问图书馆电子资源库”所需要的权限范围

这也是为什么一定要清除这个根证书的最根本的原因。

在获取了所有权限之后,危险性就例如:Windows系统的某个系统补丁、系统更新包经过某人恶意修改之后,签上 polyinfo 的证书,那么所有信任了 polyinfo 根证书的计算机都会认为该补丁是安全的,操作系统将无从得知补丁包已被篡改。当然假设的这种事情也不一定是 polyinfo 亲自做的,但是由于 polyinfo 是根证书颁发机构,因此其下的所有签发的证书都会被信任,而因为证书私钥泄露造成灾难性后果在安全领域也不是少见的事情。

证书拥有的权限

好奇心又促使我去查了一下该证书的颁发机构 “polyinfo” ,百度可以检索到,该公司全名叫“北京恒通博联科技有限公司”,公司主页 http://www.polyinfo.net.cn/
。公司介绍为:

北京恒通博联科技有限公司是一家高新技术企业,拥有世界领先的网络通讯协议识别(DPI)、互联网数据采集、数据挖掘、海量数据分析三大技术,公司的业务主要集中在网络流量分析控制和用户行为分析控制、舆情监测、WEB页面信息推送、WEB行为模拟、IP电话监测、共享接入监测、P2P监测及控制、网络攻击溯源、海量数据存储与统计分析、复杂通讯协议(具有反识别能力)的识别、新媒体通信技术的产品销售和服务提供。

看起来是一家数据采集、数据挖掘和数据分析的公司。

我们用的正是其产品介绍中提到的“图书馆电子资源远程访问云系统”,这个产品的介绍如下。

对于学校而言,除了要保护信息安全的同时还需要实时监控在校师生的上网行为通过分析他们的上网行为数据抓取特征,从而了解师生的生活状态及兴趣爱好,所以关于Https网站的相关数据一般的采集引擎都采集不到的,因此,我们针对这一情况,通过代理的方式,用户先访问到图书馆电子资源远程访问系统设备,由代理设备代替用户去访问实际的https电子资源网站。这样就可获取https协议这部分流量的相关内容,结合我公司的图书馆产品从而分析出用户想要的行为数据,方便用户的访问及统计行为数据,为将来的智慧图书馆及推荐系统提供相应的数据。

网站的产品介绍

通过介绍可以看到,其工作原理正是我们前面提到的MITM,通过代理服务器访问数据库。因为流量已经被代理服务器获取,因此必须要信任根证书才能获得浏览器的信任。但是,其介绍中提到的“实时监控在校师生的上网行为,通过分析他们的上网行为数据抓取特征,从而了解师生的生活状态及兴趣爱好”,让事情变得有趣了起来……

按照同样的方式,当然不仅仅可以让学术数据库的网站通过代理服务器,通过修改DNS解析,可以让任何网站的流量都经过代理服务器,由于之前已经信任了根证书,因此整个行为都会被浏览器认为是可信的,不会有任何异常。

当然,也只是存在这样的风险隐患,目前并没有任何证据表明我们的行为数据已经被分析。

题外话,还有一件有意思的事情,在访问该公司官网的时候,其网站的js被火绒报毒了,但是由于不懂js,所以也无法具体分析其植入的是什么风险或恶意代码,有兴趣的同学可以去看看。

http://www.polyinfo.net.cn/templets/36/js/jquery.easing.1.3.js
http://www.polyinfo.net.cn/templets/36/js/jquery.db_tabmotionbanner.min.js
http://www.polyinfo.net.cn/templets/36/js/jquery-1.8.3.min.js
http://www.polyinfo.net.cn/templets/36/js/jquery.animate-colors-min.js

被火绒报毒

更多关于因为根证书引起的安全问题,有兴趣的同学可以去检索了解 “CNNIC 根证书”“支付宝私自植入根证书”等事件,CNNIC 和支付宝的证书权限跟 polyinfo 相同,都是,由于用户范围广,因此受到了大规模的质疑和反对,最终CNNIC根证书被Mozilla、Google和微软吊销,支付宝如今也不再私自安装根证书



推荐阅读
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 回顾两年前春节期间的一个个人项目,该项目原本计划参加竞赛,但最终作为练习项目完成。独自完成了从编码到UI设计的全部工作,尽管代码量不大,但仍有一定的参考价值。本文将详细介绍该项目的背景、功能及技术实现。 ... [详细]
  • 如何在PHP中安装Xdebug扩展
    本文介绍了如何从PECL下载并编译安装Xdebug扩展,以及如何配置PHP和PHPStorm以启用调试功能。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
author-avatar
天津市翔瑞特制冷设备_208
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有