入侵检测体系中的六方面关键数据

网络安全事件的发生很多时候通过直接的手段很难发现入侵行为,但如果我们拥有多样化的监测,这样就可以极大的降低安全的风险。

对于主机来说,主要有几个层面的内容,网络,进程,文件,操作命令,文件操作,系统事件大概几个方面。通过这几个方面的综合分析,就可以发现绝大多数的入侵行为。



我们从一些假设的攻击开始分析,大多数的攻击都是从弱点开始,包括一些漏洞、弱口令、0day 等等,尤其是 0day,大多数基于规则的安全防护都是失效的。

攻击的第一步是踩点,踩点的行为有多种多样,最常用的是扫描,包括主机扫描,端口扫描,漏洞扫描等,扫描的发现可以从两个方面来发现:

  1. 一是从网络上发现流量的异常行为,比如端口扫描就会发现一台主机在短时间内容会有大量的不同端口请求。

  2. 一是从主机上可以发现,比如密码猜测扫描就会发现大量的登录失败的日志等。

当发现主机有漏洞的时候,下一步要做的事情是漏洞利用,漏洞的利用过程有时候很难被感知,比如缓冲区溢出等,但利用后的结果还是从系统中可以发现。比如如果有弱口令就会发现有异常登录行为,包括时间异常,登录源 IP 异常等等。

比如文件的上传行为,用户操作行为,大多数黑客攻击成功后会到服务器上上传一些木马等文件,会做一些操作行为,比如创建一些隐蔽账号等。

当一台主机被黑客控制后,往往这台机器机会沦为黑客的肉鸡,这个时候也会产生一些异常的行为,比如在网络上,会有非法外联,不管是木马主动发起还是木马被动监听,都会在网络上产生这些异常信息。

在进程层面,很多时候会产生异常进程,很多进程会通过伪装成系统进程名,但是只要留意依然能够被发现。

技术实现

对 Linux 系统而言,这些参数和指标都是比较容易的。下面是一些实用脚本可以参考下。

1. 进程:


返回值示例:


 

说明:此脚本主要是根据ps aux的进程信息进行再次分析,进行格式化处理,排序,去重复,然后过滤掉一些系统进程。

2. 端口:


返回值示例:


说明:此脚本主要是根据ss -ntu获取ip端口信息,排除掉本机到本机的IP,然后进行格式化输出。

3. 操作命令审计:


说明:此脚本主要获取的是 history 命令中的内容,然后格式化处理后可以通过 syslog 发送出来,这样就可以实时的审计登录系统用户的命令行操作。

4. 系统事件:

正常在 /var/log/secure 文件中,比如登录成功失败等。

例如,登录会话:

Jan  1 11:29:45 localhost sshd[29778]: Accepted password for secisland from xx.xx.xx.72 port 14630 ssh2

Jan  1 11:29:45 localhost sshd[29778]: pam_unix(sshd:session): session opened for user secilog by (uid=0)

Jan  1 11:29:45 localhost sshd[29780]: subsystem request for sftp by user secilog

Jan  1 11:29:45 localhost sshd[29778]: pam_unix(sshd:session): session closed for user secilog

5. 上传下载:

目前 Linux sshd 会自带的 sftp 协议日志,通过配置可以记录 sftp 的日志。

配置:
#vi /etc/ssh/sshd_config

修改
Subsystem sftp /usr/libexec/openssh/sftp-server

如下
Subsystem sftp internal-sftp -l INFO -f local0

去掉下面一行的注释
#LogLevel INFO

修改 syslog 配置
vi /etc/rsyslog.conf

增加一行

local0.*                    @ip

6. 文件修改:

对文件修改的监控稍微麻烦点,可以通过轮询文件修改时间,通过实现对文件进行打标签对比。效果比较好的方式是利用 Linux 的 Inotify 机制来监控文件操作。

Inotify 是一个 Linux 特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。多用在主机防篡改,网页防篡改中,比较重要所以系统也集成了此功能。

安装 SeciInofify,这个版本支持 syslog 发送,安装好后,运行:

nohup ./inotifywait -c -rme create,modify,delete,move,attrib,delete_self /home /etc &

这样就对指定的目录 /home /etc 进行监控,这两个目录中文件的任何变化都会发送到日志服务器中。

说明:开源的 Inotify 并没有日志输出功能,修改后的此代码,增加了 logger 输出功能,这样就可以实时的把文件变化情况同 syslog 发送出来,代码下载位置:

https://github.com/zhulinu/SeciInotify

总结

如果在日常运维中能构建入侵检测体系,实时的分析主机中的网络,进程,操作命令,文件操作,系统操作,上传下载行为,能把这些环节都记录加以分析的话,应该大多数的情况下能第一时间发现入侵行为,这样就降低了很大的风险。

但这些东西如果都手工来做,效率还是比较低的,可以借助日志收集分析工具来进行分析,比如 splunk,arcsight,secilog,elk 等。这样就会达到事半功倍的效果。

评论
热度(1)

© 走过岁月...... | Powered by LOFTER