Linux对其他用户隐藏进程和ps命令

时间:2020-01-09 10:41:35  来源:igfitidea点击:

大多数用户使用SSH客户端访问资源。
如何停止将过程信息泄漏给Linux操作系统上的所有用户?
如何防止用户在Debian/Ubuntu/RHEL/CentOS Linux服务器上看到不属于他们的进程?
运行ps命令时,有什么方法可以隐藏其他用户进程?
如果您使用的是Linux内核3.2+版本(或上述RHEL/CentOS v6.5 +),则可以向其他用户隐藏进程。
只有root用户可以看到所有进程,而用户只能看到自己的进程。
您要做的就是使用Linux内核强化的" hidepid"选项重新挂载/proc文件系统。
这对所有其他命令(例如ps,top,htop,pgrep等)隐藏了进程。

Linux使用hidepid选项对其他用户隐藏进程

此选项定义了我们希望非所有者可以使用多少有关流程的信息。
取值如下:

  • " hidepid = 0"是任何人都可以读取所有世界可读的/proc/PID/*文件的默认行为(默认)。
  • " hidepid = 1"表示用户不能访问任何/proc/<pid> /目录,但可以访问它们自己的目录。诸如cmdline,sched ,状态之类的敏感文件现在可以免受其他用户的攻击。
  • "hidepid = 2"这意味着hidepid = 1加上所有/proc/PID /对其他用户是不可见的。它使入侵者的任务变得复杂,这些任务包括有关正在运行的进程,某些守护程序是否以提升的特权运行,其他用户是否运行某些敏感程序,其他用户是否完全运行任何程序等信息。

获取Linux上当前进程的列表

运行:

top
htop
ps aux

Linux内核保护:隐藏其他用户的进程

执行以下安装命令:

# mount -o remount,rw,nosuid,nodev,noexec,relatime,hidepid=2 /proc

使用文本编辑器(例如nano命令/vim命令)编辑/etc/fstab,执行:

# vi /etc/fstab

如下更新/追加/修改proc条目,以便在服务器启动时自动启用保护:

## append the following line ##
proc    /proc    proc    defaults,nosuid,nodev,noexec,relatime,hidepid=2     0     0

保存并关闭文件。
安全性安装选项如下:

  • nosuid:不允许set-user-ID或set-group-ID位生效。
  • nodev:不要解释字符或阻止文件系统上的特殊设备。
  • noexec:不允许直接在已挂载的文件系统上执行任何二进制文件。
  • hidepid:选项定义有关隐藏进程的信息量。

Linux演示:防止用户看到不属于他们的进程

在此示例中,我以Hyman @ cbz-test登录:

$ ssh Hyman@cbz-test
$ ps -ef
$ sudo -s
# mount -o remount,rw,hidepid=2 /proc
$ ps -ef
$ top
$ htop

提示:处理在实施此技术时会中断的应用程序

您需要使用gid = VALUE_HERE选项:

gid = XXX定义了一个能够收集所有进程信息的组(如hidepid = 0模式)。
应该使用该组,而不是将非root用户放入sudoers文件或其他内容。
但是,不应监视整个系统中的任务的不受信任用户(如守护程序等)不应添加到组中。

因此,将名为monapp的用户添加到要查看进程信息的组(例如admin),并按以下步骤在/etc/fstab中挂载/proc:

proc /proc proc defaults,hidepid=2,gid=admin 0 0