簡體   English   中英

在運行Apache2 + userdir的Ubuntu服務器14.04上保護$ HOME和public_html安全

[英]Securing $HOME and public_html on Ubuntu server 14.04 running Apache2 + userdir

我在Ubuntu Server 14.04上運行Apache2 + userdir 用戶已根據AD進行身份驗證,並可以通過SSH成功​​登錄此服務器。 每個用戶$HOME具有700權限,以禁止用戶更改和讀取其他用戶文件。

目錄/home/public_html由Apache( www-data:www-data )擁有,並具有775權限,因此每個用戶( www-data組的成員)都可以在/home/public_html其用戶名創建自己的子目錄,並創建他/她的$HOME符號鏈接。 這是用戶名為jdoe43的示例用戶的示例:

  • /home/Domain/jdoe43是$ HOME目錄(具有權限700)
  • /home/public_html/jdoe43是用戶jdoe43public_html目錄,該目錄符號鏈接到/home/Domain/jdoe43/public_html

UserDir指令設置為/home/public_html userdir.conf的其余部分默認為Ubuntu安裝,下面列出以供參考:

<IfModule mod_userdir.c>
   UserDir /home/public_html
   UserDir disabled root
   <Directory /home/public_html/*>
      AllowOverride FileInfo AuthConfig Limit Indexes
      Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
      <Limit GET POST OPTIONS>
         Require all granted
      </Limit>
      <LimitExcept GET POST OPTIONS>
         Require all denied
      </LimitExcept>
   </Directory>
</IfModule>

我期待找到適當的權限集以允許

  • Apache進程訪問/home/public_html/*
  • 用戶可以完全控制自己的public_html目錄

並同時禁止

  • 用戶查看/修改另一個用戶的$ HOME目錄的內容
  • 用戶可以查看/修改位於/home/public_html/的另一個用戶的public_html目錄的內容

我嘗試使用不同的權限集進行的所有操作最終都導致了Apache無法訪問用戶的public_html或用戶至少具有讀取其他用戶的$HOMEpublic_html訪問權限。

我發現了幾篇建議使用selinux並配置文件系統以通過權限拒絕對其他用戶目錄的訪問的帖子(就像我通過將$HOME設置為700來對$HOME所做的那樣),並同時授予了 Apache進程(通過selinux )訪問/home/public_html及其所有子目錄。 我還找到了一些資源,指出在Ubuntu的最新版本中已替換了selinux以便使用apparmor ,因此,由於我對該技術的經驗有限,因此決定推遲對其實現的任何調整。

任何建議/建議都受到高度贊賞。 謝謝。

可能會有一個selinux布爾值,使您可以相對輕松地進行此類操作。

ubuntu Wiki將您帶到debian SELinux頁面,該頁面確認它們使用與其他發行版相同的引用(當然)。 我剛剛檢查了針對Apache的策略,並且布爾值在那里。 如果您已經擁有啟用selinux的ubuntu,則可以輕松地檢查是否通過以下方式啟用了布爾值

getsebool httpd_enable_homedirs

並檢查布爾值是true還是false(默認為false)。

如圖所示這里 ,使的UserDir后,您需要啟用布爾

setsebool -P httpd_enable_homedirs true

並為每個用戶重新標記目錄

chcon -R -t httpd_sys_content_t /home/testuser/public_html

請注意,public_html目錄上的Unix權限仍然是755或用戶/組設置所需的任何權限。

chown testuser:testuser /home/testuser/public_html
chmod 755 /home/testuser/public_html

如果您希望采用SELinux的方式,那是您需要做的。 我對AppArmor和其他替代產品知之甚少,但是正如您所說的,Ubuntu Wiki對selinux的支持並不十分清楚。

如果您有空閑時間,建議您在測試VM上試用一下,看看它如何進行。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM