討論兩個容易被忽視的linux安全權限配置問題

咱們都知道linux是一個多任務多用戶的操做系統,linux對各類權限有着很細緻的管理。若是對linux權限管理不瞭解,建議移步《鳥哥的linux私房菜》 瞭解。html

本文談兩個很容易被忽視,又偶爾會忽然蹦出來,給咱們配置服務器形成困擾的權限管理問題。linux

一、太寬的權限
有些服務對權限的要求會是一個區間,小了不行,大了也不行。若是這個文件被賦予的權限不夠,那麼確定不能使用;可是,若是這個文件被賦予的權限太多了,一樣不能正常使用。
舉例:
問題現象: test賬號使用key沒法登陸某ssh服務器, 而同機器下的test2賬號卻能夠登陸。
查看文件權限:


test@client:~$ls-l ~/.ssh/-rw-------1testtest16752010-03-2515:15 id_rsa


查看了客戶端及服務器端的.ssh目錄下的公鑰與私鑰權限, 能夠看出, 並無問題。
私鑰必須是600權限, 而公鑰至少是644或者更嚴格的權限, 這都符合, 但依然沒法登陸。web

test@server:~$ls-la ~|grep-w .sshdrwxr-xr-x 2test test 4.0K12-2316:59.ssh


查看了服務器端的.ssh目錄權限, 是755, 也是沒問題的, ssh服務器要求在使用key登陸時.ssh目錄的權限必須是其餘用戶不可寫。
一開始實在想不明爲啥test2賬號使用key能夠登陸,test賬號使用key沒法登陸, ssh_config和sshd_config。apache

在檢查了多遍後確實沒有問題, 最後在服務器端對比兩個賬號的不一樣時, 發現了可疑的地方。服務器

$ls-l/home/drwxrwxrwx  3testtest40962009-12-3117:31testdrwxr-xr-x  6 test2 test2 40962010-03-2315:59 test2


兩個賬號的home目錄權限不一樣, test賬號是777, test2賬號是755, 會不會是這裏不一樣致使的? 在服務器端把test目錄修改爲755後, 解決問題。


緣由解釋:


ssh服務器的key方式登陸對權限要求嚴格。對於客戶端: 私鑰必須爲600權限或者更嚴格權限(400), 一旦其餘用戶可讀, 私鑰就不起做用(如640), 表現爲系統認爲不存在私鑰。ssh

對於服務器端: 要求必須公鑰其餘用戶不可寫, 一旦其餘用戶可寫(如660), 就沒法用key登陸, 表現爲:Permission denied (publickey)。
同時要求.ssh目錄其餘用戶不可寫,一旦其餘用戶可寫(如770), 就沒法使用key登陸, 表現爲:Permission denied (publickey)。ide


不只.ssh目錄,更上層的目錄的權限一樣會有影響。

home中用戶目錄的可寫,表示其餘用戶對.ssh子目錄也有改寫的權限(刪除或重命令),也就致使ssh判斷.ssh爲其餘用戶可寫, 拒絕使用key登陸。spa


二、悄悄啓動的selinux。
若是你配置某項服務,可是不論怎麼定義配置文件,有些端口始終不能打開,或者文件沒法訪問到,那麼這時你要當心是selinux在搗鬼。
舉例:
問題現象: 配置apache上的目錄能夠訪問,卻始終提示你沒有權限。

apache上的配置:操作系統


Alias/hello.html  /web/hello.html<Directory/web>Order deny,allowAllow from all</Directory>


怎麼查都沒有問題,文件權限也對,這時能夠考慮查一下selinux的權限。server


# ls -Z /web/-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 hello.html


原來/web目錄不能被apache內建的用戶訪問。


緣由解釋:

默認狀況下,selinux限制了apache能夠訪問的目錄,默認僅能在/var/www/下面讀寫文件。這也難怪,咱們只配置apache和文件權限沒有任何做用了。
要想實現對/web/目錄下的文件讀取,必須修改selinux的配置。
其實不止是文件權限,包括服務可使用的端口、消息接口等,selinux都有默認限制。若是你配置服務遇到莫名其妙的問題,看一下selinux吧。

如何修改selinux配置也能夠參考《鳥哥的linux私房菜》 ,這裏再也不贅述。

本文轉自:

http://www.freebuf.com/articles/system/13366.html

相關文章
相關標籤/搜索