歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

Linux系統上對其他用戶隱藏進程的簡單方法

我使用的是多用戶系統,大部分的用戶通過ssh客戶端訪問他們的資源。我如何(怎麼樣)避免洩露進程信息給他們?如何(怎麼樣)在Debian/Ubuntu/RHEL/CentOS linux服務器器上阻止/避免他們看到不屬於他們的進程?對linux上的其他用戶隱藏進程的方法

解決方法/方案:
如果你使用的linux kernel(內核)是3.2以上的版本(或者使用的RHEL/CentOS是6.5以上的版本),你就可以對其他用戶隱藏進程。只有root用戶可以看到所有的進程,而非root用戶,只能看到屬於自己的進程信息。你所需要做的僅僅是開啟linux kernel加固選項 "hidepid "來重新掛載 /proc文件系統。

認識 hidepid 選項
這個選項定義了我們想讓非進程的所有者能看到多少這些進程信息。
hidepid的值代表的意義如下:

    1. hidepid=0   ———默認的模式(經典模式),任何人都可以查看 /proc/PID/* 中的world-readable文件
    解釋:world-readable files:指linux中的我們把文件權限分成user,group和other三組,other又被叫做world。所以world-readables表示other這組有-r權限。

    2. hidepid=1   ———表示用戶不能進入/proc/下的,而只能進入屬於自己的目錄。所以一些敏感文件,如cmdline,sched*,status被保護起來了。當用戶輸入ps,top等命令,用戶是看不到那些不屬於自己的進程的!!不過還是能夠看到/proc下的process IDs

    3. hidepid=2  ———表示對hidepid=1的文件訪問權限加強限制,這種設定下,/proc/PID/ 對於任何用戶都是不可見的——哪怕是入侵到/proc 目錄下,也看不到process IDs。無論是否有部分守護進程是以提升的權限運行,是否有其他用戶運行一些敏感程序,是否有其他用戶運行任何程序等,這個參數的設定都使得入侵者收集系統運行進程信息變得更復雜,難度加大。

Linux kernel protection(linux內核保護):對linux上的其他用戶隱藏進程的方法
輸入下面的命令來設置hidepid選項的值,以重新掛在/proc

復制代碼代碼如下:# mount -o remount,rw,hidepid=2 /proc

編輯 /etc/fstab 文件,在系統重啟後依然按上面那樣來掛在/proc:

復制代碼代碼如下:# vi /etc/fstab

將 proc掛載的那一行改成下面的樣子:

復制代碼代碼如下:proc /proc proc defaults,hidepid=2 0 0

然後保存關閉文件。

接下來是演示“對linux上的其他用戶隱藏進程的方法”是否有效
在這個例子中,我分別以dabu和root同時登陸vps,只需在xshell開連個窗口或者是直接在命令行下ssh命令登陸。這裡假設我dabu和root已經同時登陸了,那麼,此時hidepid=0是默認的。
先在root中打開一個a.txt文件

復制代碼代碼如下:#vi a.txt
不關閉文件,然後去dabu那進行操作,執行

復制代碼代碼如下:$ ps -ef
得到的結果又一條,如下:

復制代碼代碼如下:root 16601 12120 0 16:19 pts/1 00:00:00 vi a.txt

同樣,執行:

復制代碼代碼如下:$top -bn1
也可以看到有一條root使用vi的進程:

復制代碼代碼如下:17512 root 20 0 3488 1420 1192 S 0.0 0.5 0:00.00 vi
上面兩個結果都證明在hidepid=0(默認值)時,這個屬於root用的進程可以被dabu看到。

接著,繼續用root執行下面的命令:

復制代碼代碼如下:# mount -o remount,rw,hidepid=2 /proc
再次用dabu執行下面的命令查看進程;

復制代碼代碼如下:$ ps -ef
返回結果中看不到剛才那條進程了,所有非dabu用戶的都看不到了
至於top,htop之類的,更是看不到了

還有,如果你想ls /proc ,會提示你不能進入。

gid=xxx的配合hidepid使用:
如果我們設置了hidepid=2,就使得只能root看到所有的進程信息,有的情況下,我們還希望某個管理組也可以看到所有進程信息。
假設我們這裡這個組是admin組,它的gid是1001  :我們可以講/etc/fstab文件中的proc那行改成;


復制代碼代碼如下:proc /proc proc defaults,hidepid=2,gid=1001 0 0
或者是

復制代碼代碼如下:proc /proc proc defaults,hidepid=2,gid=admin 0 0

查看某個組的id,執行命令:

復制代碼代碼如下:#id 組名
查看某個用戶的id,執行命令:

復制代碼代碼如下:#id 用戶名
id命令的用法,自行help

Copyright © Linux教程網 All Rights Reserved