2017-06-09 89 views
0

我正在與一個公共訪問控制網站並行工作。目前,所有的用戶訪問和目錄密碼設置都在cPanel中執行,但cPanel對於某些用戶有點混亂。但是我們需要在受限訪問的網站上修改可以訪問它的授權人員列表(以及網站的其他部分)。需要模擬cPanel的用戶訪問/目錄密碼

所以我試圖在受限制的訪問站點上設置一個PHP腳本來做類似於cPanel的事情,以便能夠編輯實際的passwd文件。然而,我嘗試過的一切都沒有奏效。我們的Web服務器是LiteSpeed而不是apache(由於共享主機設置,無法更改此設置)。它使用Web訪問文件夾之外的文件夾中的passwd文件,由.htaccess文件引用。查看了列出的現有訪問,我可以看到它似乎沒有使用apache文檔中所述的鹽醃MD5哈希值:存儲的哈希密碼與我所期望的不同(例如,鹽明顯超過2個字符),出於安全原因,我不願意在我的代碼中嵌入特定的密碼哈希算法。我試圖使用通過exec或shell_exec通常提供的Apache的htpasswd工具,但它不是安裝或不可訪問的(我已經嘗試了幾種不同的路徑 - 即使file_exists檢查它的存在,在所有情況下都返回false,所以幾乎沒有任何文件改變了!)。

我花了幾天的時間,通過不同的文檔集進行各種搜索,以查看LiteSpeed和/或cPanel的功能,但大多數情況下,我的搜索都會顯示cPanel登錄密碼,而不是用戶訪問控制密碼。我試過尋找一些cPanel源代碼,但沒有找到任何運氣。

如果有人對某些源代碼有更直接的參考,或者在文檔中介紹瞭如何在LiteSpeed中運行密碼添加/更新/刪除功能,那就太棒了。即使只是以某種方式更直接地觸發cPanel功能也會很有用(我知道它有一個API,但它的路徑被鎖定在我的主機上)。

編輯:史蒂夫評論後,我去檢查了幾件事情。無論腳本的目錄位置如何,我的腳本都可以看到passwd文件。 passwd文件的權限爲644,正如我所期望的那樣,我預計具有寫入權限的「用戶」是我用來登錄到cPanel的用戶,希望這不是服務器運行時的用戶名。這帶來了額外的困難。

編輯#2:我做了一個額外的測試,在其中創建了一個臨時密碼保護的子目錄,然後直接從PHP腳本添加一個用戶(複製粘貼其中一個現有行,但更改了用戶名)。這工作得很好,新用戶被添加,並且cPanel甚至看到了變化。所以權限不是問題。

編輯#3:我已經做了一些玩,並得到一個字符串從crypt輸出,大部分匹配passwd文件中的內容(我會在重置頁面上添加一條警告消息,以確保最新的算法是用過的)。然而,crypt所尋找的鹽是$ 1 $ < 8-char-rand-string> $,而文件中的內容是$ apr1 $ < 8-char-rand-string> $。在鹽中添加「apr」會導致加密失敗:-(。

+1

Cpanel很大程度上使用linux權限。您無法在共享主機上執行此操作。你需要真正使用這些類型的權限嗎?如果網站用戶只能通過網站訪問服務器(如通常那樣),那麼您只需在php/sql中運行您自己的訪問控制層即可。 – Steve

+0

@Steve,只是要清楚,我不想訪問cPanel或更改cPanel權限。我想爲public_html下的目錄設置訪問權限,並且web服務器軟件(如apache和litespeed)內置此類機制。如果可能,我想避免構建或使用自己的訪問控制,以限制維護。對cPanel的引用是,你可以在cPanel中做到這一點,我想要做的是相同或重新使用它的cPanel。 – greenbutterfly

回答

0

For futur作爲參考,我的編輯#3是解決方案的95%,現在我已經設法實施並運行。我終於意識到,我只需要放下htpasswd插入鹽的算法選擇的「apr」,然後在'$ 1 $'之前和'$'之後使用salt。把它和用戶名一起寫入passwd文件讓我能夠訪問和工作。該頁面包含對未來訪問者頁面的警告,以確保算法在需要時進行更新。 substr(str_replace('+','。',base64_encode(openssl_random_pseudo_bytes(12))),0,8)。'$')加密的代碼是:crypt($ password,'$ 1 $'

我希望我的密碼足夠安全。我看過太多的代碼片斷,其中鹽是使用mt_rand或等價物生成的...(在此處插入不寒而慄)

編輯:回答了這個問題後,我發現cPanel API PHP文件不是自動的安裝。這是一個額外的你需要下載,請參閱https://github.com/CpanelInc/xmlapi-php。所以我現在正在玩這個遊戲,並且可能會清理我所做的代碼......但是由於歷史原因或者希望它可以幫助其他人,將它留在這個答案中。

0

您可以添加拒絕/允許IP。htaccess的目錄,

爲了否認,讓

拒絕來自所有

允許從(您-IP)

或添加一些密碼保護規則在特定目錄的.htaccess。

基礎進行AuthType

AuthName指令 「密碼保護區」

的AuthUserFile /path/to/.htpasswd

需要有效的用戶

類似:http://www.htaccesstools.com/articles/password-protection/

+0

基礎架構已經存在,這些目錄已經被密碼保護。我需要像cPanel管理它一樣編輯密碼文件。對不起,如果這不是從我原來的帖子100%清楚,我會去編輯澄清。 – greenbutterfly