《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》——1.5 Linux后门入侵检测工具

本文涉及的产品
云防火墙,500元 1000GB
简介:

本节书摘来自华章计算机《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》一书中的第1章,第1.5节,作者:高俊峰著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.5 Linux后门入侵检测工具

rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现这种木马。rootkit攻击能力极强,对系统的危害很大,它通过一套工具来建立后门和隐藏行迹,从而让攻击者保住权限,以使它在任何时候都可以使用root权限登录系统。
rootkit主要有两种类型:文件级别和内核级别,下面分别进行简单介绍。
1 . 文件级别rootkit
文件级别的rootkit一般是通过程序漏洞或者系统漏洞进入系统后,通过修改系统的重要文件来达到隐藏自己的目的。在系统遭受rootkit攻击后,合法的文件被木马程序替代,变成了外壳程序,而其内部是隐藏着的后门程序。通常容易被rootkit替换的系统程序有login、ls、ps、ifconfig、du、find、netstat等,其中login程序是最经常被替换的,因为当访问Linux时,无论是通过本地登录还是远程登录,/bin/login程序都会运行,系统将通过/bin/login来收集并核对用户的账号和密码,而rootkit就是利用这个程序的特点,使用一个带有根权限后门密码的/bin/login来替换系统的/bin/login,这样攻击者通过输入设定好的密码就能轻松进入系统。此时,即使系统管理员修改root密码或者清除root密码,攻击者还是一样能通过root用户登录系统。通常攻击者在进入Linux系统后,会进行一系列的攻击动作,最常见的是安装嗅探器收集本机或者网络中其他服务器的重要数据。在默认情况下,Linux中也有一些系统文件会监控这些工具动作,例如ifconfig命令,所以,攻击者为了避免被发现,会想方设法替换其他系统文件,常见的就是ls、ps、ifconfig、du、find、netstat等。如果这些文件都被替换,那么在系统层面就很难发现rootkit已经在系统中运行了。
这就是文件级别的rootkit,对系统维护威胁很大,目前最有效的防御方法是定期对系统重要文件的完整性进行检查,如果发现文件被修改或者替换,那么很可能系统已经遭受了rootkit入侵。检查文件完整性的工具很多,常见的有Tripwire、 aide等,可以通过这些工具定期检查文件系统的完整性,以检测系统是否被rootkit入侵。
2 . 内核级别的rootkit
内核级别rootkit是比文件级别rootkit更高级的一种入侵方式,它可以使攻击者获得对系统底层的完全控制权,此时攻击者可以修改系统内核,进而截获运行程序向内核提交的命令,并将其重定向到入侵者所选择的程序并运行此程序,也就是说,当用户要运行程序A时,被入侵者修改过的内核会假装执行A程序,而实际上却执行了程序B。
内核级别rootkit主要依附在内核上,它并不对系统文件做任何修改,因此一般的检测工具很难检测到它的存在,这样一旦系统内核被植入rootkit,攻击者就可以对系统为所欲为而不被发现。目前针对内核级的rootkit还没有很好的防御工具,因此,做好系统安全防范就非常重要,将系统维持在最小权限内工作,只要攻击者不能获取root权限,就无法在内核中植入rootkit。
1.5.1 rootkit后门检测工具chkrootkit
chkrootkit是Linux系统下查找并检测rootkit后门的一个工具,它的官方网站是: http://www.chkrootkit.org/。 chkrootkit没有包含在官方的CentOS源中,因此要采取手动编译的方法来安装,不过这种安装方法也更加安全。下面简单介绍下chkrootkit的安装过程。
1 . 准备gcc编译环境
对于CentOS系统,需要安装gcc编译环境,执行下述三个命令:

[root@server ~]# yum -y install gcc
[root@server ~]# yum -y install gcc-c++
[root@server ~]# yum -y install make

2 . 安装chkrootkit
为了安全起见,建议直接从官方网站下载chkrootkit源码,然后进行安装,操作如下:

[root@server ~]# tar zxvf chkrootkit.tar.gz
[root@server ~]# cd chkrootkit-*
[root@server ~]# make sense
# 注意,上面的编译命令为make sense
[root@server ~]# cd ..
[root@server ~]# cp -r chkrootkit-* /usr/local/chkrootkit
[root@server ~]# rm -rf chkrootkit-*

3 . 使用chkrootkit
安装完的chkrootkit程序位于/usr/local/chkrootkit目录下,执行如下命令即可显示chkrootkit的详细用法:

[root@server chkrootkit]# /usr/local/chkrootkit/chkrootkit  -h

chkrootkit各个参数的含义如表1-4所示。
image

chkrootkit的使用比较简单,直接执行chkrootkit命令即可自动开始检测系统。下面是某个系统的检测结果:

[root@server chkrootkit]# /usr/local/chkrootkit/chkrootkit
Checking `ifconfig'... INFECTED
Checking `ls'... INFECTED
Checking `login'... INFECTED
Checking `netstat'... INFECTED
Checking `ps'... INFECTED
Checking `top'... INFECTED
Checking `sshd'... not infected
Checking `syslogd'... not tested
Checking `tar'... not infected
Checking `tcpd'... not infected
Checking `tcpdump'... not infected
Checking `telnetd'... not found

从输出结果可以看出,此系统的ifconfig、ls、login、netstat、ps和top命令已经被感染。针对被感染rootkit的系统,最安全而有效的方法就是备份数据并重新安装系统。

  1. chkrootkit的缺点
    chkrootkit在检查rootkit的过程中使用了部分系统命令,因此,如果服务器被黑客入侵,那么依赖的系统命令可能也已经被入侵者替换,此时chkrootkit的检测结果将变得完全不可信。为了避免chkrootkit的这个问题,可以在服务器对外开放前,事先将chkrootkit使用的系统命令进行备份,在需要的时候使用备份的原始系统命令让chkrootkit对rootkit进行检测。这个过程可以通过下面的操作实现:
[root@server ~]# mkdir /usr/share/.commands
[root@server ~]# cp `which --skip-alias awk cut echo find egrep id head ls netstat ps
strings sed uname` /usr/share/.commands
[root@server ~]# /usr/local/chkrootkit/chkrootkit -p /usr/share/.commands/
[root@server share]# cd /usr/share/
[root@server share]# tar zcvf commands.tar.gz .commands
[root@server share]#  rm -rf commands.tar.gz

上面这段操作是在/usr/share/下建立了一个.commands隐藏文件,然后将chkrootkit使用的系统命令进行备份到这个目录下。为了安全起见,可以将.commands目录压缩打包,然后下载到一个安全的地方进行备份,以后如果服务器遭受入侵,就可以将这个备份上传到服务器任意路径下,然后通过chkrootkit命令的“-p”参数指定这个路径进行检测即可。
1.5.2 rootkit后门检测工具RKHunter
RKHunter是专业检测系统是否感染rootkit的一个工具,它通过执行一系列的脚本来确认服务器是否已经感染rootkit。在官方资料中,RKHunter可以做的事情有:
MD5校验测试,检测文件是否有改动
检测rootkit使用的二进制和系统工具文件
检测特洛伊木马程序的特征码
检测常用程序的文件属性是否异常
检测系统相关的测试
检测隐藏文件
检测可疑的核心模块LKM
检测系统已启动的监听端口
下面详细讲述下RKHunter的安装与使用。
1 . 安装RKHunter
RKHunter的官方网站为:http://www.rootkit.nl/projects/rootkit_hunter.html,建议从这个网站下载RKHunter,本书下载使用的版本是rkhunter-1.4.0.tar.gz。RKHunter的安装非常简单,具体过程如下:

[root@server ~]# ls
rkhunter-1.4.0.tar.gz
[root@server ~]# pwd
/root
[root@server ~]# tar -zxvf rkhunter-1.4.0.tar.gz 
[root@server ~]# cd rkhunter-1.4.0
[root@server rkhunter-1.4.0]# ./installer.sh  --layout default --install

这里采用RKHunter的默认安装方式,rkhunter命令被安装到/usr/local/bin目录下。
2 . 使用rkhunter命令
rkhunter命令的参数较多,但是使用非常简单,直接运行rkhunter即可显示此命令的用法。下面简单介绍下rkhunter常用的几个参数选项。

[root@server ~]# /usr/local/bin/rkhunter–help

rkhunter的常用参数以及含义如表1-5所示。
image

下面是通过RKHunter对某个系统的检测示例。

[root@server rkhunter-1.4.0]# /usr/local/bin/rkhunter   -c 
[ Rootkit Hunter version 1.4.0 ]
#下面是第一部分,先进行系统命令的检查,主要是检测系统的二进制文件,因为这些文件最容易被rootkit
#攻击。显示OK字样表示正常,显示Warning表示有异常,需要引起注意,而显示“Not found”字样,一
#般无需理会
Checking system commands...

  Performing 'strings' command checks
    Checking 'strings' command    [ OK ]

  Performing 'shared libraries' checks
    Checking for preloading variables    [ None found ]
    Checking for preloaded libraries    [ None found ]
    Checking LD_LIBRARY_PATH variable    [ Not found ]

  Performing file properties checks
    Checking for prerequisites    [ Warning ]
    /usr/local/bin/rkhunter     [ OK ]
    /sbin/chkconfig    [ OK ]
....(略)....
[Press <ENTER> to continue]
#下面是第二部分,主要检测常见的rootkit程序,显示“Not found”表示系统未感染此rootkit
Checking for rootkits...
  Performing check of known rootkit files and directories
    55808 Trojan - Variant A    [ Not found ]
    ADM Worm    [ Not found ]
    AjaKit Rootkit    [ Not found ]
    Adore Rootkit    [ Not found ]
aPa Kit    [ Not found ]
    Apache Worm    [ Not found ]
    Ambient (ark) Rootkit    [ Not found ]
    Balaur Rootkit    [ Not found ]
    BeastKit Rootkit    [ Not found ]
beX2 Rootkit    [ Not found ]
    BOBKit Rootkit    [ Not found ]
....(略)....
[Press <ENTER> to continue]
#下面是第三部分,主要是一些特殊或附加的检测,例如对rootkit文件或目录检测、对恶意软件检测以及
#对指定的内核模块检测
  Performing additional rootkit checks
    Suckit Rookit additional checks    [ OK ]
    Checking for possible rootkit files and directories    [ None found ]
    Checking for possible rootkit strings    [ None found ]
  Performing malware checks
    Checking running processes for suspicious files    [ None found ]
    Checking for login backdoors     [ None found ]
    Checking for suspicious directories    [ None found ]
    Checking for sniffer log files    [ None found ]
  Performing Linux specific checks
    Checking loaded kernel modules    [ OK ]
    Checking kernel module names    [ OK ]
[Press <ENTER> to continue]
#下面是第四部分,主要对网络、系统端口、系统启动文件、系统用户和组配置、SSH配置、文件系统等进行
#检测
Checking the network...
  Performing checks on the network ports
    Checking for backdoor ports    [ None found ]
  Performing checks on the network interfaces
    Checking for promiscuous interfaces    [ None found ]
Checking the local host...
  Performing system boot checks
    Checking for local host name    [ Found ]
    Checking for system startup files    [ Found ]
    Checking system startup files for malware    [ None found ]
  Performing group and account checks
    Checking for passwd file    [ Found ]
    Checking for root equivalent (UID 0) accounts    [ None found ]
    Checking for passwordless accounts    [ None found ]
....(略)....
[Press <ENTER> to continue]
#下面是第五部分,主要是对应用程序版本进行检测
Checking application versions...

    Checking version of GnuPG    [ OK ]
    Checking version of OpenSSL    [ Warning ]
    Checking version of OpenSSH    [ OK ]

#下面是第六部分,这一部分其实是上面输出的一个总结,通过这个总结,可以大概了解服务器目录的安全状态
System checks summary
=====================
File properties checks...
    Required commands check failed
    Files checked: 137
    Suspect files: 4

Rootkit checks...
    Rootkits checked : 311
    Possible rootkits: 0

Applications checks...
    Applications checked: 3
    Suspect applications: 1

The system checks took: 6 minutes and 41 seconds

在Linux终端使用RKHunter来检测,最大的好处在于每项的检测结果都使用不同的颜色显示,如果是绿色的表示没有问题,如果是红色的,那就要引起关注了。另外,在上面执行检测的过程中,在每个部分检测完成后,需要以Enter键来继续。如果要让程序自动运行,可以执行如下命令:

[root@server ~]# /usr/local/bin/rkhunter --check --skip-keypress

同时,如果想让检测程序每天定时运行,那么可以在/etc/crontab中加入如下内容:

09 3 * * * root /usr/local/bin/rkhunter --check --cronjob

这样,RKHunter检测程序就会在每天的9:30运行一次。

相关文章
|
24天前
|
监控 网络协议 Nacos
Nacos:构建微服务架构的基石
Nacos:构建微服务架构的基石
71 2
|
5天前
|
监控 安全 API
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
本文详细介绍了PaliGemma2模型的微调流程及其在目标检测任务中的应用。PaliGemma2通过整合SigLIP-So400m视觉编码器与Gemma 2系列语言模型,实现了多模态数据的高效处理。文章涵盖了开发环境构建、数据集预处理、模型初始化与配置、数据加载系统实现、模型微调、推理与评估系统以及性能分析与优化策略等内容。特别强调了计算资源优化、训练过程监控和自动化优化流程的重要性,为机器学习工程师和研究人员提供了系统化的技术方案。
110 77
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
|
8天前
|
缓存 Kubernetes 容灾
如何基于服务网格构建高可用架构
分享如何利用服务网格构建更强更全面的高可用架构
|
18天前
|
弹性计算 持续交付 API
构建高效后端服务:微服务架构的深度解析与实践
在当今快速发展的软件行业中,构建高效、可扩展且易于维护的后端服务是每个技术团队的追求。本文将深入探讨微服务架构的核心概念、设计原则及其在实际项目中的应用,通过具体案例分析,展示如何利用微服务架构解决传统单体应用面临的挑战,提升系统的灵活性和响应速度。我们将从微服务的拆分策略、通信机制、服务发现、配置管理、以及持续集成/持续部署(CI/CD)等方面进行全面剖析,旨在为读者提供一套实用的微服务实施指南。
|
16天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
59 5
|
13天前
|
监控 安全 持续交付
构建高效微服务架构:策略与实践####
在数字化转型的浪潮中,微服务架构凭借其高度解耦、灵活扩展和易于维护的特点,成为现代企业应用开发的首选。本文深入探讨了构建高效微服务架构的关键策略与实战经验,从服务拆分的艺术到通信机制的选择,再到容器化部署与持续集成/持续部署(CI/CD)的实践,旨在为开发者提供一套全面的微服务设计与实现指南。通过具体案例分析,揭示如何避免常见陷阱,优化系统性能,确保系统的高可用性与可扩展性,助力企业在复杂多变的市场环境中保持竞争力。 ####
33 2
|
14天前
|
弹性计算 Kubernetes API
构建高效后端服务:微服务架构的深度剖析与实践####
本文深入探讨了微服务架构的核心理念、设计原则及实现策略,旨在为开发者提供一套系统化的方法论,助力其构建灵活、可扩展且易于维护的后端服务体系。通过案例分析与实战经验分享,揭示了微服务在提升开发效率、优化资源利用及增强系统稳定性方面的关键作用。文章首先概述了微服务架构的基本概念,随后详细阐述了其在后端开发中的应用优势与面临的挑战,最后结合具体实例,展示了如何从零开始规划并实施一个基于微服务的后端项目。 ####
|
18天前
|
消息中间件 监控 安全
构建高效微服务架构:最佳实践与挑战
在现代软件开发中,微服务架构因其高度的可扩展性、灵活性和敏捷性而受到青睐。本文深入探讨了构建高效微服务架构的关键策略,包括服务的划分、通信机制、数据管理、部署与监控等方面的最佳实践。同时,文章也分析了在实施过程中可能遇到的挑战,如服务间的依赖管理、数据一致性问题、安全考量及性能优化等,并提出了相应的解决方案。通过实际案例分析,本文旨在为开发者提供一套实用的指南,帮助他们在构建微服务系统时能够有效规避风险,提升系统的健壮性和用户体验。
W9
|
20天前
|
运维 关系型数据库 MySQL
轻松管理Linux服务器的5个优秀管理面板
Websoft9 应用管理平台,github 2k star 开源软件,既有200+的优秀开源软件商店,一键安装。又有可视化的Linux管理面板,文件、数据库、ssl证书方便快捷管理。
W9
68 1
|
24天前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
30 4