Linux内核和可加载内核模块(LKM)

版权声明:本文为博主原创文章,转载请注明原创链接! https://blog.csdn.net/qq_39112646/article/details/89357329

一:前言

所有操作系统至少由两个主要组件组成:第一个是内核,位于操作系统的中心,控制着操作系统所做的一切,包括管理内存,控制cpu,甚至是控制用户在屏幕上看到的内容。第二个是用户区域。

内核被设计成一个受保护或特权的区域,只能由root账户或其他特权账户访问,因为对内核的访问几乎可以提供对操作系统的自由访问。如果可以改变目标的内核,就可以控制系统。

Linux是一个单片内核,可以添加内核模块。内核有时需要更新,需要安装新的设备驱动程序(如视频卡,蓝牙设备或USB设备),文件系统驱动程序,甚至系统扩展,必须将这些驱动程序嵌入内核中才能完全正常运行。在某些情况下,要添加驱动程序,必须重建、编辑和重新引导整个内核,但是Linux能够在不经过整个过程的情况下向内核添加一些模块,这些模块称为可加载模块或LKM

二:检查内核版本

1. 使用uname -a

   

操作系统正在运行的发行版是 Linux kali ,
内核版本是4.13.0
具有堆成多处理功能(smp)可以在具有多个核心或处理器的机器上运行  
于2017年11月08日在Debian 4.13.10上构建
构架的建构是x86_64

2. 使用 cat /proc/version

  

三:使用sysctl进程内核优化

使用sysctl优化内核,可以更改内存分配,开启网络功能,加固内核抵御攻击

使用sysctl所做的更在重启之前有效,永久有效需修改 /etc/sysct.conf文件

启用数据包转发功能

在中间人攻击(MITM)中,攻击者把自己置于通信主机之间,以截获信息,流量会经过攻击者系统,攻击者可以查看并可能更改通信,实现这种路由的一种方法是启用包转发。

1.暂时更改使用命令 sysctl -w net.ipv4.ip_forward=1

2.永久更改在/etc/sysct.conf 取消对IP转发行的注释

禁用icmp echo请求   net.ipv4.icmp_echo_ignore_all=1

四:管理内核模块

两种方法,一种是insmod套件  第二种方法是modprobe命令

1.insmod套件

使用lsmod 列出所有内核模块

使用insmod 加载或插入模块

使用rmmod 删除模块 

上面的命令不完美,会使内核不稳定或无法使用,没有考虑到模块的依赖性

2. modprobe

modinfo 模块名  获取更多模块的信息 eg modinfo bluetooth

添加模块   modprobe -a  module_name

删除模块   modporbe -r   module_name

插入模块  modprobe -a   module_name

测试新模块是否正确加载 dmesg  加上正则过滤  eg:dmesg|grep video

五:总结

内核是一个受保护区域,任何无意中添加到内核中的东西都可能破坏操作系统甚至控制内核

LKM使系统管理员能够将模块添加到内核中,不必每次添加都重构整个内核

攻击主服务器可以诱使系统管理员添加恶意的LKM,从而控制整个系统

猜你喜欢

转载自blog.csdn.net/qq_39112646/article/details/89357329