当前位置: 首页 > 科技观察

应急系统Linux主机安全检查

时间:2023-03-23 11:03:01 科技观察

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