如何限制Linux内核级别的特权用户访问?

and*_*pei 5 linux security kernel linux-kernel

我在学习Linux内核编程时找到了这个答案,我的问题更具体针对Linux内核的安全功能.我想知道如何限制特权用户或进程对其他进程和文件的访问权限,而不是root的完全访问权限.

直到现在我发现:

  • 自由访问控制(DAC)的用户,区分读取,写入和执行用户,组和其他
  • 用户root用于更高权限的任务
  • setuidsetgid扩展用户的DAC并设置调用进程的组/用户ID,例如ping用root 运行root权限打开Linux套接字
  • 功能细粒度权限,例如,删除的suid位ping,并设置cap_net_raw
  • 控制组(Cgroup)以限制对资源的访问,即cpu,网络,io设备
  • 命名空间,用于分隔IPC,网络,文件系统,pid上的进程视图
  • 安全计算(Seccomp)限制系统调用
  • Linux安全模块(LSM)添加其他安全功能,如强制访问控制,例如带有类型强制执行的SELinux

清单是否完整?在编写问题时,我发现fanotify监视文件系统事件,例如反病毒扫描.可能有更多安全功能可用.

是否有更多Linux安全功能可以从文件或进程内部或外部以可编程方式使用以限制特权访问?也许有一个完整的清单.

小智 2

传统的 UNIX 方法是限制某个进程,该进程需要更多权限,但又要包含它,以便它不能使用超出其需要的权限,即“chroot”它。

chroot 更改进程的表观根。如果做得正确,它只能访问新创建的 chroot 环境(又名 chroot 监狱)内的资源,例如它只能访问这些文件,而且只能访问那些设备等。

创建一个自愿执行此操作的流程相对容易,而且并不罕见。

要创建一个环境,使现有软件(例如网络服务器、邮件服务器等)感觉舒适并仍然正常运行,需要经验。主要的事情是找到所需的最小资源集(共享库、配置文件、设备、依赖服务(例如系统日志),...)。