Ubuntu 安全检查

Ubuntu 安全检查(后门检测)
3个程序:

chkrootkit	可以扫描rootkits
rkhunter	可以扫描rootkit backdoor sniffer exploit
unhide		可以发现隐藏的进程和端口

1) chkrootkit的使用
chkrootkit是Check Rootkit的简称,可以检测到60多种常见的rootkit、蠕虫和LKM(Linux Kernel Module)等有害程序,列表:http://www.chkrootkit.org。

安装:

1
apt-get install chkrootkit

参数:

-l			显示可用的扫描对象
-d			调试
-q			安静模式
-x			专家模式
-r dir			将dir所指定的目录作为root目录
-p dir1:dir2:dirN	指定扫描过程中要使用的程序的路径
-n			不扫描挂载的NFS分区

用法:

1
2
3
4
5
6
7
8
9
10
11
#检查ps ls 和cron命令是否被感染
sudo chkrootkit ps ls cron
 
#如果不指定扫描对象,就会扫描所有对象
sudo chkrootkit
 
#加上-q选项后就进入安静模式,只有被感染的才显示
sudo chkrootkit –q
 
#如果使用-x选项,程序会调用/usr/bin/strings将扫描对象中所有可疑字符串打印处理
sudo chkrootkit –x su | less

chkrootkit在运行过程中,会调用系统中的awk cut egrep find head id ls netstat ps strings sed uname等命令。如果担心这些命令已经被感染,那么可以使用-p选项指定这些程序的路径。可以把这些/bin /sbin /usr/bin等目录放到一个ISO文件中(只读),然后mount这个iso文件。
然后:

1
sudo chkrootkit –p /cdrom/bin : /cdroom/sbin : /cdrom/usr/bin

最好的检查方法,则是从一台确认安全的机器上,将被入侵的机器的文件系统挂载过来,使用-r选项指定root目录:

1
sudo chkrotkit –r /mnt/hdisk

2) rkhunter的使用
rkhunter是Rootkit Hunter的简称,可以检查几十种rootkits、backdoors、LKMs、worms,使用rkhunter的—list子命令可以显示。

安装
rkhunter依赖MTA(邮件传输代理)服务器,选择postfix(看起来,如果不需要发送邮件,应该不需要安装):

1
apt-get install rkhunter postfix mailutils

安装完成后,先对其数据进行更新,相当是获取最新病毒库:

1
sudo rkhunter --update

配置
rkhunter的配置文件位于/etc/rkhunter.conf,和chkrootkit相同,rkhunter也可以指定外部命令的路径。可以通过修改配置文件来指定。配置文件有一项BINDIR,可以将该项修改为挂载在iso上的路径:

1
BINDIR=” /cdrom/bin /cdrom/usr/bin /cderom/sbin /cdrom/usr/sbin

如果要查看rkhunter都支持哪些扫描项目:

1
sudo rkhunter --list

要用rkhunter进行检查,使用-c或者—check即可

1
2
3
4
5
6
7
8
9
sudo rkhunter –c
 
##检查完毕后提示
The system checks took: 1 minute and 18 seconds
 
All results have been written to the log file ( /var/log/rkhunter .log)
 
One or more warnings have been found while checking the system.
Please check the log file ( /var/log/rkhunter .log)

可以通过/var/log/rkhunter.log查看扫描结果。

rkhunter在安装时创建了一个cron任务/etc/cron.daily/rkhunter,每天执行一次。

1
2
3
4
5
6
7
8
9
10
11
12
13
cat /etc/cron .daily /rkhunter
#!/bin/sh
 
RKHUNTER= /usr/bin/rkhunter
 
test -x $RKHUNTER || exit 0
 
# source our config
. /etc/default/rkhunter
#####省略
#nice调整进程调度优先级, 然后就运行/usr/bin/rkhunter,我们可以提取这行命令出来手动运行(/usr/bin/rkhunter  --cronjob --report-warnings-only –appendlog > rk.log )
/usr/bin/nice -n $NICE $RKHUNTER --cronjob --report-warnings-only --appendlog > $OUTFILE
#####省略

可以看到,该任务会调用rkhunter的另外一个配置文件/etc/default/rkhunter(. /etc/default/rkhunter),查看该配置文件(这个配置文件只是跟定制是否发送邮件,是否更新病毒库有关,跟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
cat /etc/default/rkhunter
# Defaults for rkhunter automatic tasks
# sourced by /etc/cron.*/rkhunter and /etc/apt/apt.conf.d/90rkhunter
#
# This is a POSIX shell fragment
#
 
# Set this to yes to enable rkhunter daily runs 是否每天运行一次,默认为true
# (default: true)
CRON_DAILY_RUN= ""
 
# Set this to yes to enable rkhunter weekly database updates 每周更新数据库(病毒库),默认为true
# (default: true)
CRON_DB_UPDATE= ""
 
# Set this to yes to enable reports of weekly database updates 每周更新病毒库后发送报告(默认不发送)
# (default: false)
DB_UPDATE_EMAIL= "false"
 
# Set this to the email address where reports and run output should be sent(发送给那个地址,写上email地址)
# (default: root)
REPORT_EMAIL= "[email protected]"
 
# Set this to yes to enable automatic database updates 开启自动更新,默认为false
# (default: false)
APT_AUTOGEN= "false"
 
# Nicenesses range from -20 (most favorable scheduling) to 19 (least favorable)
# (default: 0)
NICE= "0"
 
# Should daily check be run when running on battery
# powermgmt-base is required to detect if running on battery or on AC power
# (default: false)
RUN_CHECK_ON_BATTERY= "false"

3) unhide的使用
unhide也是一个Rootkit诊断工具,它的功能侧重于检测隐藏的进程和TCP/UDP端口。

1
2
3
4
5
6
7
8
sudo apt-get install unhide
 
##查看安装文件
dpkg -L unhide
 
/usr/sbin/unhide
/usr/sbin/unhide-tcp
/usr/share/ *

安装完成后有两个工具,unhide 和 unhide-tcp。

检测原理
unhide使用3种方法进行检查(检查进程),分别是:

>proc		将/proc中的进程和/bin/ps的结果相对比
>sys		将系统调用和/bin/ps的结果相对比
>brute		整个PIDs空间(遍历,逐个尝试)

unhide-tcp使用遍历的方法,扫描所有有效端口,找出那些正在监听的、在/bin/netstat命令中看不到的隐藏端口。

检查隐藏进程:

1
2
3
4
5
6
7
8
sudo unhide proc
 
#也可以使用sys方法来进行检测
sudo unhide sys
显示有隐藏进程,不过代表已经被入侵了。
 
#也可以使用brute方法进行监测
sudo unhide brute

监测隐藏的网络端口

1
unhide-tcp

你可能感兴趣的:(Ubuntu 安全检查)