安全运维之:Linux后门入侵检测工具,附bash漏洞最终解决方法

简介:

一、rootkit简介

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。


二、rootkit后门检测工具chkrootkit

chkrootkit是一个Linux系统下查找并检测rootkit后门的工具,它的官方址: http://www.chkrootkit.org/。 chkrootkit没有包含在官方的CentOS源中,因此要采取手动编译的方法来安装,不过这种安装方法也更加安全。下面简单介绍下chkrootkit的安装过程。

1.准备gcc编译环境

对于CentOS系统,需要安装gcc编译环境,执行下述三条命令:

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

2、安装chkrootkit

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

1
2
3
[root@server ~] # tar zxvf chkrootkit.tar.gz
[root@server ~] # cd chkrootkit-*
[root@server chkrootkit-0.50] # make sense

# 注意,上面的编译命令为make sense

1
2
3
[root@server chkrootkit-0.50] # 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各个参数的含义如下所示。


参数含义

-h显示帮助信息

-v显示版本信息

-l显示测试内容

-ddebug模式,显示检测过程的相关指令程序

-q安静模式,只显示有问题的内容

-x高级模式,显示所有检测结果

-r dir设置指定的目录为根目录

-p dir1:dir2:dirN指定chkrootkit检测时使用系统命令的目录

-n跳过NFS连接的目录

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

1
2
3
4
5
6
7
8
9
10
11
12
13
[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的系统,最安全而有效的方法就是备份数据重新安装系统。

4、chkrootkit的缺点

chkrootkit在检查rootkit的过程中使用了部分系统命令,因此,如果服务器被黑客入侵,那么依赖的系统命令可能也已经被入侵者替换,此时chkrootkit的检测结果将变得完全不可信。为了避免chkrootkit的这个问题,可以在服务器对外开放前,事先将chkrootkit使用的系统命令进行备份,在需要的时候使用备份的原始系统命令让chkrootkit对rootkit进行检测。这个过程可以通过下面的操作实现:

1
2
3
4
5
6
[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”参数指定这个路径进行检测即可。


三、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的安装非常简单,过程如下:

1
2
3
4
5
6
7
[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常用参数以及含义如下所示。

 参数             含义

-c, --check必选参数,表示检测当前系统

--configfile <file>使用特定的配置文件

--cronjob作为cron任务定期运行

--sk, --skip-keypress自动完成所有检测,跳过键盘输入

--summary显示检测结果的统计信息

--update检测更新内容

-V, --version显示版本信息

--versioncheck检测最新版本

下面是通过rkhunter对某个系统的检测示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
[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中加入如下内容:

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

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


安全更新:

今天刚刚爆出Bash安全漏洞,SSH bash紧急安全补丁!重要!


特别提醒:Linux 官方已经给出最新解决方案,已经解决被绕过的bug,建议您尽快重新完成漏洞修补。openSUSE 镜像已经给出修复方案了。 


 【已确认被成功利用的软件及系统】  

所有安装GNU bash 版本小于或者等于4.3的Linux操作系统。  

 

 

【漏洞描述】  

该漏洞源于你调用的bash shell之前创建的特殊的环境变量,这些变量可以包含代码,同时会被bash执行。   

 

【漏洞检测方法】  

漏洞检测命令:env -i  X='() { (a)=>\' bash -c 'echo date'; cat echo 

 

 

修复前 

输出:    当前系统时间  

 

 

使用修补方案修复后 

输出: 

date  

(备注:输出结果中见到"date"字样就修复成功了。) 

 

特别提示:该修复不会有任何影响,如果您的脚本使用以上方式定义环境变量,修复后您的脚本执行会报错。 

 

【建议修补方案 】  

 

请您根据Linux版本选择您需要修复的命令, 为了防止意外情况发生,建议您执行命令前先对Linux服务器系统盘打个快照,如果万一出现升级影响您服务器使用情况,可以通过回滚系统盘快照解决。  

 

centos:(最终解决方案) 

yum clean all 

yum makecache 

yum -y update bash  

 

ubuntu:(最终解决方案) 

apt-get update 

apt-get -y install --only-upgrade bash  

 

debian:(最终解决方案) 

7.5  64bit && 32bit  

apt-get update 

apt-get -y install --only-upgrade bash  

 

6.0.x 64bit  

wget http://mirrors.aliyun.com/debian/pool/main/b/bash/bash_4.1-3+deb6u2_amd64.deb &&  dpkg -i bash_4.1-3+deb6u2_amd64.deb  

 

6.0.x 32bit  

wget http://mirrors.aliyun.com/debian/pool/main/b/bash/bash_4.1-3+deb6u2_i386.deb &&  dpkg -i bash_4.1-3+deb6u2_i386.deb 

 

 

aliyun linux:(最终解决方案) 

5.x 64bit  

wget http://mirrors.aliyun.com/centos/5/updates/x86_64/RPMS/bash-3.2-33.el5_10.4.x86_64.rpm && rpm -Uvh bash-3.2-33.el5_10.4.x86_64.rpm  

 

5.x 32bit  

wget http://mirrors.aliyun.com/centos/5/updates/i386/RPMS/bash-3.2-33.el5_10.4.i386.rpm  && rpm -Uvh bash-3.2-33.el5_10.4.i386.rpm  

 

opensuse:(最终解决方案) 

 

zypper clean 

zypper refresh 

zypper update -y bash 















本文转自南非蚂蚁51CTO博客,原文链接:http://blog.51cto.com/ixdba/1557983 ,如需转载请自行联系原作者




相关文章
|
运维 Prometheus 监控
别再盲选了!开源运维工具选型这事儿,咱得说人话
别再盲选了!开源运维工具选型这事儿,咱得说人话
861 7
|
人工智能 运维 安全
基于合合信息开源智能终端工具—Chaterm的实战指南【当运维遇上AI,一场效率革命正在发生】
在云计算和多平台运维日益复杂的今天,传统命令行工具正面临前所未有的挑战。工程师不仅要记忆成百上千条操作命令,还需在不同平台之间切换终端、脚本、权限和语法,操作效率与安全性常常难以兼顾。尤其在多云环境、远程办公、跨部门协作频繁的背景下,这些“低效、碎片化、易出错”的传统运维方式,已经严重阻碍了 IT 团队的创新能力和响应速度。 而就在这时,一款由合合信息推出的新型智能终端工具——Chaterm,正在悄然颠覆这一现状。它不仅是一款跨平台终端工具,更是业内率先引入 AI Agent 能力 的“会思考”的云资源管理助手。
|
传感器 人工智能 运维
拔俗AI巡检系统:让设备“会说话”,让隐患“早发现”,打造更安全高效的智能运维
AI巡检系统融合AI、物联网与大数据,实现设备7×24小时智能监测,自动识别隐患并预警,支持预测性维护,提升巡检效率5倍以上,准确率超95%。广泛应用于工厂、电力、交通等领域,推动运维从“被动响应”转向“主动预防”,降本增效,保障安全,助力数字化转型。(238字)
1391 0
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
运维 安全 Linux
试试Linux设备命令行运维工具——Wowkey
WowKey 是一款专为 Linux 设备设计的命令行运维工具,提供自动化、批量化、标准化、简单化的运维解决方案。它简单易用、高效集成且无依赖,仅需 WIS 指令剧本文件、APT 账号密码文件和 wowkey 命令即可操作。通过分离鉴权内容与执行内容,WowKey 让运维人员专注于决策,摆脱繁琐的交互与执行细节工作,大幅提升运维效率与质量。无论是健康检查、数据采集还是配置更新,WowKey 都能助您轻松应对大规模设备运维挑战。立即从官方资源了解更多信息:https://atsight.top/training。
|
数据采集 运维 安全
Linux设备命令行运维工具WowKey问答
WowKey 是一款用于 Linux 设备运维的工具,可通过命令行手动或自动执行指令剧本,实现批量、标准化操作,如健康检查、数据采集、配置更新等。它简单易用,只需编写 WIS 指令剧本和 APT 帐号密码表文件,学习成本极低。支持不同流派的 Linux 系统,如 RHEL、Debian、SUSE 等,只要使用通用 Shell 命令即可通吃Linux设备。
|
安全 Linux
毕业设计:linux入侵检测安全增强实现
http://blog.csdn.net/hongmy525/archive/2007/08/09/1733108.
847 0
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
1138 1
二、Linux文本处理与文件操作核心命令
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
857 137
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
1826 58

热门文章

最新文章