歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

UNIX系統下的用戶限制


摘要
  本文將討論在Linux系統中,系統管理員如何對遠程用戶和本地用戶進行限制。限制用戶能夠進行的操作,能夠降低系統遭受內部攻擊的的風險。
  在傳統的UNIX系統中,用戶的限制是由文件的權限、密碼和其它標准的UNIX訪問控制完成的。燃而,除此之外還需要更為嚴格的用戶限制,以便能夠對用戶進行保護以及保護系統不受淘氣用戶的破壞。本文將討論在Linux系統中,系統管理員如何對遠程用戶和本地用戶進行限制。限制用戶能夠進行的操作,能夠降低系統遭受內部攻擊的的風險。但是,對root用戶的權限限制不在本文的討論范圍之內,感興趣的人可以參考利用capability特征保護系統的安全。
1.用戶限制的目標
  對於用戶限制,不同的環境有不同的目標,需要不同的工具實現。例如,限制不經意的用戶使用UNIX shell和防止熟練攻擊者利用SUID程序進行攻擊是不同的。而且,不同程度的限制可能需要不同的環境,例如只允許使用某些用戶或者只拒絕使用某些程序。
2.文件的權限
  我們首先從最弱的限制--UNIX權限開始。在大多數情況下,這已經足夠。通過設置權限,我們可以控制哪些可執行文件可以讓用戶使用。除了那些允許非信任用戶執行的程序,其它的程序都不應該是隨便哪個用戶都可以執行的;所有用戶可寫的分區,例如:/tmp和/home,都應該使用noexec參數加載(man mount)。做到這些,基本可以保證系統的安全。noexec參數能夠阻止用戶下載或者建立自己的可執行程序。如果一部分用戶需要比較高的權限,我們可以把這些用戶集中到一個特殊的用戶組,把程序設置為允許這個組執行。通過Linux文件系統的屬性(attribute),例如:immutable、append-only等,還可以對root權限進行控制,詳細請參考文件系統安全-EXT2文件系統的屬性
3.使用PAM進行權限限制
  另外一種簡單(比較脆弱)的限制可以通過Linux系統資源限制實現。限制用戶能夠使用的系統資源,可以阻止惡意用戶通過一些卑劣的手段,例如:fork大量的進程、填充垃圾文件,實現消耗系統的資源(磁盤空間、內存以及CPU時間等)的目的。Linux的插入式認證模塊(Pluggable Authentication Module))能夠用來進行系統資源限制。本文我們將只是進行一般性的討論,詳情請參考Securing and Optimizing Linux: RedHat Edition - A Hands-on Guide、 Using Pam。
  domain type item value
  每個域的意義如下表:
domain
可以是:
· 一個用戶名;
· 一個用戶組名,語法為@group,例如:@nixe0n;
· 還可以是統配符*,表示所有的用戶

type
有兩種類型:
· hard:由超級用戶和系統內核所做的硬性限制,普通用戶無權修改;
· soft:用戶可以根據需要,在hard的限制范圍內修改被限制的資源,可以看作是默認設置;

item
被限制的項目包括:
· core:限制core文件的大小(以KB為單位);
· data:進程數據段的最大值(以KB為單位);
· fsize:文件的最大值(以KB為單位);
· memlock:最大的加鎖內存空間(單位KB);
· nofile:打開文件的最大數量;
· rss:RSS(Resident Set Size)的最大值(單位KB);
· 最大的棧值(以KB為單位);
· cpu:最大的CPU時間;
· nproc:用戶的最大進程數量;
· as:地址空間限制;
· maxlogs:這個用戶最大的登錄數;
· priority:用戶進程的優先級;

  例如:
# =======================================
#
* soft core 0
* hard rss 10000
* hard nproc 20
  這個配置文件設置用戶core文件的大小是0,用戶可以根據需要修改;每個進程RSS最大是10000KB;最多可以運行20個進程。
  下面這個文件是針對特殊用戶組foo所做的一些限制:
@foo hard core 0
@foo hard rss 2000
@foo hard nproc 200
@foo hard fsize 100000
@foo hard nofile 100
@foo hard cpu 10
@foo hard priority 5
  然後,需要在/etc/pam.d/login文件中加入以下條目,才能是限制生效:
  實際上,PAM可以實現更細粒度的顯示,詳情請參考RedHat技術白皮書:Enhanced Console Access。
4.受限shell
  bash本身也有一定的限制功能,就是通過其(受限shell)restricted shell功能,所做的限制包括:阻止用戶改變目錄和環境變量;重定向輸出;使用絕對路徑運行命令;使用exec命令和其它一些操作。如果bash是以rbash為名啟動,或者使用-r選項運行,它就稱為受限shell。受限shell能夠使系統環境更好控制。如果啟動受限shell,以下操作將被禁止:
使用cd命令切換目錄;
設置或者取消SHELL、PATH、ENV或者BASH_ENV環境變量;
以絕對路徑運行命令;
使用絕對路徑指定的文件名作為內置命令.的參數;
使用絕對路徑指定的文件名作為內置命令hash的參數;
在啟動時,從shell環境導入函數的定義;
在啟動時,解析SHELLOPTS的值;
使用
>、>|、<>、>&、&>和>>
等重定向操作重定向輸出;
使用exec命令使其它的命令代替當前shell;
使用-f和-d選項打開/關閉內置命令;
對內置命令使用-p選項;
關閉受限模式。
  下面我們實際試驗一下:
#adduser nixe0n
#passwd nixe0n
#ln -s /bin/bash /bin/rbash
#echo "/bin/rbash">>/etc/shells
#chsh -s /bin/rbash nixe0n
#cd ~nixe0n
#su nixe0n
$
  然後,執行:
  $cd /
  就會出現以下錯誤:
  rbash: cd: restricted
5.chroot
  另外一種限制方式是通過chroot,把用戶限制在一個指定的目錄。這種方式確實能夠提供一定程度的安全性,如果不能獲得root權限,用戶將無法脫離監獄環境。因此,為了阻止用戶獲得chrooted目錄之外目錄的訪問權,應該慎重選擇監獄環境內的應用程序。
6.結論
  本文我們討論了Linux系統對用戶的幾種限制方式,除了以上這些方式,還可以使用Linux內核的capability特性,詳情請參考利用capability特性加強Linux系統的安全性。具體的使用要根據實際情況的需要,既要考慮系統的安全性,又要顧及到是否給用戶造成不便。
Copyright © Linux教程網 All Rights Reserved