兩個(gè)易被忽視的linux安全權(quán)限配置問(wèn)題
本文談兩個(gè)很容易被忽視,又偶爾會(huì)突然蹦出來(lái),給我們配置服務(wù)器造成困擾的權(quán)限管理問(wèn)題。
1、太寬的權(quán)限
有些服務(wù)對(duì)權(quán)限的要求會(huì)是一個(gè)區(qū)間,小了不行,大了也不行。如果這個(gè)文件被賦予的權(quán)限不夠,那么肯定不能使用;但是,如果這個(gè)文件被賦予的權(quán)限太多了,同樣不能正常使用。
舉例:
問(wèn)題現(xiàn)象:test帳號(hào)使用key無(wú)法登錄某ssh服務(wù)器,而同機(jī)器下的test2帳號(hào)卻可以登錄。
查看文件權(quán)限:
test@client:~$ls-l~/.ssh/
-rw-------1testtest 16752010-03-2515:15id_rsa
查看了客戶(hù)端及服務(wù)器端的.ssh目錄下的公鑰與私鑰權(quán)限,可以看出,并沒(méi)有問(wèn)題。
私鑰必須是600權(quán)限,而公鑰至少是644或者更嚴(yán)格的權(quán)限,這都符合,但依然無(wú)法登錄。
test@server:~$ls-la~|grep-w.ssh
drwxr-xr-x2testtest4.0K12-2316:59.ssh
查看了服務(wù)器端的.ssh目錄權(quán)限,是755,也是沒(méi)問(wèn)題的,ssh服務(wù)器要求在使用key登錄時(shí).ssh目錄的權(quán)限必須是其他用戶(hù)不可寫(xiě)。
一開(kāi)始實(shí)在想不明為啥test2帳號(hào)使用key可以登錄,test帳號(hào)使用key無(wú)法登錄,ssh_config和sshd_config。
在檢查了多遍后確實(shí)沒(méi)有問(wèn)題,最后在服務(wù)器端對(duì)比兩個(gè)帳號(hào)的不同時(shí),發(fā)現(xiàn)了可疑的地方。
$ls-l/home/
drwxrwxrwx 3testtest4096 2009-12-31 17:31test
drwxr-xr-x 6 test2 test2 4096 2010-03-23 15:59test2
兩個(gè)帳號(hào)的home目錄權(quán)限不同,test帳號(hào)是777,test2帳號(hào)是755,會(huì)不會(huì)是這里不同導(dǎo)致的?在服務(wù)器端把test目錄修改成755后,解決問(wèn)題。
原因解釋?zhuān)?/p>
ssh服務(wù)器的key方式登錄對(duì)權(quán)限要求嚴(yán)格。對(duì)于客戶(hù)端:私鑰必須為600權(quán)限或者更嚴(yán)格權(quán)限(400),一旦其他用戶(hù)可讀,私鑰就不起作用(如640),表現(xiàn)為系統(tǒng)認(rèn)為不存在私鑰。
對(duì)于服務(wù)器端:要求必須公鑰其他用戶(hù)不可寫(xiě),一旦其他用戶(hù)可寫(xiě)(如660),就無(wú)法用key登錄,表現(xiàn)為:Permission denied(publickey)。
同時(shí)要求.ssh目錄其他用戶(hù)不可寫(xiě),一旦其他用戶(hù)可寫(xiě)(如770),就無(wú)法使用key登錄,表現(xiàn)為:Permission denied(publickey)。
不僅.ssh目錄,更上層的目錄的權(quán)限同樣會(huì)有影響。
home中用戶(hù)目錄的可寫(xiě),表示其他用戶(hù)對(duì).ssh子目錄也有改寫(xiě)的權(quán)限(刪除或重命令),也就導(dǎo)致ssh判斷.ssh為其他用戶(hù)可寫(xiě),拒絕使用key登錄。
2、悄悄啟動(dòng)的selinux
如果你配置某項(xiàng)服務(wù),但是不論怎么定義配置文件,有些端口始終不能打開(kāi),或者文件無(wú)法訪問(wèn)到,那么這時(shí)你要小心是selinux在搗鬼。
舉例:
問(wèn)題現(xiàn)象:配置apache上的目錄可以訪問(wèn),卻始終提示你沒(méi)有權(quán)限。
apache上的配置:
Alias/hello.html/web/hello.html
<Directory/web>
Order deny,allow
Allow from all
</Directory>
怎么查都沒(méi)有問(wèn)題,文件權(quán)限也對(duì),這時(shí)可以考慮查一下selinux的權(quán)限。
#ls-Z/web/
-rw-r--r--.root root unconfined_u:object_r:admin_home_t:s0hello.html
原來(lái)/web目錄不能被apache內(nèi)建的用戶(hù)訪問(wèn)。
原因解釋?zhuān)?/p>
默認(rèn)情況下,selinux限制了apache可以訪問(wèn)的目錄,默認(rèn)僅能在/var/www/下面讀寫(xiě)文件。這也難怪,我們只配置apache和文件權(quán)限沒(méi)有任何作用了。
要想實(shí)現(xiàn)對(duì)/web/目錄下的文件讀取,必須修改selinux的配置。
其實(shí)不止是文件權(quán)限,包括服務(wù)可以使用的端口、消息接口等,selinux都有默認(rèn)限制。如果你配置服務(wù)遇到莫名其妙的問(wèn)題,看一下selinux吧