运维安全概述

运维安全概念

运维安全是指在IT运维过程中,通过一系列的方法对企业系统进行有效防护的方法。

运维安全的重要性

  1. 减少IT系统故障率,提高IT系统在线时长,为企业获取更多客户访问时间
  2. 降低企业运营风险,防止企业核心技术或数据泄漏

运维安全所面临主要安全威胁

硬件、系统或软件漏洞

==硬件==也会存在漏洞,例如Inter CPU的幽灵及熔断漏洞

此漏洞产生原因:

01-运维安全-概述.assets

幽灵、熔断漏洞是Google Project Zero团队发现的三个安全漏洞变体1的统称,其中漏洞变体1与变体2是幽灵漏洞的不同方面,它们都是通过欺骗方式执行的;漏洞变体3就是熔断漏洞,它可以有效地“熔断”处理器的安全防护。

以漏洞变体2进行说明:

它利用了计算机的一项重要特性,即预测执行(speculative execution)。预测执行可以加强CPU的速度与性能,在CPU实际发出请求之前,就预测CPU可能执行的任务。

预测执行功能就像是一个探路员,运行在CPU的众多其他功能和能力之前。它的目标是通过预先探索CPU的各种可能任务,为整个系统加速。

想象一下当我们的探路员走到半路,遇到一个多岔路口的情况:一个引导员突然出现,指挥它走一条特定的路线。

但不幸的是,那个引导员其实是个坏人,是通过恶意程序进入的系统。

随着探路员通过路口,这个坏人偷偷地将自己绑在探路员身上,那么他就可能看到探路员在这部分路途中看到的一部分东西,包括隐私信息。

最终,探路员会发觉自己走了一条错误的路,然后回到最初的岔路口,重回正轨,但那时,坏人可能已经获取了自己想要的信息。

解决方案:

Intel已经设计出一组新的CPU硬件功能,与操作系统协作,创造虚拟栅栏,保护系统与其中保存的数据免受这种运用预测执行方法的攻击。

在我们刚刚举的例子里,它可以让潜在的引导员,或者说坏人,完全远离计算机的决策进程,无法影响探路员所走的路线。

结果就是,这种解决方案既可以保留预测执行的众多益处,又能同时解决漏洞变体2的威胁。

熔断一般是指软件系统中,由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施,所以很多地方把熔断亦称为过载保护。

==系统==是指操作系统,绝大多数是指系统内核(kernel)

==软件==是指应用类软件,例如:openssl的“心血”漏洞,MySQL某些版本漏洞,OpenSSH远程代码执行漏洞(CVE-2016-10009),Redis漏洞,Docker容器漏洞等

病毒或木马

==病毒:==指计算机病毒,是编制者在计算机程序中插入的破坏计算机功能或数据的代码,能够影响计算机使用,能自我复制的一组计算机程序代码,具有传播性。

==木马(Trojan):==这个名字来源于古希腊传说(荷马史诗中木马计的故事,Trojan一词的特洛伊木马本意是特洛伊的,即代指特洛伊木马,也就是木马计的故事)。“木马”程序是目前比较流行的病毒文件,与一般的病毒不同,它不会自我繁殖,也并不“刻意”地去感染其他文件,它通过将自身伪装吸引用户下载执行,向施种木马者提供打开被种主机的门户,使施种者可以任意毁坏、窃取被种者的文件,甚至远程操控被种主机。木马的产生严重危害着现代网络的安全运行。

DOS或DDOS攻击

==DoS==是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击。

目的:通过组织海量“肉鸡”,实现对目标主机或网络访问使计算机或网络无法提供正常的服务。

最常见的DoS攻击有计算机网络带宽攻击和连通性攻击,例如:SYN Flood,HTTP Flood。

解决方案: 调整kernel参数(TCP连接相关)、Firewall、应用优化、增加网络宽带、集群、CDN 以上可以缓解,不能根除。

DDOS(Distributed Denial of Service)是分布式拒绝服务攻击,比DoS攻击力更强。

密码窃取与密码攻击

==密码窃取==是指通过植入木马,SSL剥离,会话劫持,钓鱼网站等获取密码的方法。

这些方法的共同特点是在用户输入时或密码传输过程中对明文密码进行截获。

==密码攻击==是指从网站服务器上破解用户密码的方法。

网站数据库保存的用户密码都是经过哈希加密的,不可能被反向破译,因此密码攻击的难度要比密码窃取难度大得多。密码窃取虽然简单高效,但适用性差。植入木马、钓鱼网站在那些安全观念淡薄、防范意识较差的用户计算机上才能发挥作用,而SSL剥离、会话劫持等方式需要黑客与被攻击者处于同一个无线局域网内。打个不太恰当的比方,密码窃取就像是拿着鱼竿在海边等鱼上钩,而密码攻击就像是乘坐渔船出海打鱼,前者收成好的时候也能钓个十条八条,而后者虽然困难一些,但往往能让你满载而归。

网站密码加密基本原理

为了保证用户密码的安全性,任何网站都不会直接存储明文密码,而是通过哈希加密算法将密码转换为固定长度的字符串,网站数据库保存的密码是一长串没有任何意义的哈希字符。当用户登录时,后台将用户提交的明文密码经过加密算法的计算,并将计算结果与数据库中保存的哈希串进行比对,比对结果一致则向前台返回登录成功的信息。加密算法的过程是不可逆的,因此即使知道密码的加密方式和算法的实现过程,也不可能通过哈希串反向破译出密码。

密码攻击的原理

“破解”哈希密码的工具,但是其根本原理只有两个字:“猜”和“试”。 所谓“猜”就是通过穷举的方式将可能的密码组合依次存入文本文件(字典) 所谓“试”就是将字典中的每个可能的密码传入加密函数计算,然后将计算结果与哈希密码进行比对,结果一致就意味着密码被成功破解。

构建字典是密码攻击的关键,完备合理的字典能大大提高攻击效率和破解成功率,网上有大量的字典可以下载(超过100G),当然也可以根据需要构建自己的字典。

密码攻击的两种方式

==在线攻击:==在线攻击就是在网站的用户验证的环节试探用户的用户名和密码,在线密码攻击指的当然不是在登录页面里手动输入所有可能的用户名和密码,而是通过代码实现自动试探。攻击之前获取网站的基本信息非常有必要,包括:网站协议(http,https,ftp,pop3,...)、完整的登录url(一般不可见)、登录失败信息(“Login failed”,“请检查用户名、密码”等等)。

掌握了这些信息之后,下面的攻击就简单多了。比如要攻击用户“Admin”的密码:使用程序(代码)循环模拟用户登录行为,从字典中依次选取密码,组装后向网站发送登录请求(request),接收网站的反馈信息(response)并加以分析,如果没有返回登陆失败信息,说明攻击成功。现在很多网站通过验证码、滑块拼图、限制失败登录次数等方式,这些措施虽然提高了安全性,但无法彻底杜绝在线攻击。

==离线攻击:==离线攻击是将获取的哈希密码保存到本地,利用自己的计算机对密码进行离线破解。在线攻击是将明文密码发送到网站进行试探,因此我们不用关心网站究竟采用的哪种加密算法。离线攻击必须要先判断密码的加密方式,这个过程有一定难度,可以通过现有工具实现,有时需要靠经验、统计、测试来判断,有时也需要直觉和运气。判断加密方式之后,剩下的就是将字典中的密码依次加密、比对的过程。

工具:在线攻击中,获取网站基本信息可以用BurpSuite,表单密码破解可以用hydra,离线攻击可以用John the Ripper、Hashcat等工具。

端口扫描

端口扫描是一种常用的探测技术,攻击者可将它用于寻找他们能够成功攻击的服务。连接在网络中的所有计算机都会运行许多使用 TCP 或 UDP 端口的服务,而所提供的已定义端口达6000个以上。通常,端口扫描仅利用对端口所进行的扫描不会造成直接的损失。然而,端口扫描可让攻击者找到可用于发动各种攻击的端口。

工具:X_Scan、SuperScan、nmap

跨站攻击

也称为跨站脚本攻击或跨站漏洞,是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

跨站攻击方式

XSS (Cross-site scripting) 跨站脚本

​ 是注入攻击的一种。其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论,提交含有 JavaScript 的内容文本。这时服务器端如果没有过滤或转义掉这些脚本,作为内容发布到了页面上,其他用户访问这个页面的时候就会运行这些脚本。

CSRF (Cross-site request forgery) 跨站请求伪造

SQL注入

定义

SQL注入是指通过把SQL语句插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL语句的目的。

简单地说,就是在某些表单中,允许用户输入的内容直接用来构造动态sql命令,或者作为存储过程的输入参数,并没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,导致用户随便就可以提交一段数据库查询的代码,然后根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,这就是SQL注入。

什么情况会发生SQL注入?

  • ​ 当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。

  • ​ 代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。

如何防范SQL注入?

1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。

2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。

3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。

5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装

6.sql注入的检测方法一般采取辅助软件或网站平台来检测

检测工具:jsky

ARP欺骗

定义

百度百科定义

又称ARP毒化(ARP poisoning,网上上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网上上特定计算机或所有计算机无法正常连线。

ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据监听、篡改、重放、钓鱼等攻击方式。

原理

原理是由攻击者发送假的ARP数据包到网上,尤其是送到网关上。其目的是要让送至特定的IP地址的流量被错误送到攻击者所取代的地方。因此攻击者可将这些流量另行转送到真正的网关(被动式数据包嗅探,passive sniffing)或是篡改后再转送(中间人攻击,man-in-the-middle attack)。攻击者亦可将ARP数据包导到不存在的MAC地址以达到阻断服务攻击的效果

ARP欺骗方式

主机型ARP欺骗:欺骗者主机冒充网关设备对其他主机进行欺骗

网关型ARP欺骗:欺骗者主机冒充其他主机对网关设备进行欺骗

ARP欺骗防范

​ 1.在主机绑定网关MAC与IP地址为静态(默认为动态),命令:arp -s 网关IP 网关MAC

  2.在网关绑定主机MAC与IP地址

  3.使用ARP防火墙

IP欺骗

定义

IP欺骗是适用于TCP/IP环境的一种复杂攻击方式,也是目前黑客入侵攻击的重要手段之一。 IP欺骗不是入侵的结果,而是入侵的一种手段

IP欺骗原理

在TCP/IP协议组中,IP协议是非面向连接,非可靠传输的协议,IP数据包是进行松散发送的,并不是连续发送的,所以可以在源地址和目的地址中间放入满足要求的IP地址(也就是说可以进行虚假IP地址的提供)

IP欺骗过程

  1. 选定目标主机
  2. 找到目标主机信任的主机
  3. 攻击信任主机,使其丧失工作能力
  4. 采集目标主机的TCP序列号,猜测数据序列号,伪装成信任主机
  5. 建立与目标主机的连接,放置后门程序,进行控制

IP欺骗的预防措施

  1. 放弃以地址为基础的安全验证
  2. 进行数据包过滤
  3. 使用加密方法
  4. 使用随机化的初始序列号

0day

零日这个词历史很悠久,最早出现是在战争中,将一些大规模可毁灭世界的事物(一般是武器)称之为零日危机(类似的还有末日时钟),在世界毁灭之后,重新建立新文明的第一天,即称之为第0天。

后来引入到网络安全领域,将一些大规模、致命性、高威胁性、能够造成巨大破坏的漏洞也称为零日漏洞(并不是所有漏洞都叫0day),缩写即为:0day。

定义

​ 在安全补丁发布前被了解和掌握的漏洞信息,它们可以被黑客或犯罪分子用来攻击企业或个人系统、盗取或改变资料,而由于彻底的安全措施尚未到位,被攻击者几乎无法防范。

扩展阅读

0day漏洞:https://www.sohu.com/a/231781114_609556

社会工程学

社会工程学是黑客米特尼克悔改后在《欺骗的艺术》中所提出的,是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。 在信息安全这个链条中,人的因素是最薄弱的一环节。社会工程就是利用人的薄弱点,通过欺骗手段而入侵计算机系统的一种攻击方法。组织可能采取了很周全的技术安全控制措施,例如:身份鉴别系统、防火墙、入侵检测、加密系统等,但由于员工无意当中通过电话或电子邮件泄露机密信息(如系统口令、IP地址),或被非法人员欺骗而泄露了组织的机密信息,就可能对组织的信息安全造成严重损害。

社会工程学通常以交谈、欺骗、假冒或口语等方式,从合法用户中套取用户系统的秘密。熟练的社会工程师都是擅长进行信息收集的身体力行者。很多表面上看起来一点用都没有的信息都会被这些人利用起来进行渗透。比如说一个电话号码,一个人的名字,或者工作的ID号码,都可能会被社会工程师所利用。

这意味着没有把“人”这个因素放进企业安全管理策略中去的话将会构成一个很大的安全“裂缝”。

扩展:安全类社区推荐