我们在进行主机安全检查或处理安全事件时,都免不了要检查系统的安全性。在进行Linux安全检查时,需要使用相关脚本对系统安全状况进行综合分析。一方面需要尽可能多地收集系统的相关信息,另一方面需要在数量大的情况下尽可能提高效率。由于多次安检时要对几十台服务器进行全面检查,如果手动编写脚本,一方面效率低下,另一方面安检人员需要熟悉要检查的项目检查。在此案例中,我编写了一个Linux安全检查脚本,主要用于以下场景:Linux主机安全检查;Linux主机安全事件需要综合分析。脚本已经完成了一段时间。最近在应急群里讨论,发现这个区域的安全检查是大家的强烈需求,所以把检查脚本分享给大家。分享的目的主要有两个:一是提高大家的Linux安全检查效率,释放大家的能量;另一方面希望大家在使用过程中不断发现问题,不断总结遗漏的安全检查项,帮助完善检查脚本。所以大家在使用过程中有什么问题或者建议,请及时发给我。一、检查内容1、总体框架关于Linux安全检查,这里我总结一下需要检查的主要内容:(1)系统安全检查(进程、开放端口、连接、日志等)目前由我实现脚本函数;(2)Rootkit建议使用rootkit查杀工具进行排查,如rkhunter;(3)Webshel??l比较难杀,不是本脚本需要实现的功能。这个检查可以使用D-Shield(Linux下,可以把web目录挂载到windows下检查);(4)Weblog(5)流量部分主要针对主机的长期流量分析。目前,我个人使用tshark来实现基本的流量分析。会相应改进。在流量部分,可以提取流量五元组、DNS流量、HTTP流量,结合威胁情报数据进行深度分析。后期我会做相关的尝试,有条件的话会分享相应的内容。二、系统安全检测框架二、功能实现一、功能设计V1.0主要功能为信息采集V1.1主要功能为分析原始数据,发现可疑或危险物品V1.2添加基线功能inspectionV1.3可对相关危险物品或可疑物品进行自动处理。现在是V1.2版本,后续会完善V1.3的相关功能。此外,该操作可实现一键式安全检查,并将检查结果保存到机器中。在hosts文本中输入对应的IP、账号、密码即可。操作人员的参与被最小化。2.各脚本的功能说明。下载后,整个脚本的目录结构如下:checkrulues:判断逻辑部分。目前只有端口的判断逻辑。后期可以把检查进程和应用是否存在漏洞等逻辑放在这里,安全检查在里面进行,比较简单的判断逻辑可以直接在buying_linuxcheck.sh中实现;buying_linuxcheck.sh:核心检查逻辑;del.exp:删除脚本并在远程服务器上查看结果;get.exp:获取远程服务器上的安全校验结果;hosts.txt:需要检查的服务器列表;login.sh:一键登录校验,只需要运行脚本进行安全校验;put.exp:上传安全检查脚本到远程服务器;readme.txt:使用相关文档;sh.exp:在远程服务器上执行安全检查脚本;下面介绍其中的一些脚本。(1)Checkrules的判断逻辑主要放在两个文件中:一个在checkrules中,格式为dat。建议把比较复杂的判断逻辑放在这里,比如下面的TCP危险端口,因为有很多,如果放在buying_linuxcheck.sh里,代码有点冗长。下面是TCP高危端口??的判断逻辑,主要是根据木马默认使用的端口号。这里的判断逻辑比较简单,可能存在误报,所以在后续的干预分析中需要人工进行。(2)buying_linuxcheck.sh的核心函数收集和判断逻辑,比较简单的判断逻辑可以放在这里进行判断。3.使用和使用比较简单。把这个脚本复制到自己的一台linux主机上,可以用虚拟机,把要检查的服务器的IP、账号、密码放到hosts.txt目录下,直接运行,实现一键安全检查。相关操作(1)将要查询的服务器IP、账号、密码写入hosts.txt文件,格式为:IP:port:user:userpassword:rootpassword其中user为普通用户的账号,port为ssh登录端口,uesrpassword为普通账号密码,rootpassword为root密码。添加普通用户的唯一原因是某些系统实施了不允许root直接登录的安全策略。如果勾选的服务器允许root直接登录,可以直接设置user和userpassword写成root和root密码。这里勾选的服务器允许root直接登录,所以直接写root账号和密码。(2)运行安全检查脚本:shlogin.sh安全检查脚本正在后台运行,稍等...(3)当看到远程服务器上的检查脚本和检查结果被删除时,说明检查结束了。(4)检查结束后,将远程服务器上的结果保存到本地主机:4.检查结果说明检查结束后,相应结果解压后的目录结构如下:1.check_file保存最后检查的结果是这样的……2、Linux系统日志保存在Log目录下。web日志当前脚本不具备自动打包功能。所有的日志,很多日志是不需要检查分析的,所以相关人员在检查的时候可以根据具体情况对相应的日志进行打包。3、danger_file.txt保存安全检查时发现的问题:4、sysfile_md5.txt保存系统密钥文件或系统文件的MD5值。记录这些密钥文件的MD5值主要有两个作用:一个是在定期巡检时与第一次的结果进行比较,如果有变化会提示;另一种是将这些关键文件的MD5值运行到威胁情报库或virustotal中,寻找可能的系统文件被替换的情况。5.代码下载相关代码已经上传到github。需要的话可以自己下载。有问题也可以直接联系:https://github.com/T0xst/linux
