• 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结尾的文件

  • 相关阅读:
    [LeetCode 1029] Two City Scheduling
    POJ 2342 Anniversary party (树形DP入门)
    Nowcoder 106 C.Professional Manager(统计并查集的个数)
    2018 GDCPC 省赛总结
    CF 977 F. Consecutive Subsequence
    Uva 12325 Zombie's Treasure Chest (贪心,分类讨论)
    Poj 2337 Catenyms(有向图DFS求欧拉通路)
    POJ 1236 Network of Schools (强连通分量缩点求度数)
    POJ 1144 Network (求割点)
    POJ 3310 Caterpillar(图的度的判定)
  • 原文地址:https://www.cnblogs.com/Kevin-1967/p/7235613.html
Copyright © 2020-2023  润新知