• Linux入侵痕迹检测方案【华为云技术分享】


    背景说明

    扫描是一切入侵的基础,通过扫描来发现目标主机是否为活动主机、操作系统是什么版本、开放了哪些服务等。扫描技术纷繁复杂,新的扫描技术也层出不穷,不可能穷举所有扫描技术,下面按入侵步骤对主机扫描、端口扫描和服务扫描技术做一个简要分类与概述。

    活动主机扫描可分为两类:1)ICMP echo扫描与Broadcast ICMP扫描;端口扫描也分为两类:1)开放扫描,这类扫描会产生大量的审计数据,容易被对方发现,但其可靠性高(例如TCP connect扫描);2)秘密扫描,这类扫描能有效的避免对方入侵检测系统和防火墙的检测,但这种扫描使用的数据包在通过网络时容易被丢弃从而产生错误的探测信息(例如SYN、FIN、ACK、NULL等扫描);最后一类为针对特定服务扫描,指对特定系统(OS型号与版本)的特定服务(网络服务与服务版本)的特定漏洞进行扫描,现有扫描软件一般都会以插件形式来增加对特定漏洞扫描支持,一旦扫描确认漏洞存在后可直接利用。例如针对WEB服务器的扫描,或针对FTP服务器扫描。

    检测思路

    不同的扫描技术与扫描方式,有不同的检测方法。但检测的总体思路是一致的,即利用iptables的配置策略来记录日志(具体配置策略请参考检测思路中不同场景的配置),再通过对日志的分析查找来检测可疑的扫描并发出报警。下面检测方案中,针对不同的扫描技术与扫描方式,利用不同的检测方案进行检查。

    场景1:ICMP扫描痕迹检查

    使用ICMP echo或Broadcast ICMP进行活动主机探测,会被配置了IPTABLES的系统记录在日志中

    针对Broadcast ICMP包:

    在配置了iptable的系统中,配置如下的日志记录策略:

    iptables -A INPUT -p icmp --icmp-type echo-request -j LOG

    查找协议类型为ICMP echo request的广播包,若发现此类型包的记录,发出报警。

    针对ICMP echo包:

    思路1

    若能确定许可的IP地址范围,用白名单来发现可疑行为并报警;

    思路2

    若不能确定IP地址白名单,查找非工作时段(例如深夜)记录,若找到发出相应的可疑行为报警。

    场景2:TCP Connect扫描痕迹检查

    使用TCP三步握手来探测是否开放相应的端口与服务

    思路1

    首先维护操作系统与业务系统正常运行所需要开放的端口的白名单,并配置相应的iptables日志记录策略:

    iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED -j LOG

    在记录的日志中查找,若日志中记录的端口不在白名单中,发出报警。

    思路2

    用统计方法检测,分别针对低速扫描(1小时—2天发一个包)和常规扫描(1分钟—1小时会发N个包)有两种设置统计检测的方法。第一种针对常规扫描,若发现一段时间内(建议值为5分钟,可选范围为1—60分钟),来自同一IP地址对不同目标端口的记录超过一定计数阈值(建议值为3,建议范围为>3的值),则报警,以5分钟为步进值持续对日志进行统计查找;第二种针对低速扫描,若一段时间内(建议值为6小时,可选范围1小时—2天),来自同一IP地址对不同目标端口的记录超过一定计数阈值(建议值为3,建议范围为>3的值),则报警,
    注:时间阈值和计数阈值的具体值还应根据实际情况设定

    场景3:WEB扫描痕迹检查

    利用GET请求WEB服务器发现服务器版本、漏洞等信息,进一步利用这些漏洞入侵对linux的WEB服务Apache,这种扫描会在WEB服务器日志access.log中记录,特点明显。即同一个IP持续10分钟每秒产生10多个get请求,很明显的web扫描痕迹。可以用时间阈值(建议值为5分钟,建议范围建议范围为1—1440分钟)与计数阈值(建议值为10,建议范围为>3的值)来过滤该IP的请求日志,分析攻击者是否入侵。另外,对于SQL注入、XSS注入、命令注入和路径遍历扫描可根据日志中的关键字识别潜在的WEB扫描与攻击痕迹。

    注:时间阈值和计数阈值的具体值还应根据实际情况设定,且可变更

    作者:jz

    精彩推荐

    周杰伦新歌《说好不哭》上线,程序员哭了......【华为云分享】

    了解 MongoDB 看这一篇就够了【华为云分享】

    高频Linux命令小结(新手向)

    Linux系统通过FTP进行文档基本操作【华为云分享】

    100 个网络基础知识普及,看完成半个网络高手

     如果让你手写个栈和队列,你还会写吗?

    Python面试的一些心得,与Python练习题分享

  • 相关阅读:
    【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?
    Go语言基础之函数参数
    Go语言基础之函数定义
    Go语言基础之map
    Go语言基础之切片
    Go语言基础之数组
    Go中nil的定义
    复合数据类型介绍
    Go语言基础之流程控制goto
    Go语言基础之流程控制switch分支
  • 原文地址:https://www.cnblogs.com/huaweicloud/p/11861470.html
Copyright © 2020-2023  润新知