常州网管员

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1301|回复: 0

Linux开机启动项总结

[复制链接]
发表于 2017-12-14 09:43:42 | 显示全部楼层 |阅读模式
在应急响应时有时会遇到系统被植入后门,添加启动项等操作,如果不清楚启动项的话,可能会被黑客植入一些开机启动项,无法彻底清除后门程序,所以在这梳理下启动项的东西
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,它是运行级别的设置文件。如果你打开它,可以看到第一行是这样的:
1204472-20170725170449091-1055674549.png
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目录下面,都有一个对应的子目录,指定要加载的程序。
1204472-20170725175102013-415943725.png
每个级别都会在在对应的目录下有对应的启动文件
1204472-20170725175413263-833325950.png
上述文件名都是"字母S+两位数字+程序名"的形式。字母S表示Start,也就是启动的意思(启动脚本的运行参数为start),如果这个位置是字母K,就代表Kill(关闭) 后面的两位数字表示处理顺序,数字越小越早处理。
而且我们注意到,上述的文件都是软链文件,真实文件都存放在 /etc/int.d/目录下面,系统启动的时候都会加载该目录下的文件
我们以iptables举例,对应的软链文件为S08iptables,现在我们用chkconfig改变下启动状态
1204472-20170725175835294-1978078658.png
当我们执行 chkconfig --level 3 iptables off 后,iptables状态变为以K打头的文件,也就是系统启动后是要关闭的(在level3运行级别下)
上述说明针对的都是Centos5及以前的版本,在Centos6下不太一样,在上图1中,我们看到系统给出的说明中,系统在/etc/inittab中定义完运行级别后,其他的都不生效,而系统的初始化操作都在 /etc/init/*.conf文件中完成,例如系统初始化,是在/etc/init/rc.conf完成,我们查看下该文件
1204472-20170725182802638-876299253.png
该文件执行了 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结尾的文件
真心的发现WIN8很不好用,到不是说没有开始菜单就不习惯了,关键是很多专业软件都不能再它上面运行,而且自带IE10,基本没几个网站兼容。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|常州网管员 ( 苏ICP备09009643号 )

GMT+8, 2019-11-23 01:35 , Processed in 0.016833 second(s), 9 queries , MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表