Linux安全系列之启动篇
init第一个被执行的脚本为/etc/rc.d/rc.sysinit,这个是真正的OS初始化脚本,这个脚本大概的作用是如激活udev和selinux,装载硬盘映射,挂载其他文件系统等。修改它当然可以实现自启动,另外它还提供了两个模块加载的地方,实现模块自启动,如下图: 四.服务 init会根据定义的启动级别去执行相应目录下的脚本,在不同的运行级别下,/etc/rc.d/rc这个脚本会分别执行不同目录下的脚本. 如:Run level 0– /etc/rc.d/rc0.d/ 这些目录下的脚本只有K*和S*开头的文件,K开头的文件为开机需要执行关闭的服务,S开头的文件为开机需要执行开启的服务。 于是这些脚本成了高危项,尤其是S开头的脚本。哪些服务是否开启关闭可以用chkconfig –list查看,但我们最怕的还是这些脚本被篡改了。 我们怎么检查服务是否被篡改了呢? 可以用ctime及其家族成员newerct来检查,ctime是一个非常重要的参数,它代表了变更时间,一切变更,包括状态属性权限等,它是最可靠的检查方式,跟ctime异曲同工的还有newerct,当然stat命令也可看一切,只是只能查看单一文件。 当然执行stat find等命令时最好先用rpm –Vf看一下,或者用自己的命令工具包。 如下图: 我们执行ls –larth 显示最后一个改动的服务是mysqld 但是我们执行命令find . –ctime-100显示最后一个被更改的服务不是mysqld 如上图:functions服务在100天内被篡改了,我们继续cat看看里面是什么内容 ![]() 可以看到在第二行的两个注释中间被人加了这么一行代码,就是服务启动的时候执行/var/tmp/rootkit并且不输出标准输出和错误输出。 正常情况下,都是放在最前面的那些注释行里(尤其是自动的病毒),也有放最后的,这个可不一定,特征基本都是xxx >/dev/null,这样的形式,为了不显示启动输出。 注意,这里要先cd /etc/init.d,因为它都是软链接,所以一定要先进入这个目录,而不能直接使用find /etc/init.d -ctime 90%的linux后门是通过这种方式启动的,如果学会此招,可发现90%的后门。 五.rc.loacl init根据配置的启动级别,执行对应目录底下的脚本,最后执行/etc/rc.d/rc.local这个脚本,至此,系统启动完成。 这个/etc/rc.local脚本我们很多管理员启动应用服务都喜欢放这里面,不多说。 六.模块 上面介绍sysinit的时候说了,这个脚本提供了两个地方可以自启动模块,分别是
上面这是redhat/centos系列的 Debian/Ubuntu/kali系列的是这个文件 /etc/modules 除此之外,模块的启动大多数情况下,要依赖于服务启动和其他启动脚本,这是不同于windows的,甚至2.6版本模块的启动地位比起2.4也大大下降,大多数情况下模块的地位居然没有服务优先级别高。 当然了,系统关键模块的地位还是高的,所以这些系统关键模块是否被替换,也是一个检查点,依然可用ctime检查。 另外,centos系列下还存在一种在线向initrd内部更新驱动模块的方法,可在/etc/initramfs-tools/modules文件中添加相应模块的模块名及其参数,然后用update-initramfs-u -k命令进行更新。 lsmod显示的是正在运行的模块,modprobe –l显示的是所有可加载的模块(不一定在运行) (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |