Linux开机启动项总结

在应急响应时有时会遇到系统被植入后门,添加启动项等操作,如果不清楚启动项的话,可能会被黑客植入一些开机启动项,无法彻底清除后门程序,所以在这梳理下启动项的东西

1.操作系统接管硬件以后,首先读入 /boot 目录下的内核文件
2.内核文件加载以后,就开始运行第一个程序 /sbin/init,它的作用是初始化系统环境。由于init是第一个运行的程序,它的进程编号(pid)就是1。其他所有进程都从它衍生,都是它的子进程。
3.许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。
init进程的一大任务,就是去运行这些开机启动的程序。但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。

Linux预置七种运行级别(0-6)。一般来说,0是关机,1是单用户模式(也就是维护模式),6是重启
init进程首先读取文件 /etc/inittab,它是运行级别的设置文件。如果你打开它,可以看到第一行是这样的:

inittab文件中的值都是如下格式:
id:runlevel:action:process

id:
id是指入口标识符,他是个字符串,对于getty、mingetty等,需求id和tty的编号相同,否则getty将不能正常工作。

runlevel:
指定runlevel的级别。能指定多个runlevel级别,也能不为runlevel字段指定特定的值。
运行级别决定了系统启动的绝大部分行为和目的。这个级别从0到6,具有不同的功能。不同的运行级定义如下:

# 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)
# 1 - 单用户模式
# 2 - 多用户,没有 NFS
# 3 - 完全多用户模式(标准的运行级)
# 4 - 系统保留的
# 5 - X11 (x window)
# 6 - 重新启动

action:

定义了该进程应该运行在何种状态下,其中action常用的种类有:


wait:切换至某级别运行一次process

respawn:此process终止的话,就重新启动之 initdefault:设置默认运行级别的,process省略

sysinit:设定系统初始化方式,此处一般指定为:/etc/rc.d/rc.sysinit

process:包含init执行的进程

那么,看inittab的配置,系统运行级别为3,运行级别3有些什么程序呢,系统怎么知道每个级别应该加载哪些程序呢?......回答是每个运行级别在/etc目录下面,都有一个对应的子目录,指定要加载的程序。

每个级别都会在在对应的目录下有对应的启动文件

上述文件名都是"字母S+两位数字+程序名"的形式。字母S表示Start,也就是启动的意思(启动脚本的运行参数为start),如果这个位置是字母K,就代表Kill(关闭) 后面的两位数字表示处理顺序,数字越小越早处理。

而且我们注意到,上述的文件都是软链文件,真实文件都存放在 /etc/int.d/目录下面,系统启动的时候都会加载该目录下的文件
我们以iptables举例,对应的软链文件为S08iptables,现在我们用chkconfig改变下启动状态

当我们执行 chkconfig --level 3 iptables off 后,iptables状态变为以K打头的文件,也就是系统启动后是要关闭的(在level3运行级别下)

上述说明针对的都是Centos5及以前的版本,在Centos6下不太一样,在上图1中,我们看到系统给出的说明中,系统在/etc/inittab中定义完运行级别后,其他的都不生效,而系统的初始化操作都在 /etc/init/*.conf文件中完成,例如系统初始化,是在/etc/init/rc.conf完成,我们查看下该文件

该文件执行了 exec /etc/rc.d/rc $RUNLEVEL命令,我们来看一下/etc/rc.d/rc这个脚本做了什么,脚本较长,简单理解就是

遍历 /etc/rc$RUNLEVEL.d/目录下的脚本文件,以K开头的就关闭,以S开头的就启动,和上面所说的过程是一样的

综上,我们在应急的时候需要排查的启动项有:

/etc/rc.d/rc

/etc/rc

/etc/rc.local

/etc/rc.d/rc.local

/etc/rc.d/rc

/etc/init/*.conf

/etc/rc$runlevel.d/ 该目录下都是链接的可执行文件,也可以自己添加可执行程序

以上目录都是重点排查的启动项目

另外一个添加启动项的地方在  /etc/profile里面,还有  /etc/profile.d/目录下以sh结尾的文件

 

posted @ 2017-07-25 18:38  TomasWangkai  阅读(10674)  评论(0编辑  收藏  举报