首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

内核防篡改

防篡改支持将Linux服务器进程加入白名单,可实现进程、目录、文件类型的系统防护。...防篡改技术基于Linux Kernel技术进行的模块开发,相比fanotify、audit、云防护,性能损耗极低(毫秒),效果最优。.../"这种形式绕过 经过测试,市面上如宝塔的内核防篡改有存在php调用unlink("../../../")绕出网站目录的情况, 经过对unlinkat、openat等函数的参数进行测试, 在系统底层会有一个.../dycom/index.html",假如此时FD为-100,说明为当前目录,那么也可以直接通过pathname解析出来绝对路径了(使用...../回退法) 最开始是使用strcmp比较开头的,但是存在有时候规则目录后面有"/",但是匹配删除的时候,整个目录是不会有"/"的。

1.8K20

告别 Sidecar—— 使用 EBPF 解锁内核服务网格

eBPF per-node Proxy eBPF 不依赖网络的重定向,而是直接在套接字级别注入代理,保持路径短。...在 Cilium 的案例中,正在使用 Envoy 代理,尽管架构的角度来看,任何代理都可以被整合到这个模型。...概念上讲,这允许将 Linux 内核网络命名空间的概念直接扩展到 Envoy 监听器配置的概念,并将 Envoy 变成一个多用户代理。...多租户 当我们 sidecar 模型转向 per-node 模型时,代理将为多个应用程序提供连接。代理必须具有多租户感知。这与我们使用单个虚拟机转向使用容器时发生的过渡完全相同。...它将把我们 sidecar 模型中解放出来,并允许将现有的代理技术整合到现有的内核命名概念中,使它们成为我们每天都在使用的容器抽象的一部分。

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

内核虚拟化技术

虚拟机技术也是多种多样,而可以虚拟的层次或者可虚拟的方面也是遍布硬件到应用层整个计算机系统。 ?   ...软件虚拟化也可以理解成进程虚拟机,其他虚拟化成为系统虚拟机。...在进程虚拟机中负责虚拟化的软件成为运行时软件,而系统虚拟机中负责虚拟化的软件成为VMM(Virtual Machine Monitor)   硬件虚拟化:硬件虚拟化基本上就是在一台宿主机上虚拟了整个系统...相同的是,GuestOS只能够在User Mode下执行I/O操作,而且这是单独使用QEMU-KVM进行管理的。   ...五、内核虚拟化技术   内核虚拟化技术:Kernel-based Virtual Machine,简称KVM   5.1、KVM优势   1)KVM Memory Page Sharing ?

1.9K50

Linux系统调用原理

因为 用户态 和 内核使用的栈不同,而调用 系统调用 是在用户态调用的,而进入 系统调用 后会变成内核态,所以参数就不能通过栈来传递。..., int flags, int mode) { ... } 一般 系统调用 都需要使用 asmlinkage 编译选项,asmlinkage 编译选项是告诉编译器栈中读取参数,其实际是封装了...,那么 系统调用 就可以内核栈获取到参数的值。...但由于寄存器只能传递 32 位的整型值(x86 CPU),所以参数一般只能传递指针或者整型的数值,如果要获取指针对应结构的数据,就必须通过从用户空间复制到内核空间,如 sys_open() 系统调用获取要打开的文件路径...tmp = getname(filename); ... } getname() 函数就是用于用户空间复制数据到内核空间。

4.1K30

linux内核同步机制--futex

理想的同步机制应该是没有锁冲突时在用户态利用原子指令就解决问题,而需要挂起等待时再使用内核提供的系统调用进行睡眠与唤醒。...如果你没有较深入地考虑过这个问题,很可能想当然的认为类似于这样就行了(伪代码): void lock(int lockval) { //trylock是用户的自旋锁 while(!...为了解决上述问题,linux内核引入了futex机制,futex主要包括等待和唤醒两个方法:futex_wait和futex_wake,其定义如下 //uaddr指向一个地址,val代表这个地址期待的值...加自旋锁 遍历fb的链表,找到uaddr对应的节点 调用wake_futex唤起等待的进程 释放自旋锁 wake_futex中将制定进程状态设置为TASK_RUNNING并加入到系统调度列表中,同时将进程futex...End Java中的ReentrantLock,Object.wait和Thread.sleep等等底层都是用futex进行线程同步,理解futex的实现能帮助你更好的理解与使用这些上层的同步机制。

2.9K40

Centos7升内核

更新前,检查当前Centos系统内核版本: # uname -r 3.10.0-327.10.1.el7.x86_64 1.首先去清华的TUNA或者中科大的USTC的elrepo下载适合自己的内核rpm...,当前为4.4.78 kernel-ml : Linux MainLine主线版本内核,通常为最新内核,当前版本为4.12.3 2.使用wget下载所需要的rpm包,然后用rpm -ivh xxxx.rpm...327.10.1.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-c52097a1078c403da03b8eddeac5080b) 7 (Core) 默认启动的顺序是0...开始,新内核是从头插入(目前位置在0,而4.4.4的是在1),所以需要选择0 # grub2-set-default 0 4.然后reboot重启,使用新的内核,下面是重启后使用内核版本: # uname...-r 4.4.4-1.el7.elrepo.x86_64 5.这一步可做可不做,删除旧的内核

2K30

内核地址空间大冒险:系统调用

这里是帝国的内核空间,帝国核心都在这里,你们这些应用程序线程平时是很少这里的,我就是专门在这里接待应用层下来的线程们,为你们指路的”,老头一边说,一遍捋了捋胡须。...我eax寄存器取出之前放置的编号,交给了老头。 “哦,是个2号,是要去sys_open啊”,说完,老头打开了墙上2号格子的抽屉,拿出了一个纸条交给我。...我一看,上面写着: sys_open: 0x7ffe10002030 “老先生,看来你对这里很熟嘛,还没看都知道我是要去sys_open”。...4 线程内核堆栈 按照纸条上面的地址,我来到了sys_open函数的地方,开始执行这里的代码,完成我要办理的事情。...这个呢就是你在内核空间的堆栈啦,专门供你在内核空间来办事的时候使用的,因为用得少,加上内核空间的资源宝贵,所以比你之前那个小了很多”,大叔解答了我的疑惑。 ? “哦,原来如此啊,多谢大叔。

57910

内核地址空间大冒险:系统调用

这里是帝国的内核空间,帝国核心都在这里,你们这些应用程序线程平时是很少这里的,我就是专门在这里接待应用层下来的线程们,为你们指路的”,老头一边说,一遍捋了捋胡须。...我eax寄存器取出之前放置的编号,交给了老头。 “哦,是个2号,是要去sys_open啊”,说完,老头打开了墙上2号格子的抽屉,拿出了一个纸条交给我。...我一看,上面写着: sys_open: 0x7ffe10002030 “老先生,看来你对这里很熟嘛,还没看都知道我是要去sys_open”。...4 线程内核堆栈 按照纸条上面的地址,我来到了sys_open函数的地方,开始执行这里的代码,完成我要办理的事情。...这个呢就是你在内核空间的堆栈啦,专门供你在内核空间来办事的时候使用的,因为用得少,加上内核空间的资源宝贵,所以比你之前那个小了很多”,大叔解答了我的疑惑。 ? “哦,原来如此啊,多谢大叔。

67110

内核必须懂(六): 使用kgdb调试内核

---- 前言 调试内核肯定不是什么轻松的事情, 这里是使用kgdb进行调试, 你理解的没错, 就是kernel版的gdb. ---- 虚拟机串口设置 首先克隆下已经重新编译内核的虚拟机 然后设置两者的串口...更新grub: sudo update-grub nokaslr, 禁止内核地址随机化, 具体内容请自行google: reboot 然后重启的时候, 就能够看到一行关于nokaslr的提示了...之后就和使用gdb无异了: ? ? ---- 调试驱动模块 要调试自己的写的驱动模块, 就有些麻烦了, 首先需要常规的插入模块, 不多说了....目标机切换为root用户, 控制权限交给kgdb, 目标机进入假死状态: echo g > /proc/sysrq-trigger 开发机进入自编译内核目录 gdb ....接下来就和平常使用gdb调试一样了. ---- 最后 如果要写驱动模块, 必须要调试内核, 上述方法并不是唯一方法. 下一篇将会介绍一些更实用的小工具来进行类似的调试.

2.8K20

使用 eBPF 实时持续跟踪进程文件记录

使用 eBPF 实时跟踪文件记录 在真正进入到 eBPF 环节之前,我们需要简单复习一些系统调用的基础知识。 系统调用(syscall) 在 Linux 的系统实现中,分为了用户态和内核态。...用户态的程序用过系统调用来访问操作系统内核态功能,从而用户态转向级别更高的内核态,一般情况下应用程序并不会直接访问系统调用,而是通过 glibc 库提供函数实现的,例如库中的 open 函数对应到系统调用中...sys_open 函数。...函数在内核中的定义原型,其中第一个参数struct pt_regs *ctx 为 BPF 程序需要添加的上下文变量,后续参数参见 `sys_open`[9]。...asmlinkage long sys_open(const char __user *filename, int flags, umode_t mode); b = BPF(text=prog) 使用我们定义的

1.9K30
领券