UNIX系統下的使用者限制(轉)
UNIX系統下的使用者限制(轉)[@more@]摘要
本文將討論在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。
PAM的使用者限制檔案一般是/etc/security/limits.conf,其語法如下所示:
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:使用者程式的優先順序;
例如:
# EXAMPLE /etc/security/limits.conf file:
# =======================================
#
* 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檔案中加入以下條目,才能是限制生效:
session required /lib/security/pam_limits.so
實際上,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系統的安全性。具體的使用要根據實際情況的需要,既要考慮系統的安全性,又要顧及到是否給使用者造成不便。
本文將討論在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。
PAM的使用者限制檔案一般是/etc/security/limits.conf,其語法如下所示:
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:使用者程式的優先順序;
例如:
# EXAMPLE /etc/security/limits.conf file:
# =======================================
#
* 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檔案中加入以下條目,才能是限制生效:
session required /lib/security/pam_limits.so
實際上,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系統的安全性。具體的使用要根據實際情況的需要,既要考慮系統的安全性,又要顧及到是否給使用者造成不便。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-961734/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- syslog--unix like系統常用的log工具
- 本文幫你在 Unix 下玩轉 C 語言
- NetBSD 10.0 - 類 UNIX 作業系統作業系統
- Unix、Windows、Mac OS、Linux系統故事WindowsMacLinux
- HP-UNIX 建立檔案系統
- CSC3150Unix的教學作業系統作業系統
- 作業系統: Unix作業系統演進簡史作業系統
- JDK不同作業系統的FileSystem(unix-like)上篇JDK作業系統
- JDK不同作業系統的FileSystem(unix-like)中篇JDK作業系統
- Unix系統中的dot命令的使用方法詳解
- 如何區分Linux和Unix?作業系統!Linux作業系統
- SerenityOS:類似Unix的圖形化桌面作業系統作業系統
- Unix系統中常用內建工具的命令使用指南
- Linux轉行學習有年齡限制嗎?Linux系統運維學習Linux運維
- 【轉】Ubuntu系統下使用隨身碟的步驟Ubuntu
- 系統強化之控制流限制
- 在kubernetes裡使用seccomp限制容器的系統呼叫
- Unix檔案系統和pwd命令實現詳解
- Windows、Linux、Unix、Mac OS X系統哪個更好用?WindowsLinuxMac
- Unix和Linux作業系統有什麼區別Linux作業系統
- Python_UNIX和Linux系統管理指南(四)—— 網路PythonLinux
- 基於UNIX系統,邏輯故障的資料災難解讀
- win10系統怎麼解除寬頻限制?win10系統自動限制寬頻速度的解決方法Win10
- unix時間轉換為datetimedatetime轉換為unixtime
- windows txt怎麼轉成unix 格式Windows
- 解除Ubuntu系統的root登入圖形介面限制Ubuntu
- win10系統下遠端桌面功能被限制如何使用CredSSP加密OracleWin10加密Oracle
- 深入理解Linux作業系統下的守護程式(轉)Linux作業系統
- 『學了就忘』Linux基礎 — 1、UNIX系統介紹Linux
- Linux系統下建立新使用者並且授權Linux
- win10系統下如何使用命令提示符限制本地網速Win10
- 限制使用者頻繁提交
- Docker系列09—Docker的系統資源限制及驗證Docker
- win10系統限制頻寬的方法【圖文教程】Win10
- hp-unix下的高可用叢集設定
- Mac系統下檔案編碼轉換工具encaMac
- 轉轉支付通道監控系統的搭建
- Unity限制上下旋轉角的問題Unity
- 線上試用 200 多種 Linux 和 Unix 作業系統Linux作業系統